猿问

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

(function(){

  var  x = c =  b = {a:1}

 })()

console.log(x) // err: x is not defined

console.log(c, b) // {a:1}, {a:1}

这么诡异的行为是因为赋值语句的毛病吗,b和c都被放到全局去了。

求真相!!


繁星淼淼
浏览 623回答 2
2回答

慕工程0101907

相当于(function(){  var  x ;   c =  {a:1};   b = {a:1}; })()不写var相当于全局

慕姐4208626

因为你没在IIFE这个作用域里定义b和c,那么查询时会去上层作用域找变量,如果一直找到全局作用域里都没有,那么他们默认会被赋值给window对象,就像下面window.b = window.c = {a:1}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答