Javascript定义-然后调用语法

Javascript define-then-call syntax

本文关键字:调用 语法 然后 定义 Javascript      更新时间:2023-09-26

非常直接,所以问题是为什么

(function(){ console.log('a'); }()); // 'a'

(function(){ console.log('a'); })(); // 'a'

工作,但

function(){ console.log('a'); }() // SyntaxError: Unexpected token (

给出错误?这种行为背后的含义是什么?或者这些额外括号的目的是什么?

额外的括号将function转换为函数表达式而不是函数声明

只有一个函数表达式可以被立即调用,后面是()

对此没有明确的解释。JavaScript根本无法成功解析function(){ console.log('a'); }()。这也发生在其他示例中,例如:

1.toString();    // Syntax error
(1).toString();  // Works

您的代码的一个(有效的)替代方案是(注意开头的!):

!function(){ console.log('a'); }()