这是代码
var numberArray = [0, 1]
(function() {
numberArray.push(2)
function nestedFunction() {
numberArray.push(3)
function anotherNestedFunction() {
numberArray.push(4)
}
console.log(numberArray)
}
})()
我期待numberArray
值[0,1,2,3,4]
,但它给出了这个错误:
TypeError
:[0,1]
不是一个功能
var numberArray = [0, 1]
(function() {
相当于
var numberArray = [0, 1] (function() {
这就是错误上升的地方。
要解决问题,请在数组声明之后放置;
,哪个JavaScript引擎会将该行视为单独的语句:
var numberArray = [0, 1];
(function() {
numberArray.push(2);
function nestedFunction() {
numberArray.push(3);
function anotherNestedFunction() {
numberArray.push(4);
}
anotherNestedFunction();
console.log(numberArray);
}
nestedFunction();
})();
要忽略所有这些意外问题,在JavaScript中的每个语句之后使用分号(;
)总是好的做法。
这是一个工作片段
const numberArray = [0, 1];
(function() {
numberArray.push(2);
(function nestedFunction() {
numberArray.push(3);
(function anotherNestedFunction() {
numberArray.push(4);
})();
console.log(numberArray);
})();
})();
如果你在;
之后删除了numberArray
,这就是你遇到问题的地方。您还必须使用IIFE与内部声明的functions
。
const numberArray = [0, 1]
(function() {
numberArray.push(2);
(function nestedFunction() {
numberArray.push(3);
(function anotherNestedFunction() {
numberArray.push(4);
})();
console.log(numberArray);
})();
})();