前端(七)

一JavaScript认识

      JavaScript是弱类型语言,弱类型不是没有类型,而是类型之间能够自动去转换,固然你可能会说java数值型也能够自动转换,为何java就是强类型,而js就是弱类型。js能够不一样类型之间进行转换,它的转换能够是须要的时候自动转换或者开发者主动转换。html

    html文档解析顺序是从上到下,JavaScript代码做为经过标签嵌入或引入的脚本,也是HTML文档的组成部分。所以,JavaScript代码载入顺序根据脚本标签<script>的出现顺序来肯定的。而且浏览器在加载js时有个特色,那就是载入以后当即就会执行,js的载入会阻塞DOC的创建java

  固然这也会带来问题:因为JavaScript一般须要操做DOM,因此,通常把JavaScript放在</body>前或者文档结尾处引入。若须要在<head>中引入,能够经过修改window.onload或者document.ready事件,强制等到DOM加载完成后再执行相关函数。segmentfault

而且JavaScript执行也是有特殊的顺序:先处理声明后执行。好比代码:浏览器

var a = 1;       
function aa() {    
}复制代码

会先处理声明:bash

var a = undefined;函数

var aa = {};spa

执行:code

var a = 1;htm

方法调用时候才执行。对象

关于JS阻塞DOM创建能够查看文章segmentfault.com/a/119000001…

二js数据类型

在JS中一共有六种数据类型

  • 基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。

  • 引用数据类型(引用类型):Object 对象。

数据类型之间最大的区别

  • 基本数据类型:参数赋值的时候,传数值。

  • 引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。

tips:不是数字的数字类型NaN。

         null专门用来表示空对象。类型是object。

         undefined用来表示一个未定义的变量,类型是undefined。

三数据之间转换

其余类型转字符串:

  •  变量+"abc"
  • 变量.toString()
  • String(变量)

其余类型转数字:

  • Number(变量)
  • parseInt(变量)

特殊状况:

若是字符串中有非数字的内容,则转换为NaN;

若是字符串是一个空串或者是一个全是空格的字符串,则转换为0;

若是是true 转成 1,若是是false转换成0;

若是是null转换成0;

若是是undefined转换层NaN;

tips:parseInt(变量)返回整数,还有parseFloat(变量)返回浮动数

其余类型转Boolean:

若是是字符串转boolean:除了空字符串,其他的所有转换成true;

若是是数字转boolean:除了0和NaN,其他的所有转换成true;

若是是null转boolean:转换成false;

若是是undefined转boolean:转换成false;

若是是对象转boolean;转换成true;

tips:浏览器会根据当前的类型自动去转换成须要的类型,好比 if(object),他会把他转换成boolean再去执行,而不是像强类型报错。

四运算符

运算符都是会返回结果的。运算符能够去分类记忆:算数运算符、自增运算符、逻辑运算符、赋值运算符、关系运算符、三元运算符(条件运算符)

算数运算符规则:

非number与数字进行计算时候都会先转换成数字,在进行运算(任何数和NaN计算结果都是NaN),其他和java同样。

自增运算符规则:

和java同样,再也不赘述。

逻辑运算符规则:

若是对非布尔值进行逻辑运算,则会先将其转换为布尔值,而后再操做。其他的和java同样。

赋值运算符规则:

和java同样,再也不赘述。

关系运算符规则:

  • 如对于非数值进行比较时,会将其转换为数字而后再比较(任何数和NaN比较都是false)。
  • ==会自动类型转换后在比较,而===不会类型转换而比较。
  • NaN不等于任何值,包括它自己,可用isNaN(值)去判断。

三元运算符:

若是条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值而后再运算,其他的和java同样。

五控制语句

if语句、switch语句、for语句、while语句语法和java同样,不在赘述。

相关文章
相关标签/搜索