第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js中()的作用

js中()的作用

繁星coding 2019-04-27 22:16:21
問題描述a=(functionfoo1(){})functionfoo2(){}為什么執(zhí)行完后,輸入foo1是undefined,()的作用是立即執(zhí)行,難道foo1是聲明在局部作用域
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經(jīng)驗 獲得超8個贊

首先,()操作符有兩種用法,一是作為圓括號運算符,提升括號內(nèi)表達式的優(yōu)先級;二是作為函數(shù)調(diào)用操作符,用于執(zhí)行在()操作符之前指向的函數(shù)名
其次,函數(shù)有函數(shù)聲明和函數(shù)表達式兩種聲明形式,前者形如:
functionname([param,[,param,[...,param]]]){
[statements]
}
而函數(shù)表達式則是:
letfunction_expression=function[name]([param1[,param2[,...,paramN]]]){
statements
};
在函數(shù)表達式中,前邊的function_expression如果存在,這就是個具名函數(shù)表達式;而反之則是匿名函數(shù)表達式。表達式里的name加的是方括號,表示可選:因為這個函數(shù)聲明是被“禁錮”在function_expression變量里的,換句話說,它可以用function_expression()這種形式來調(diào)用(所以有沒有名字其實無所謂了,因為函數(shù)名外部不可見)。
再說匿名函數(shù)表達式。匿名函數(shù)表達式,形如:
function([param,[,param,[...,param]]]){
[statements]
}
說白了就是函數(shù)聲明不留名。做好事不留名可以,做函數(shù)不留名,...那怎么調(diào)動?所以這種形式單獨存在的話,不合法。所以要怎么辦?這時就出現(xiàn)了IIFE,也就是立即調(diào)用函數(shù)表達式/自執(zhí)行函數(shù)表達式。它的根本思想很簡單,先用圓括號操作符把表達式本體罩住,表示“我罩你”,再在末尾加個函數(shù)調(diào)用操作符,表示“放膽做”,這倆加一塊,就是“立即執(zhí)行”:
(function([param,[,param,[...,param]]]){
[statements]
})()
(當然還有幾種其它形式的,但先學標準的吧)
這些balabala的都看下來,你的問題也應(yīng)該能有個解釋了。(另外結(jié)下稿費,謝謝......
參考資料:
MDN:圓括號運算符
MDN:函數(shù)
MDN:函數(shù)表達式
MDN:IIFE
                            
查看完整回答
反對 回復 2019-04-27
?
aluckdog

TA貢獻1847條經(jīng)驗 獲得超7個贊

()不會規(guī)劃作用域,這里的使用()是無意義的,等同于a=functionfoo1(){}。
這是具名的函數(shù)聲明形式,函數(shù)最終作為a的值,所以在全局作用域中是不存在foo1的。
                            
查看完整回答
反對 回復 2019-04-27
  • 2 回答
  • 0 關(guān)注
  • 428 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號