这个JS题目是函数声明提升导致的结果吗?
var a = b = null;
(function a(c){
console.log(a) //这里是function
return a =c;
})(1)
console.log(a) //这里是null
但是如果换一种写法:
var a = b = null;
(function b(c){
console.log(a) //这里是null
return a =c;
})(1)
console.log(a) //这里是1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不是,是因为函数内的局部作用域。
第一个例子
第二个例子:
另外补充一个点:
不推荐这样的定义法,因为这一句实际等价于:
b
实际上没用var
限定,成了隐式的全局变量了。这个就是作用域的问题吧,第一种情况a可以获取到,就是函数本身,第二种情况找不到a,就会去外层作用域寻找。