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

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

在javascript中自執(zhí)行函數(shù)的目的是什么?

在javascript中自執(zhí)行函數(shù)的目的是什么?

在javascript中自執(zhí)行函數(shù)的目的是什么?在javascript中,你想什么時候使用它:(function(){     //Bunch of code...})();對此://Bunch of code...
查看完整描述

3 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗 獲得超8個贊

簡單化??雌饋砗苷#瑤缀踝屓烁械桨参浚?/p>

var userName = "Sean";console.log(name());function name() {
  return userName;}

然而。如果我在頁面中包含一個非常方便的javascript庫,將高級字符轉(zhuǎn)換為基本級別表示,該怎么辦?

等等......什么?

我的意思是。如果有人輸入帶有某種重音的角色(例如法語或西班牙語),但我只想要'英語'字符?Az在我的節(jié)目中?嗯......西班牙語'n~'和法語'e /'字符(我已經(jīng)為這些字符使用了兩個字符,但你可以在表達(dá)重音的字符中進(jìn)行精神跳躍),這些字符可以被翻譯成為'n'和'e'的基本字符。

所以有一個好人已經(jīng)寫了一個全面的字符轉(zhuǎn)換器,我可以包括在我的網(wǎng)站...我包括它。

一個問題:它有一個名為'name'的函數(shù),與我的函數(shù)相同。

這就是所謂的碰撞。我們在相同的范圍內(nèi)聲明了兩個具有相同名稱的函數(shù)。我們想避免這種情況。

所以我們需要以某種方式確定代碼的范圍。

在javascript中擴(kuò)展代碼范圍的唯一方法是將其包裝在函數(shù)中:

function main() {
  // We are now in our own sound-proofed room and the 
  // character-converter libarary's name() function can exist at the 
  // same time as ours. 
  var userName = "Sean";
  console.log(name());
  function name() {
    return userName;
  }}

這可能會解決我們的問題?,F(xiàn)在所有東西都是封閉的,只能在我們的開啟和關(guān)閉支架內(nèi)進(jìn)行訪問。

我們在函數(shù)中有一個函數(shù)......這看起來很奇怪,但完全合法。

只有一個問題。我們的代碼不起作用。我們的userName變量永遠(yuǎn)不會回顯到控制臺!

我們可以通過在現(xiàn)有代碼塊之后添加對函數(shù)的調(diào)用來解決此問題...

function main() {
  // We are now in our own sound-proofed room and the 
  // character-converter libarary's name() function can exist at the 
  // same time as ours. 
  var userName = "Sean";
  console.log(name());
  function name() {
    return userName;
  }}main();

或之前!

main();function main() {
  // We are now in our own sound-proofed room and the 
  // character-converter libarary's name() function can exist at the 
  // same time as ours. 
  var userName = "Sean";
  console.log(name());
  function name() {
    return userName;
  }}

次要問題:“主要”這個名稱還沒有被使用的可能性有多大?......非常非常苗條。

我們需要更多的范圍。以及一些自動執(zhí)行main()函數(shù)的方法。

現(xiàn)在我們來到自動執(zhí)行功能(或自動執(zhí)行,自運行,等等)。

((){})();

語法像罪一樣尷尬。但是,它的工作原理。

當(dāng)您將函數(shù)定義包裝在括號中并包含參數(shù)列表(另一組或括號?。r,它將充當(dāng)函數(shù)調(diào)用。

所以讓我們再看一下我們的代碼,使用一些自動執(zhí)行的語法:

(function main() {
  var userName = "Sean";
    console.log(name());
    function name() {
      return userName;
    }
  })();

因此,在您閱讀的大多數(shù)教程中,您現(xiàn)在將使用“匿名自執(zhí)行”或類似的術(shù)語進(jìn)行轟炸。

經(jīng)過多年的專業(yè)開發(fā),我強烈建議您為調(diào)試目的命名您編寫的每個函數(shù)。

當(dāng)出現(xiàn)問題時(它會出現(xiàn)問題),您將在瀏覽器中檢查回溯。它總是更容易縮小你的代碼的問題時,在堆棧跟蹤中的條目有名字!

非常啰嗦,我希望它有所幫助!


查看完整回答
反對 回復(fù) 2019-05-28
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊

自調(diào)用(也稱為自動調(diào)用)是函數(shù)在定義時立即執(zhí)行的。這是一個核心模式,是許多其他JavaScript開發(fā)模式的基礎(chǔ)。

它是一個偉大的粉絲:)因為:

  • 它將代碼保持在最低限度

  • 它強制將行為與表達(dá)分開

  • 它提供了一個阻止命名沖突的閉包

極大 - (為什么你應(yīng)該說它好?)

  • 它是關(guān)于一次定義和執(zhí)行一個函數(shù)。

  • 您可以讓該自執(zhí)行函數(shù)返回一個值,并將該函數(shù)作為參數(shù)傳遞給另一個函數(shù)。

  • 封裝很有用。

  • 它也適用于塊范圍。

  • 是的,您可以將所有.js文件包含在自執(zhí)行功能中,并可以防止全局命名空間污染。;)

更多這里。


查看完整回答
反對 回復(fù) 2019-05-28
  • 3 回答
  • 0 關(guān)注
  • 2565 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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