Javascript高级程序设计第三版-笔记

时间:2022-08-13 20:07:25

1、JS数值最大值最小值:

>Number.MIN_VALUE
<5e-324
>Number.MAX_VALUE
<1.7976931348623157e+308

  判断数值是不是有穷的,可以用isFinite()来判断

  坑:1、对浮点数进行高精度计算时,需要把小数变成整数再计算,因为JS中0.1+0.2=0.30000000000000004,可能会有误差。isFinite(0.1+0.2)//true。isFinite(0.1)//true。

2、NaN

  任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等,包括本身。isNaN()判断是否为NAN。isNaN(NaN)//true。isNaN("10")//false。isNaN("dusk")//false。0/0返回NaN。

3、数字转换

  

   Number()//   Number("") 0   Number("12a")  NaN

  ParseInt()//   ParseInt("") NaN   ParseInt("12a") 12

  ParseFloat()

4、toString()

  null 和 undefined 没有toString放啊。 var a = 10;a.toString("2")//1010   10转成2进制1010

  在不知道值是否为null or undefined的时候,可以用String()来转换为字符串。

5、位运算

  ~按位非 (数值取负后-1) 、& 按位与 、| 按位或 、<<左移 、 >>右移 、 >>>无符号右移 (可移动负数的符号位1)

6、!运算

  !NaN //true     !null //true    !"" //true    !undefined

7、 比较运算

  NaN和任何数值比,都是false

8、switch

  switch用的是全等操作符,不会发生类型转换(10不等于“10”)

9、块级作用域的坑     for循环结束后,i 没被销毁

    for(var i =  ; i <  ; i++){

    dosomething(i);

  }

  alert(i);//

 10、作用域链上的变量查询

  var a = ;

  function foo(){

    var a = ;

    return a;

  }

  alert(foo());// 2

  //优先使用局部变量,因查找作用域链是从本方法一致往上查找,直到查找到window的全局作用域。当找到后就会停止,所以在找到a=2时就停止了。如果想用a=1,必须window.a

11、数组

  

      a = [,,]

      b = a;

      a[] = ;

      alert()//a=>2,2,3    b=>2,2,3

  Concat
   a = [,,] b = a.concat() a[] = ;   alert()//a=>2,2,3 b=>1,2,3