想问一个关于 js 的基础问题~

var foo = 1
(function foo () {})()

为什么会报错啊?这个不是函数表达式嘛?函数表达式难道也会提升吗?求解,谢谢大佬们 ~

阅读 2k
1 个回答

1 后面没有跟;,在解析的时候会变成下面这样

var foo = 1(function foo () {})()

报错1 is not a function
一般无分号党都会知道一个基本规则,就是在([/+-这些符号作为一行开头的时候,会在前面加一个;写成下面这样

var foo = 1
;(function foo () {})()

就是为避免这种错误

这里面涉及到 js 的 ASI 机制,看后面的参考文章

参考文章

JavaScript ASI 机制详解
JS魔法堂:ASI(自动分号插入机制)和前置分号
彻底放弃javascript句尾分号是怎样的一种体验?
JavaScript 语句后应该加分号么?
如何看待现在TC39委员会推荐JS语句末尾写分号?

推荐问题
宣传栏