关于&&操作符:

关于&&操作符:

问题:

“只要有NaN就返回NaN”,那为什么“document.write(0&&NaN)”返回的是0呢?


我觉得&&操作符的原则应该是这样子的:

若操作数中含有非bool值

1. 第一个为true或隐式转换为true:

1.a) 其他中含有null、undefined、NaN:这三个谁在前面返回谁。

1.b) 其他中无这三个:返回最后一个操作数。

2. 第一个为false或隐式转换为false:

2.a) 第一个为false:返回false。

2.b) 第一个为非bool但隐式转换为false:返回第一个操作数。

3. 第一个为非bool且不能隐式转换:

此时第一个只能为null、undefined、NaN。所以返回第一个操作数。



不知道这样总结是否正确?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

所有的这些转换的规律必须先遵循这两点

http://img1.sycdn.imooc.com//climg/5a166c7400019f7e07600411.jpg

如果第一个操作数隐式类型转换后为false,那么就不会再往后执行第二个操作数。

document.write(0&&NaN)这个代码中,0隐式转换后为false,所以不再往后判断,返回的就是0。

祝学习愉快!

  • 机长与茶 提问者 #1
    但是document.write("immoc"&&NaN&&undefined)返回的是NaN,并不是最后一个undefined,为什么?
    2017-11-23 14:45:27
小丸子爱吃菜 2017-11-23 14:48:24

字符串隐式转换后是true,那么继续往后执行,执行到NaN时,就返回NaN,就不会再往后执行了

&&符号只要遇到false或者NaN这些,就不会再往后执行了。


提问者 机长与茶 2017-11-23 14:44:58

但是document.write("immoc"&&NaN&&undefined)返回的是NaN,并不是最后一个undefined,为什么?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师