javascript能干什么返回列表
上传时间:2015-02-02 内容关键字:
JavaScript引擎将空对象视为一个空的代码块,加以忽略。因此,整个表达式就变成“+ []”,等于对空数组求正值,因此结果就是0。转化过程如下:
+ []
// Number([])
// Number([].toString())
// Number("")
// 0
如果JavaScript不把前面的空对象视为代码块,则结果为字符串“[object Object]”。
({}) + []
// "[object Object]"
(4)空对象 + 空对象
{} + {}
// NaN
JavaScript同样将第一个空对象视为一个空代码块,整个表达式就变成“+ {}”。这时,后一个空对象的ValueOf方法得到本身,再调用toSting方法,得到字符串“[object Object]”,然后再将这个字符串转成数值,得到NaN。所以,最后的结果就是NaN。转化过程如下:
+ {}
// Number({})
// Number({}.toString())
// Number("[object Object]")
如果,第一个空对象不被JavaScript视为空代码块,就会得到“[object Object][object Object]”的结果。
({}) + {}
// "[object Object][object Object]"
({} + {})
// "[object Object][object Object]"
console.log({} + {})
// "[object Object][object Object]"
var a = {} + {};
a
// "[object Object][object Object]"
需要指出的是,对于第三和第四种情况,Node.js的运行结果不同于浏览器环境。
{} + {}
// "[object Object][object Object]"
{} + []
// "[object Object]"
可以看到,Node.js没有把第一个空对象视为代码块。原因是Node.js的命令行环境,内部执行机制大概是下面的样子:
eval.call(this,"(function(){return {} + {}}).call(this)")
Node.js把命令行输入都放在eval中执行,所以不会把起首的大括号理解为空代码块加以忽略。
三、语句类:
if(表达式){
code....
}else{
code.....
}
三元运算: var 变量 = 表达式 ? 真值 : 假值
while(表达式){}
if语句,三元表达式和while里面的表达式会隐式的调用Boolean()函数,按照这个函数的转化规则转化为 相应的布尔值。
- 上一篇:已经没有了
- 下一篇:javascript兼容性总汇