js變量聲明var使用與不使用的區(qū)別詳解
一、區(qū)分顯示的聲明與隱式聲明(var)
JS中變量聲明分顯式聲明和隱式聲明。
var name = 'muzidigbig';//顯示聲明 name = 'muzidigbig';//隱式聲明(為全局變量的一個(gè)屬性)
在函數(shù)中使用var關(guān)鍵字進(jìn)行顯式聲明的變量是做為局部變量,在全局范圍內(nèi)聲明的變量為全局變量;而沒有用var關(guān)鍵字,使用直接賦值方式聲明的是全局變量(全局對(duì)象屬性)。
// name = 'muzidigbig';//隱式聲明(為全局變量的一個(gè)屬性)
console.log(name);
function person(){
name = '木子大大';
console.log(name);
}
person();
當(dāng)我們使用訪問一個(gè)沒有聲明的變量時(shí),JS會(huì)報(bào)錯(cuò);而當(dāng)我們給一個(gè)沒有聲明的變量賦值時(shí),JS不會(huì)報(bào)錯(cuò),相反它會(huì)認(rèn)為我們是要隱式聲明一個(gè)全局變量,這一點(diǎn)一定要注意。
name = 'muzidigbig';//隱式聲明(為全局變量的一個(gè)屬性)
console.log(name);
function person(){
name = '木子大大';
console.log(name);//木子大大
}
person();
在當(dāng)前域中聲明變量. 如果在方法中聲明,則為局部變量(local variable);如果是在全局域中聲明,則為全局變量。
而事實(shí)上是對(duì)屬性賦值操作。首先,它會(huì)嘗試在當(dāng)前作用域鏈(如在方法中聲明,則當(dāng)前作用域鏈代表全局作用域和方法局部作用域)中解析 name; 如果在任何當(dāng)前作用域鏈中找到name,則會(huì)執(zhí)行對(duì)name屬性賦值; 如果沒有找到name,它才會(huì)在全局對(duì)象(即當(dāng)前作用域鏈的最頂層對(duì)象,如window對(duì)象)中創(chuàng)造name屬性并賦值。
注意!它并不是聲明了一個(gè)全局變量,而是創(chuàng)建了一個(gè)全局對(duì)象的屬性。
即便如此,可能你還是很難明白“變量聲明”跟“創(chuàng)建對(duì)象屬性”在這里的區(qū)別。事實(shí)上,Javascript的變量聲明、創(chuàng)建屬性以及每個(gè)Javascript中的每個(gè)屬性都有一定的標(biāo)志說明它們的屬性----如只讀(ReadOnly)不可枚舉(DontEnum)不可刪除(DontDelete)等等。
由于變量聲明自帶不可刪除屬性,比較var name = 'muzidigbig' 跟 name = 'muzidigbig',前者是變量聲明,帶不可刪除屬性,因此無法被刪除;后者為全局變量的一個(gè)屬性,因此可以從全局變量中刪除。
若有不足請(qǐng)多多指教!希望給您帶來幫助!
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
layui 實(shí)現(xiàn)加載動(dòng)畫以及非真實(shí)加載進(jìn)度的方法
今天小編就為大家分享一篇layui 實(shí)現(xiàn)加載動(dòng)畫以及非真實(shí)加載進(jìn)度的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
淺談JS對(duì)象添加getter與setter的5種方法
這篇文章主要介紹了淺談 JS 對(duì)象添加 getter與 setter 的5種方法以及如何讓對(duì)象屬性不可配置或枚舉,需要的朋友可以參考下2018-06-06
JS高級(jí)運(yùn)動(dòng)實(shí)例分析
這篇文章主要介紹了JS高級(jí)運(yùn)動(dòng),結(jié)合實(shí)例形式分析了javascript運(yùn)動(dòng)框架原理、實(shí)現(xiàn)與應(yīng)用技巧,需要的朋友可以參考下2016-12-12
一文讓您了解document.forms和document.formName的兼容性分析
今天在代碼中不小心寫了兩個(gè)name相同的form表單,然后通過document.forms[formName]形式獲取到的只有第一個(gè)表單,然后深入學(xué)習(xí)了下document.forms[formName]和document.formName的區(qū)別和兼容性2025-03-03
javascript實(shí)現(xiàn)文字無縫滾動(dòng)
這篇文章主要介紹了javascript實(shí)現(xiàn)文字無縫滾動(dòng),文字可以實(shí)現(xiàn)上下滾動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12

