即时执行匿名函数调用全局作用域函数报错
如题
var a = 10;
function foo() {
console.log(a)
}
foo()
(function () {
var a = 20
foo()
})()
(function (fn) {
var a = 30
fn()
})(foo)
直接复制上列代码到浏览器控制台执行会报错
这是为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这样就正常了.
前面的报错是把
foo() ()
当成foo()()
了,而foo()执行完并不是返回一个function,所以它报错'foo()不是一个function';顺便推荐一下这个 https://segmentfault.com/q/10...
个人建议,该加分号停顿的时候还是加一下吧(虽然有些地方是可以不加),最后压缩合并会帮你处理好分号取舍~(当然知道一下原理好点)
您真爱好省略分号,有些分号不能省略。