【问题标题】:when should and when should i not put semi colon after function in javascript [duplicate]我什么时候应该以及什么时候不应该在javascript中的函数后加上分号[重复]
【发布时间】:2026-01-02 02:00:02
【问题描述】:

我能问一下为什么有时我们创建一个函数,我们最终会得到一个分号,而有时却没有

function test(){

};

function test(){

}

【问题讨论】:

标签: javascript


【解决方案1】:

取决于你如何声明函数。

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

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

【讨论】:

  • 在这种情况下也不需要第一个分号。
  • 这不是必需的,但您应该始终在(函数)表达式之后放置分号。
  • 我知道这没有必要,但我总是尝试教人们最好的做法。如果他放弃分号,他迟早会遇到 SyntaxError。因为它无关紧要,所以最好以正确的方式来学习它。事实上,如果你“学习”这两种方式,如果你确实遇到了 SyntaxError,实际上会更难调试,因为你已经知道两者都是正确的。
【解决方案2】:

检查压缩http://javascriptcompressor.com/中的以下代码

var test  = function (){

}

a = 10;

就像 var test=function(){}a=10; ,也就是 SyntaxError

这样的声明函数不会有问题

function test(){

}

压缩码function test(){}a=10;是有效的一个

【讨论】:

  • 可以说这是压缩机的问题,而不是程序员的问题。压缩器不应使有效代码无效。
【解决方案3】:

要将答案置于上下文中,您需要处理两种情况。

  1. 函数声明 - 显式声明一个函数:

    function someFunction(){
      // some code
    }
    
  2. 函数表达式 - 将函数声明为表达式:

    var someFunction = function(){
      // some code
    };
    

注意第二种情况只需要分号。当涉及到函数提升的概念时,区别很重要。

函数提升基本上意味着你必须考虑你希望你的函数在什么时候在运行时是“可见的”(执行上下文)。案例 1 使该函数在脚本中的任何位置都可见,这意味着无论您在脚本中的何处声明了该函数,您始终可以调用它。该函数在执行上下文中被提升到更高的位置。另一方面,情况 2 不会发生这种情况,因此您只能在声明它的行下方调用该函数。

【讨论】: