前端(七)

369 阅读4分钟

一JavaScript认识

      JavaScript是弱类型语言,弱类型不是没有类型,而是类型之间可以自动去转换,当然你可能会说java数值型也可以自动转换,为什么java就是强类型,而js就是弱类型。js可以不同类型之间进行转换,它的转换可以是需要的时候自动转换或者开发者主动转换。

    html文档解析顺序是从上到下,JavaScript代码作为通过标签嵌入或引入的脚本,也是HTML文档的组成部分。因此,JavaScript代码载入顺序根据脚本标签<script>的出现顺序来确定的。并且浏览器在加载js时有个特点,那就是载入之后立即就会执行,js的载入会阻塞DOC的建立

  当然这也会带来问题:由于JavaScript通常需要操作DOM,所以,一般把JavaScript放在</body>前或者文档结尾处引入。若需要在<head>中引入,可以通过修改window.onload或者document.ready事件,强制等到DOM加载完成后再执行相关函数。

并且JavaScript执行也是有特殊的顺序:先处理声明后执行。比如代码:

var a = 1;       
function aa() {    
}

会先处理声明:

var a = undefined;

var aa = {};

执行:

var a = 1;

方法调用时候才执行。

关于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一样,不在赘述。