• 微信:
  • hai764003
  • QQ:
  • 511211014
  • E-mail:
  • jaquery@163.com

案例总数51

访问总数312353

收藏总数310884

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()函数,按照这个函数的转化规则转化为 相应的布尔值。


 

小海哥推荐你看: 博客园  php教程分享网站  phpmywind  脚本之家