如题
var a = 10;
function foo() {
console.log(a)
}
foo()
(function () {
var a = 20
foo()
})()
(function (fn) {
var a = 30
fn()
})(foo)
直接复制上列代码到浏览器控制台执行会报错
这是为什么?
如题
var a = 10;
function foo() {
console.log(a)
}
foo()
(function () {
var a = 20
foo()
})()
(function (fn) {
var a = 30
fn()
})(foo)
直接复制上列代码到浏览器控制台执行会报错
这是为什么?
您真爱好省略分号,有些分号不能省略。
var a = 10;
function foo() {
console.log(a)
}
foo();
(function() {
var a = 20
foo()
})();
(function(fn) {
var a = 30
fn()
})(foo);
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读
这样就正常了.
前面的报错是把
foo() ()
当成foo()()
了,而foo()执行完并不是返回一个function,所以它报错'foo()不是一个function';顺便推荐一下这个 https://segmentfault.com/q/10...
个人建议,该加分号停顿的时候还是加一下吧(虽然有些地方是可以不加),最后压缩合并会帮你处理好分号取舍~(当然知道一下原理好点)