Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从一个括号开始的生活括号不起作用_Javascript_Iife - Fatal编程技术网

Javascript 从一个括号开始的生活括号不起作用

Javascript 从一个括号开始的生活括号不起作用,javascript,iife,Javascript,Iife,我正在研究javascript中的IIFE,据我所知,这只是关于如何编写IIFE的一种风格选择,下面两种方法都应该有效 var sum = 0 (function test(n){ sum += n }(1)); console.log(sum); 此日志记录:未捕获类型错误:0不是函数 或者,当我以开始生活时它可以工作 var sum = 0 !function test(n){ sum += n }(2); console.log(su

我正在研究javascript中的IIFE,据我所知,这只是关于如何编写IIFE的一种风格选择,下面两种方法都应该有效

  var sum = 0
  (function test(n){
      sum += n
  }(1));
  console.log(sum);
此日志记录:
未捕获类型错误:0不是函数

或者,当我以
开始生活时它可以工作

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

  console.log(sum) //logs 2

正如你所看到的,当我用
开始生活时它按预期工作。我现在很困惑,因为我认为这只是一个风格选择,关于你是如何实现IIFE的。有人能解释一下吗?

这与您只使用一个括号无关,而是第一行末尾缺少分号

在不断线的情况下查看,以查看问题

var sum = 0(function test(n){
  sum += n
}(1));
如果遵循无分号的方法,则需要保护以
[
带分号)开头的换行符

例如:

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

一个简单的解决办法是,如果你不想在每一行都加上分号,就在你的生命之前加一个分号。啊,明白了!它现在可以工作了!好的,就像我应该做的那样,并在适当的时候使用
。。不过,我想知道为什么它与
0!function(){}
不会像调用函数一样尝试调用
0