JavaScript隐式类型转换

*爱你&永不变心* 提交于 2019-12-05 02:43:01

1.a + number类型,a是字符,把number变成字符再相加;

                                a不是,  把a变成number再相加。

  常见调用Number()的隐式类型转换有++ / --(+ / - 一元运算符)、- * / %;调用Boolean的有! ;

  ==要把左右两边转换为同一数据类型再比较,===和!==不发生类型转换。

  eg: (1)var str = false + 1;

                document.write(str);

          false不是字符,Number(false)=0, 0+1=1,所以str=1。

       (2)if(11 + '11'*2 == 33){
                         document.write('基础扎实');
                }

 *优先级大于+,’11’*2 <==> Number(‘11’)*2<==>11*2=22,所以11+’11’*2 = 33, 表达式返回true,

执行if里面的操作。

    (3)!!' ' + !!'' - !!false || document.write('绕不绕,哈哈哈');

!操作调用隐式类型转换Boolean,字符串是空返回false,否则返回true,所以||左边即true + false - false,

即true,||遇到真就停,不看后面,所以不执行document。

       4)if(typeof(a) && -true + (+undefined) + ''){
                          document.write('基础扎实');
              }这里a未定义,所以typeof(a)返回字符串’undefined’,Boolean(’undefined’)返回true。

右边是-1 + NaN + ''即字符串’-1NaN ’Boolean()为true,所以&&返回true,执行if里面的操作。

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!