用途
{}
包圍對象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;})("測試");