声明函数有些以分号结尾,有些不以分号结尾,有什么不同


今天遇到一个很有意思的问题「声明函数有些以分号结尾,有些不以分号结尾,有什么不同」

举个例子, 是否有分号,取决于下一行执行代码,是否有类似()自执行函数

1.无分号声明

const foo = function() {
  console.log("first");
} // 结尾没有分号,遇到下面的代码

//执行无问题
(() => console.log("first"))();

2.有分号声明

const foo = function() {
  console.log("first");
}; // 结尾有分号,遇到下面的代码

//执行无问题
(() => console.log("first"))();

12我们可以看出来,有代码块 {} 的声明,有无分号都无问题,js编译和执行都ok

3.无分号声明


const foo = () => console.log("first") // 结尾没有分号,遇到下面的代码,报错无法执行
(() => console.log("first"))();

4.有分号声明

const foo = () => { console.log("first") }; // 结尾有分号,遇到下面的代码,无问题
(() => console.log("first"))();

34可以看出来,代码块{}之后又无分号,跟着的下一行自执行函数都可以正常运行,但是如果没有{}代码块+下一行有自执行函数,则报错

比如如下错误实例

const a = [1,2,3,4] // 结尾无分号,遇到下一行报错
(() => console.log("error"));

//ncaught TypeError: [1,2,3,4] is not a function
    at <anonymous>:2:1


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM