不小心使用內建標示符status後帶來的悲劇

來源:互聯網
上載者:User

代碼大概是這樣的

var status = true;function changeSel() {if (status == false) {// do something} else {// do other thing}}

有一個函數會將status設定為false,但後來每次調用changeSel都只進到else裡的代碼。

 

後發現status是window的一個屬性,即全域變數。它用來設定狀態列的文本提示,字串類型。多數瀏覽器都預設沒有開啟改功能。Firefox裡可以手動開啟,

1,地址欄輸入 about:config

2,找到dom.disable_window_status_change,設定為false

 

各瀏覽器對重寫status的表現不一樣,如下

 

Firefox 19

 

Chrome 25

 

Safari 5

 

Opera 12

 

IE

 

可以看到,只有Firefox能修改window.status,將其有字串類型改為了布爾類型false。其它瀏覽器都status值變成了字串類型的"false"。

回到最上面的代碼,"false" == false 的結果是false,所以非Firefox總在執行else裡的代碼。

 

相關:

各瀏覽器關鍵字/保留字作為對象屬性的差異

JavaScript中同名標識符優先順序

有name為action的表單元素時取form的屬性action杯具了

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.