“`TypeError`:使用IIFE时抛出`[0,1]`不是函数”

问题描述 投票:1回答:2

这是代码

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]不是一个功能

javascript arrays function iife
2个回答
2
投票
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中的每个语句之后使用分号(;)总是好的做法。


1
投票

这是一个工作片段

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);
  })();
})();
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.