这是代码



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中的每个语句之后始终使用分号(;)始终是一个好习惯。

09-20 05:41