欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript聲明變量時(shí)為什么要加var關(guān)鍵字

 更新時(shí)間:2014年09月29日 16:29:57   投稿:whsnow  
var用來(lái)聲明變量,但是這個(gè)語(yǔ)法并不嚴(yán)格要求,很多時(shí)修改,我們可以直接使用一個(gè)變量而不用var聲明它,不過(guò)還是建議大家加var

在JavaScript中,var用來(lái)聲明變量,但是這個(gè)語(yǔ)法并不嚴(yán)格要求,很多時(shí)修改,我們可以直接使用一個(gè)變量而不用var聲明它。

復(fù)制代碼 代碼如下:

var x = "XX";
y ="xxx";

諸如此類(lèi)。這有一個(gè)問(wèn)題,比如說(shuō)在代碼中的某一行,我想使用的一個(gè)已聲明的變量x,結(jié)果由于打字或者拼寫(xiě)錯(cuò)誤,這個(gè)變量被寫(xiě)成y了,結(jié)果相當(dāng)于“隱式”聲明了一個(gè)變量y,在實(shí)際編程過(guò)程中,這種錯(cuò)誤有時(shí)比較難以發(fā)現(xiàn)。
當(dāng)你在當(dāng)前上下文內(nèi)進(jìn)行這種“隱式”聲明時(shí),JavaScript引擎會(huì)先在當(dāng)前上下文中尋找是否之前有聲明此變量,如果沒(méi)有,再到上一級(jí)的上下文中去尋找,如果一直未找到,會(huì)最后在window上聲明這個(gè)變量!
比如:

代碼如下:

window. y = "hello"; 
function func(){ 
y = "OH, NO!!!"; 
} 
func(); 
alert(window.y); //#=> display "OH, NO!!!" 

當(dāng)上下文中的任意一層有這種“隱式”定義的變量時(shí),那么該層的該變量會(huì)被修改,而不會(huì)在window上生成一個(gè)新的變量。(這種bug也挺討厭的,尤其是封裝的比較復(fù)雜的代碼)
比如:

代碼如下:

var x = "window.x"; 
function a() { 
var x = "a's x"; 
var b = function() { 
var c = function() { 
//no var! 
x = "c's x:"; 
}; 
alert("before c run,the b.x:" + x); 
c(); 
alert("after c run, the b.x:" + x); 
}; 
alert("a.x is:" + x); 
b(); 
alert("after b function runed, the a.x is:" + x); 
}; 
alert("before a run, window.x:" + x); 
a(); 
alert("after a run, window.x:" + x); 

這里面有以下幾層:window, func a, func b, func c一直作層級(jí)嵌套。window->a->b->c
window和a中,都有定義變量x,b中未定義該變量,在c中‘隱式'聲明了一個(gè)x,該x最終修改了a變量的值。
牢記,在JavaScript中,聲明變量,一定前面要加var .

相關(guān)文章

  • javascript循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法

    javascript循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法

    這是一道比較經(jīng)典的循環(huán)鏈表問(wèn)題,在華為上機(jī)筆試中也出現(xiàn)過(guò)。 約瑟夫環(huán)是一個(gè)數(shù)學(xué)的應(yīng)用問(wèn)題,下面這篇文章主要就給大家介紹了javascript循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • 使用fileReader的一個(gè)坑及解決

    使用fileReader的一個(gè)坑及解決

    這篇文章主要介紹了使用fileReader的一個(gè)坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • bootstrapValidator 重新啟用提交按鈕的方法

    bootstrapValidator 重新啟用提交按鈕的方法

    bootstrapValidator 使用中,由于字段檢查等原因,致使提交按鈕失效。如何重新啟用提交按鈕呢?下面小編給大家介紹下bootstrapValidator 重新啟用提交按鈕的方法,需要的朋友可以參考下
    2017-02-02
  • 微信小程序van-field中的left-icon屬性自定義實(shí)現(xiàn)過(guò)程

    微信小程序van-field中的left-icon屬性自定義實(shí)現(xiàn)過(guò)程

    在小程序中,我們是用 Vant 組件庫(kù)時(shí),常常會(huì)用到 van-field 輸入框控件,今天我將跟大家分享的是 van-field 輸入框控件中的 left-icon 屬性的自定義怎么實(shí)現(xiàn),感興趣的朋友一起看看吧
    2023-08-08
  • JS實(shí)現(xiàn)樣式清新的橫排下拉菜單效果

    JS實(shí)現(xiàn)樣式清新的橫排下拉菜單效果

    這篇文章主要介紹了JS實(shí)現(xiàn)樣式清新的橫排下拉菜單效果,通過(guò)簡(jiǎn)單的元素遍歷控制頁(yè)面元素的動(dòng)態(tài)切換效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 如何理解JavaScript模塊化

    如何理解JavaScript模塊化

    模塊化簡(jiǎn)單來(lái)說(shuō)就是將一個(gè)完整的長(zhǎng)篇代碼文件根據(jù)功能進(jìn)行劃分成幾個(gè)文件,這些文件各自負(fù)責(zé)一個(gè)獨(dú)立的功能,各個(gè)文件組合起來(lái)實(shí)現(xiàn)一個(gè)完整的大功能,這就是模塊化,每個(gè)負(fù)責(zé)獨(dú)立功能的文件就是模塊。
    2021-05-05
  • Js實(shí)現(xiàn)復(fù)選框的全選、全不選反選功能代碼實(shí)例

    Js實(shí)現(xiàn)復(fù)選框的全選、全不選反選功能代碼實(shí)例

    這篇文章主要介紹了Js實(shí)現(xiàn)復(fù)選框的全選、全不選和反選,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 被jQuery折騰得半死,揭秘為何jQuery為何在IE/Firefox下均無(wú)法使用

    被jQuery折騰得半死,揭秘為何jQuery為何在IE/Firefox下均無(wú)法使用

    某學(xué)員前日實(shí)施一個(gè)Web項(xiàng)目實(shí)施發(fā)生了悲劇,找到我求解決,把我也折騰個(gè)半死。
    2010-01-01
  • js實(shí)現(xiàn)收縮菜單效果實(shí)例代碼

    js實(shí)現(xiàn)收縮菜單效果實(shí)例代碼

    這篇文章介紹了js實(shí)現(xiàn)收縮菜單效果實(shí)例代碼,有需要的朋友可以參考一下
    2013-10-10
  • 一步步教你實(shí)現(xiàn)微信小程序自定義組件

    一步步教你實(shí)現(xiàn)微信小程序自定義組件

    之前做小程序開(kāi)發(fā)的時(shí)候,對(duì)于開(kāi)發(fā)來(lái)說(shuō)比較頭疼的莫過(guò)于自定義組件了,下面這篇文章主要給大家介紹了關(guān)于微信小程序自定義組件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03

最新評(píng)論