js中申明變數需注意
申明:本文是js系列筆記之一,有不正確的地方請儘管指出,大家相互學習,共同進步;
js語言分嚴格模式strict與非嚴格模式,
問題產生:在非嚴格模式下, 如果某個變數被初始化,而沒有事先宣告;那麼該變數會自動被新增到全域性作用域中;看下邊的現象:
非常出乎意料的結果
再試試下邊:
和上邊比較下,覺得有點意思了
想想為什麼會這樣:再試試下邊
舉一隅不以三隅反?
看到這裡相信大家都明白了,開始所述,必須有一個前提,那麼就是方法被呼叫過,或者該變數被使用過,為什麼會這樣,我猜測大概是這樣得方法在未被呼叫之時,只是宣告瞭,方法內部,js執行緒是不去管的,只有在被呼叫時,執行緒執行到方法中,該變數被使用,才會被js新增到全域性作用域中;
前邊提到了,嚴格模式;上邊所說的結果都是在非嚴格模式下才會出現的結果,在嚴格模式下,沒有被申明的變數,突然冒出來,會直接暴出 未被定義的error;順便說下,嚴格模式下,js不讓使用with語句的,,這也證明了我在前邊對with的理解,js本身都不建議使用with語句;
js有太多的靈活性與不確定性,這也導致了其 缺陷;
作者:XBGG
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2813610/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- nodejs在typescript專案中申明全域性變數NodeJSTypeScript變數
- JS中的變數JS變數
- js中變數和jsp中java程式碼中變數互相訪問解決方案JS變數Java
- js中的靜態變數JS變數
- js中變數作用域問題JS變數
- JS變數分析JS變數
- js變數提升JS變數
- JS中的變數賦值深入理解JS變數賦值
- js中同名變數或者引數的優先順序JS變數
- js-js的全域性變數和區域性變數JS變數
- 關於JS中變數的作用域-例項JS變數
- 動態修改 NodeJS 程式中的變數值NodeJS變數
- 前端 -- JS變數提升前端JS變數
- JS變數作用域JS變數
- JAVA類中透過Servlet操作JSP中Session變數方法JavaServletJSSession變數
- 部落格同步申明
- 介面測試如何在 json 中引用 mock 變數JSONMock變數
- 介面測試如何在json中引用mock變數JSONMock變數
- 第11天:JS中變數、字串基礎知識JS變數字串
- js宣告全域性變數JS變數
- JS變數比較陷阱JS變數
- web前端-js變數提升Web前端JS變數
- js 變數概念詳解JS變數
- 關於js變數提升JS變數
- c++中的變數型別_C ++中的變數C++變數型別
- js在函式中未定義的變數的處理JS函式變數
- Oracle中的替換變數,&變數名,&&變數名說明Oracle變數
- js檔案中如何讀取app.ux中的全域性變數JSAPPUX變數
- JS 的學習理解--->變數JS變數
- JS變數與命名規範JS變數
- php變數賦值給jsPHP變數賦值JS
- php中將驗證變數,,防止非法變數PHP變數
- awk中的變數變數
- 奇怪,jsp突然就不能讀取request中的變數JS變數
- RAC連線中TNSNAMES需注意的問題
- 指標的申明和定義指標
- extjs特殊用法--js--呼叫變數方法定義前提最先變數要用var定義JS變數
- js不使用第三個變數交換兩個變數的值JS變數