为了账号安全,请及时绑定邮箱和手机立即绑定

Question

!function(){'use strict';var obj = {x:1,x:2};}();

为什么返回true?

正在回答

2 回答

取反是优先级非常高的运算符。当浏览器扫描到"!"后,会去运算之后的语句,从而达到函数自执行的效果,等同于:(function(){console.log(1);}());这样的自执行函数写法。

而函数是一定有返回值的,只是没有去获取他。若函数里没有写return,就会默认返回一个值:undefined,获取undefined,那么!function(){'use strict';var obj = {x:1,x:2};}(); 就是 !undefined 了,也就是true。

4 回复 有任何疑惑可以回复我~

因为这个是个自执行函数,没有返回值就会返回undefined,但是前面加了个!就是取反的意思,undefined取反就是true

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript深入浅出
  • 参与学习       281092    人
  • 解答问题       1054    个

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

进入课程
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号