JavaScript中的變量聲明早于賦值分析
更新時(shí)間:2012年03月01日 22:24:53 作者:
JavaScript中的變量聲明早于賦值分析,需要的朋友可以參考下
如下
實(shí)際有兩個(gè)步驟:
1 初始化a為undefined
2 a賦值3
因此會(huì)出現(xiàn)一些“匪夷所思”的現(xiàn)象,即JS中變量可以先使用后聲明。這在Java中是不允許的。
編譯通不過。但JS可以,如下
雖然是undefined,但不會(huì)報(bào)錯(cuò)。說明a的確聲明了,且為undefined。
如果只是“alert(a)”,沒有“var a”的話JS引擎會(huì)報(bào)錯(cuò)的。
FF中如下
alert(a);
var a = 1;
這次輸出的仍然是undefined而非1。
又如,
alert('a' in window); // true
var a;
雖然代碼形式上寫在alert后,引擎仍然先自動(dòng)處理var的聲明。最后輸出的是true。
明白了這些就不難理解下面的代碼運(yùn)行結(jié)果了
if (!("a" in window)) {
var a = 1;
}
alert(a);
復(fù)制代碼 代碼如下:
var a = 3;
實(shí)際有兩個(gè)步驟:
1 初始化a為undefined
2 a賦值3
因此會(huì)出現(xiàn)一些“匪夷所思”的現(xiàn)象,即JS中變量可以先使用后聲明。這在Java中是不允許的。
復(fù)制代碼 代碼如下:
System.out.println(a);
int a = 1;
int a = 1;
編譯通不過。但JS可以,如下
復(fù)制代碼 代碼如下:
alert(a);
var a;
var a;
雖然是undefined,但不會(huì)報(bào)錯(cuò)。說明a的確聲明了,且為undefined。
如果只是“alert(a)”,沒有“var a”的話JS引擎會(huì)報(bào)錯(cuò)的。
復(fù)制代碼 代碼如下:
alert(a);
FF中如下

雖然可以先使用再聲明,但這樣會(huì)造成賦值的效果丟失。如下
復(fù)制代碼 代碼如下:
alert(a);
var a = 1;
這次輸出的仍然是undefined而非1。
又如,
復(fù)制代碼 代碼如下:
alert('a' in window); // true
var a;
雖然代碼形式上寫在alert后,引擎仍然先自動(dòng)處理var的聲明。最后輸出的是true。
明白了這些就不難理解下面的代碼運(yùn)行結(jié)果了
復(fù)制代碼 代碼如下:
if (!("a" in window)) {
var a = 1;
}
alert(a);
相關(guān)文章
關(guān)于Bootstrap彈出框無法調(diào)用問題的解決辦法
這篇文章主要介紹了關(guān)于Bootstrap彈出框無法調(diào)用問題的解決辦法的相關(guān)資料,需要的朋友可以參考下2016-03-03
JavaScript使用SpreadJS創(chuàng)建Excel查看器
在現(xiàn)代的Web應(yīng)用開發(fā)中,Excel文件的處理和展示是一項(xiàng)常見的需求,小編今天將為大家展示如何借助SpreadJS來創(chuàng)建一個(gè)Excel查看器,感興趣的小伙伴可以了解下2023-12-12
html5+canvas實(shí)現(xiàn)支持觸屏的簽名插件教程
jq-signature.js是一個(gè)幫助你創(chuàng)建簽名的jQuery插件,允許你的用戶使用鼠標(biāo),手指或者鉛筆生成簽名。下面這篇文章主要給大家介紹了利用html5+canvas實(shí)現(xiàn)支持觸屏的簽名插件的相關(guān)資料,需要的朋友可以參考下。2017-05-05
10個(gè)JavaScript面試??嫉那岸耸謱戭}總結(jié)
這篇文章主要為大家詳細(xì)介紹了10個(gè)JavaScript面試常考的前端手寫題,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下2024-02-02
uniapp小程序?qū)崿F(xiàn)瀑布流布局的思路與代碼
這篇文章主要給大家介紹了關(guān)于uniapp小程序?qū)崿F(xiàn)瀑布流布局的思路與代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
詳解webpack+express多頁站點(diǎn)開發(fā)
這篇文章主要介紹了詳解webpack+express多頁站點(diǎn)開發(fā)2017-12-12

