1. 程式人生 > 實用技巧 >JS中的{}、()、自呼叫及()=>({})寫法含義

JS中的{}、()、自呼叫及()=>({})寫法含義

用途

  • {}
    包圍物件object
    包圍程式碼塊code block(如方法體,或普通程式碼塊等)。
  • ()
    • 包圍引數列表
    • 自呼叫表示式,包圍一些需要通過運算得出結果的程式碼(其中包圍的程式碼會執行一次)。
      函式表示式可以自呼叫(即自動執行一次)。
      如果表示式後面緊跟(),會自動呼叫。
      不能自呼叫宣告的函式,通過新增括號,來說明他是一個函式表示式。

經常可以見到很多用()包圍{}的地方,用於將{}內部的程式碼執行一次,計算出結果。

demo

    • window.eval()
      可以見到eval('(' + value + ')')

    • 自呼叫函式

function foo() {console.log("hello");}    //
聲明瞭一個函式foo() foo() // 呼叫 // 自呼叫函式 (function bar() {console.log("world");})(); // 立刻執行一次函式。 bar // 報錯,未定義。
    • 箭頭函式表示式(ES6)的返回值
      箭頭函式表示式x => x,表示function(x) {return x;}
      但如果返回值是object型別,則不能為x => {name:'JT'},,需要改為x => ({name:'JT'})
getObj = (num) => {age:num};    // getObj(22) 得不到物件返回值,為undefined。
getObj = (num) => ({age:num}); // getObj(22) 得到物件返回值,為{age:22}。 // 另外,在使用typeof檢視箭頭函式表示式的型別的時候,也可以看到()的作用。 typeof x => x // 語法錯誤。 typeof (x => x) // "function"。使用()將箭頭函式表示式執行為一個結果|返回值。這個返回值是一個函式。然後用typeof判斷。
    • 建立匿名函式並立即執行
// function(str) {return str;}
// 報錯:Uncaught SyntaxError: Unexpected token (
// 用()包圍程式碼段。成為一個函式。 (function(str) {return str;}) // 函式後加(...args),得到的函式會執行一次。 (function(str) {return str;})("測試") // 得到函式 func = (function(str) {return str;}) // 直接得到函式執行一次的返回值 retValue = (function(str) {return str;})("測試");