自动调用函数前的分号?

在 JavaScript 中,我们经常看到一些代码在函数调用前使用了分号(;)这样的语句结束符,例如:

----- ---- - --------
------------ -
  ------------------- - - ---- - -----
-----

这里使用分号是为了避免和前面代码的语法产生冲突,例如下面的代码:

----- ------------ - ---------- -
  -- ---
-

-- -------------------------------
-- ----------------------
----- ------ - --------------

这里,由于 const someFunction = function() { ... } 被认为是一个表达式,因此 () 不再是函数调用运算符,而变成了无效的语法。加上分号可以避免这种情况的发生。

然而,在某些情况下,JavaScript 解析器会自动在语句结尾处插入分号,这种行为被称为“自动分号插入”(Automatic Semicolon Insertion,ASI)。这意味着,即使你忘记在函数调用前加分号,JavaScript 也可能会正确解析代码。但是,这种依赖于 ASI 的做法是不可靠的,并且容易导致错误或者难以调试的问题。

为了避免这种情况,最好的做法是一直在函数调用前加上分号。这样可以保证代码的可靠性和清晰度,同时也符合 JavaScript 代码风格指南中的推荐做法。

下面是一个示例代码,在不加分号时出现错误,在加分号时正常运行:

-- -------------- --- ----------
----- ------------ - ---------- -
  ------
  -
    ---- -----
  -
-

----- ------- - --------------
-------------------- -- ---------

-- ----------------
----- --------------- - ---------- -
  ------ -
    ---- -----
  -
--

----- ------- - ------------------
-------------------- -- - ---- ----- -

总之,在编写 JavaScript 代码时,建议在函数调用前始终使用分号,以避免潜在的错误和歧义。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/11220