聲明函數有些以分號結尾,有些不以分號結尾,有什麼不同

今天遇到一個很有意思的問題「聲明函數有些以分號結尾,有些不以分號結尾,有什麼不同」

舉個例子, 是否有分號,取決於下一行執行代碼,是否有類似()自執行函數

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章