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

请教一个立即执行函数中的参数赋值问题

请教一个立即执行函数中的参数赋值问题

繁星淼淼 2019-03-12 17:12:05
(function(){  var  x = c =  b = {a:1} })()console.log(x) // err: x is not definedconsole.log(c, b) // {a:1}, {a:1}这么诡异的行为是因为赋值语句的毛病吗,b和c都被放到全局去了。求真相!!
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

相当于


(function(){

  var  x ;

   c =  {a:1};

   b = {a:1};

 })()

不写var相当于全局


查看完整回答
反对 回复 2019-03-19
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

因为你没在IIFE这个作用域里定义b和c,那么查询时会去上层作用域找变量,如果一直找到全局作用域里都没有,那么他们默认会被赋值给window对象,就像下面

window.b = window.c = {a:1}


查看完整回答
反对 回复 2019-03-19
  • 2 回答
  • 0 关注
  • 622 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信