亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

什么是全局名稱空間會被污染?

什么是全局名稱空間會被污染?

HUWWW 2019-07-02 10:05:53
什么是全局名稱空間會被污染?我真的不明白全局名稱空間被污染意味著什么。什么是全局名稱空間會被污染?
查看完整描述

3 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

在JavaScript中,函數之外的聲明位于全局范圍內??紤]一下這個小例子:

var x = 10;function example() {
    console.log(x);}example(); //Will print 10

在上面的例子中,x在全局范圍內聲明。任何子作用域,如example函數,有效地繼承了在任何父作用域中聲明的內容(在本例中,這只是全局范圍)。

任何重新聲明全局范圍中聲明的變量的子作用域都會隱藏全局變量,可能會導致不必要的、難以跟蹤的bug:

var x = 10;function example() {
    var x = 20;
    console.log(x); //Prints 20}example();console.log(x); //Prints 10

通常不推薦全局變量,因為可能會導致這樣的問題。如果我們不使用var語句中的example函數時,我們會意外地覆蓋x在全球范圍內:

var x = 10;function example() {
    x = 20; //Oops, no var statement
    console.log(x); //Prints 20}example();console.log(x); //Prints 20... oh dear

如果你想更多地閱讀并正確理解它,我建議閱讀ECMAScript規范..它可能不是最令人興奮的閱讀,但它將幫助無止境。


查看完整回答
反對 回復 2019-07-02
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

當您聲明全局變量、函數等時,它們將進入全局命名空間。除了性能/內存問題(這可能會出現),您可能會遇到不幸的名稱沖突,當您將重新定義一個重要的變量或使用您認為使用的值。

應該避免在全局命名空間中定義內容。


查看完整回答
反對 回復 2019-07-02
  • 3 回答
  • 0 關注
  • 709 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號