数据类型转换

1.字符串转换为数字:

    字符串与1相乘即可。

2.其它类型转换为字符串也有一种偷懒的方法:

   只需要将其与空字符串连接即可。

3.如果在一个非布尔值上执行逻辑运算,该值会在计算期间被转换为布尔值:

   var b = "one";

   !b;

  false

4.空字符串

   null

   undefined

   NaN

   数字0

   布尔值false

  以上都为false;

5.操作符的优先级:

   乘法运算的优先级高于加法。

   逻辑运算符!的优先级最高。先&&后||

    最佳方法:尽量使用括号,而不是依靠操作符优先级来设定代码的执行顺序,这样我们的代码才能有更好的可读性。

6.惰性求值:

   var b = 5;

   true || (b=6)

   此时输出:true;

   此时b的值 还是  5;

  解析:其中任何一个操作数为true,该表达式的结果就为true.因而当第一个操作数被求值之后,无论后面的值是什么,结果都已经被确定了。于是我们可以允许JavaScript引擎偷个懒。在不影响最终结果的情况下省略一些不必要的求值操作。

 var b =5 ;

 (b=6) || true

 此时输出:6

 此时b的值是 6;

 解析:如果JavaScript引擎在一个逻辑表达式中遇到一个非布尔类型的操作数,那么该操作数的值 就会成为该表达式的所返回的结果。

7.比较运算符

  ==  相等运算符 

  exp: 1 == '1'    true

         1 == '2'    false

         1 == 1     true

  当两个操作数相等时返回true.在该操作符执行之前,两边的操作数会自动转换为相同类型

  ===  等价运算符

  exp: 1 === '1'  false

         1 === 1   true

         1 === '2'  false

  当且仅当两个操作符的值和类型都相同时返回true.这种比较往往更可靠,因为其幕后不存在任何开式的类   型转换

  != 不等运算符

  exp: 1 != '1'    false

         1 != '2'    true

  当两个操作数不相等时返回true(存在类型转换)

 !== 不等价运算符

 此操作内不允许类型转换,且当两个操作数值或类型不相同时返回true

 exp: 1 !== 1 false

        1 !== '1' true

NaN 不等于任何东西包括它自己。  NaN == NaN   false

8.undefined 与 null

  当我们试图访问某个未定义或未被赋值的变量时,会得到一个undefined值。JavaScript会自动将声明但未初始化的变量设为undefined;

  而null就不一样了,它不能通过JavaScript自动给变量赋值,只能通过我们的代码来完成。

  例:var somevar = null; 

        somevar    //null

        typeof somevar   //object

posted @ 2016-12-06 19:11  丰云²º¹²  阅读(186)  评论(0编辑  收藏  举报