Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 - Fatal编程技术网

在javascript中,何时应该和何时不应该在函数后加分号

在javascript中,何时应该和何时不应该在函数后加分号,javascript,Javascript,我能问一下,为什么有时我们创建一个函数,结果是一个分号,而有时却没有 function test(){ }; function test(){ } 取决于您如何声明函数 var myfunc = function() {}; // use semicolon function myfunc() {} // don't use semicolon 选中压缩中的以下代码 它类似于var test=function(){}a=10,即SyntaxError 对于像这样的declare函数来

我能问一下,为什么有时我们创建一个函数,结果是一个分号,而有时却没有

function test(){

};

function test(){

}

取决于您如何声明函数

var myfunc = function() {}; // use semicolon

function myfunc() {} // don't use semicolon

选中压缩中的以下代码

它类似于
var test=function(){}a=10,即
SyntaxError

对于像这样的declare函数来说,这不会是一个问题

function test(){

}

压缩代码
函数测试(){}a=10是有效的一个

要将答案上下文化,您需要处理两个场景

  • 函数声明-显式声明函数,因此:

    function someFunction(){
      // some code
    }
    
  • 函数表达式-将函数声明为表达式,因此:

    var someFunction = function(){
      // some code
    };
    
  • 注意第二种情况下只需要分号。当涉及到功能提升的概念时,差异很重要


    函数提升基本上意味着您必须考虑在运行时希望函数“可见”(执行上下文)的时间点。案例1使函数在脚本中的任何位置都可见,这意味着无论在脚本中声明函数的位置如何,都可以调用它。函数在执行上下文中被提升到更高的位置。另一方面,情况2并非如此,因此您只能在声明该函数的行下方调用该函数。

    在这种情况下,第一个分号也不是必需的。它不是必需的,但您应该始终在(函数)表达式之后加上分号。我知道这是不必要的,但我总是试图教人们最好的做法。如果他放弃分号,迟早会出现语法错误。因为它无关紧要,所以最好以正确的方式学习。事实上,如果你从两个方面都“学习”,那么如果你真的遇到了语法错误,那么调试就更难了,因为你已经知道两者都是对的。可以说这是压缩器的错,而不是程序员的错。压缩器不应使有效代码无效。您可以在此stackoverflow中找到答案:
    var someFunction = function(){
      // some code
    };