1:以下代码的输出结果是? 为什么
- a声明为1,a+++a可以分解为(a++)+a,a++优先级比
+
高,a++先赋值再加入运算,a++
=== 1。a=2因此1+2=3
2:以下代码的输出结果是? 为什么
- a+++b=(a++)+b,a++先赋值为1,然后自加。1+3=4
3:void 0
和 undefined
在使用场景上有什么区别?
-
undefined
是一个全局属性,表示未定义或者定义了没赋值void 0
是一个一元运算符,输入任何参数都会返回undefined -
undefined
在低版本IE中能被重写,在ES5中是全局对象中的一个只读属性,不能被重写。但是在局部作用域中,可以被重写。非严格模式下,undefuned
可以重写,严格模式不能重写。 - 用
void 0
是为了防止undefined
被重写而出现判断不准确的情况。
4
优先级是
typeof
>+
>>
>||
.typeof a
结果是number,||
左侧结果是number2
,右侧是true。number2转换成boolean是true,直接返回左边的值number2
优先级:
==
>&&
>=
- var data = true && console.log('bb')
- 与运算符里,左边为真,返回右边的值。
console.log
作为函数是没有返回值的,没有返回值则默认返回undefined。 - 结果是undefined。
优先级是
||
>=
,先计算0||undefined,0转换为false,结果是undefined。
优先级:
"()"
>+
>=
(!"world", !!"from here!!")
先算括号里的,返回逗号后的值,!!转化为true。true+true转换成1+1 ,最后结论是2