IIFE从一个括号括号开始不起作用

时间:2016-03-17 20:20:11

标签: javascript iife

我正在用javascript查看IIFE,据我所知,这只是一种关于你如何编写IIFE的风格选择,下面的两种方法都应该有用。

  var sum = 0
  (function test(n){
      sum += n
  }(1));
  console.log(sum);

此日志:Uncaught TypeError: 0 is not a function

或者,当我用!开始IIFE时,它可以正常工作

var sum = 0
  !function test(n){
      sum += n
  }(2);

  console.log(sum) //logs 2

正如您所看到的,当我使用!开始使用IIFE时,它可以按预期工作。我现在非常困惑,因为我认为这只是你如何实施IIFE的风格选择。谁能解释一下?

1 个答案:

答案 0 :(得分:1)

这与你只使用一个括号的事实无关,它是在第一行末尾缺少分号。

在没有换行符的情况下查看它以查看问题。

var sum = 0(function test(n){
  sum += n
}(1));

如果您遵循无分号方法,那么您需要使用分号来保护以[(开头的换行符。

例如:

var sum = 0
;(function test(n){
  sum += n
}(1))