JS中的{}、()、自呼叫及()=>({})寫法含義
阿新 • • 發佈:2020-11-04
用途
{}
包圍物件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;})("測試");