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

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

JS中好幾個JS圓括號相連的這種叫啥?

JS中好幾個JS圓括號相連的這種叫啥?

瀟湘沐 2019-01-29 17:31:20
剛學(xué)JS,圖中那段(function(){f();})();完全不明白為什么里面的function要用圓括號括上,后面為什么又加了一對圓括號或許這問題很基礎(chǔ),但我真的不知道到底是啥求告訴我該問題的關(guān)鍵字,我去谷歌或者百度都行謝謝大家!只能選擇一個答案!TAT
查看完整描述

2 回答

?
墨色風(fēng)雨

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

這么做是的目的為了防止變量污染或者不想讓外部訪問從而保護變量,這里的做法的術(shù)語叫立即執(zhí)行函數(shù)。實例:


//比如在某個a.js文件有個變量名叫$(jquery暴露出來的對象就叫$);

//然后你在引入這個js文件后又引入一個b.js,內(nèi)容如下:

var $ = 'I am b.js';

console.log($)


//然后又在b.js后引入c.js,內(nèi)容如下:

var $el = $('xxx'); //當(dāng)你試圖使用a.js中$下的方法時,發(fā)現(xiàn)報錯了,因為$被b.js重新賦值了

解決辦法就是讓b.js的變量被包裹起來:


(function(){

var $ = 'I am b.js';

console.log($)

})()

由于在b.js的變量被函數(shù)的作用域包裹起來了,不能被外部訪問到,所以c.js訪問的是在全局作用域的$,就能按預(yù)期拿到$,又不影響b.js的正常執(zhí)行。


另外簡單的解釋一下立即執(zhí)行函數(shù):


//第一個括號的作用是輸出一個函數(shù)

var b = (function(){var $="b.js";console.log($)})

console.log(b); // =>? (){var $="b.js";console.log($)}


//第二個括號是執(zhí)行這個方法,相當(dāng)于:

b() // =>(function(){var $="b.js";console.log($)})()


查看完整回答
反對 回復(fù) 2019-02-18
?
Helenr

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

IIFE (立即調(diào)用函數(shù)表達(dá)式) 是一個 JavaScript函數(shù) ,它會在定義時立即執(zhí)行。


查看完整回答
反對 回復(fù) 2019-02-18
  • 2 回答
  • 0 關(guān)注
  • 1182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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