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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么我們不在JavaScript中使用元素ID作為標(biāo)識(shí)符?

為什么我們不在JavaScript中使用元素ID作為標(biāo)識(shí)符?

慕運(yùn)維8079593 2019-09-12 10:10:35
為什么我們不在JavaScript中使用元素ID作為標(biāo)識(shí)符?我開始使用的所有瀏覽器都允許id="myDiv"通過簡(jiǎn)單地編寫來訪問元素:myDiv見這里:http://jsfiddle.net/L91q54Lt/無論如何,這種方法似乎記錄很少,事實(shí)上,我遇到的來源甚至沒有提及,而是假設(shè)有人會(huì)使用document.getElementById("myDiv")或者可能document.querySelector("#myDiv")即使在事先知道其ID(即不在運(yùn)行時(shí)計(jì)算)時(shí)也要訪問DOM元素。我可以說,后者的方法具有保持代碼安全的優(yōu)勢(shì),如果有人無意中嘗試myDiv在更廣泛的范圍內(nèi)重新定義(雖然不是這么好的想法......),用一些不同的值覆蓋它并繼續(xù)而沒有注意到?jīng)_突。但其他那個(gè)呢?除了代碼設(shè)計(jì)之外,使用上面的簡(jiǎn)短形式是否有任何問題,或者我在這里缺少什么?
查看完整描述

3 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

好問題。正如愛因斯坦可能沒有說的那樣,事情應(yīng)盡可能簡(jiǎn)單,并不簡(jiǎn)單。

如果有人無意中嘗試在更廣泛的范圍內(nèi)重新定義myDiv(雖然不是這么好的想法......),后一種方法的優(yōu)點(diǎn)是保持代碼安全,用一些不同的值覆蓋它并繼續(xù)而不注意沖突

這就是為什么這是一個(gè)壞主意的主要原因,而且這已經(jīng)足夠了。全局變量不能安全依賴。它們可以隨時(shí)被任何最終在頁面上運(yùn)行的腳本覆蓋。

除此之外,只需輸入myDiv就不是“簡(jiǎn)短形式” document.getElementById()。它是對(duì)全局變量的引用。如果元素不存在,document.getElementById()將很樂意返回null,而嘗試訪問不存在的全局變量將引發(fā)引用錯(cuò)誤,因此您需要將對(duì)try / catch塊中的全局引用包裝起來是安全的。

這就是為什么jQuery如此受歡迎的一個(gè)原因:如果你這樣做$("#myDiv").remove(),并且沒有id的元素,myDiv就不會(huì)拋出任何錯(cuò)誤 - 代碼只會(huì)默默地做什么,這通常就是你在做DOM操作時(shí)所需要的。



查看完整回答
反對(duì) 回復(fù) 2019-09-16
  • 3 回答
  • 0 關(guān)注
  • 602 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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