淺談js中的變量名和函數(shù)名重名
今天騷凱問了一道變量名沖突的題目,感覺很有意思,順便也復(fù)習(xí)一下預(yù)解析的一些知識(shí),有不對(duì)的地方忘前輩大神指正,題目是這樣的:
var a=100;
function a(){
console.log(a);
}
a();
這個(gè)串代碼執(zhí)行完會(huì)報(bào)錯(cuò) : a is not a function
問題來了,為什么會(huì)報(bào)這個(gè)錯(cuò)誤呢? 這里涉及到函數(shù)和變量的預(yù)解析:
1)函數(shù)聲明會(huì)置頂
2)變量聲明也會(huì)置頂
3)函數(shù)聲明比變量聲明更置頂:(函數(shù)在變量上面)
4)變量和賦值語句一起書寫,在js引擎解析時(shí),會(huì)將其拆成聲明和賦值2部分,聲明置頂,賦值保留在原來位置
5)聲明過的變量不會(huì)重復(fù)聲明
知道以上的規(guī)則,上面的代碼等同于 :
var a=function (){
console.log(a);
}
var a=100;
a();
相當(dāng)于給a重新賦值了,所以會(huì)報(bào)錯(cuò)。
以上這篇淺談js中的變量名和函數(shù)名重名就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IE php關(guān)于強(qiáng)制下載文件的代碼
這個(gè)東東,把我搞得暈暈乎乎的,F(xiàn)F下,沒有強(qiáng)制下載文件這個(gè)問題。2008-08-08
js中位數(shù)不足自動(dòng)補(bǔ)位擴(kuò)展padLeft、padRight實(shí)現(xiàn)代碼
這篇文章主要介紹了js中位數(shù)不足自動(dòng)補(bǔ)位擴(kuò)展之padLeft、padRight實(shí)現(xiàn)方法,主要是通過String.prototype擴(kuò)展實(shí)現(xiàn),需要的朋友可以參考下2020-04-04
微信小程序?qū)W習(xí)筆記之文件上傳、下載操作圖文詳解
這篇文章主要介紹了微信小程序?qū)W習(xí)筆記之文件上傳、下載操作,結(jié)合實(shí)例形式分析了微信小程序圖片文件傳輸?shù)脑?、步驟及后臺(tái)php操作相關(guān)實(shí)現(xiàn)技巧,并結(jié)合圖文形式予以詳細(xì)說明,需要的朋友可以參考下2019-03-03
JS實(shí)現(xiàn)的小火箭發(fā)射動(dòng)畫效果示例
這篇文章主要介紹了JS實(shí)現(xiàn)的小火箭發(fā)射動(dòng)畫效果,涉及javascript基于時(shí)間函數(shù)的頁面元素屬性動(dòng)態(tài)變換實(shí)現(xiàn)運(yùn)動(dòng)效果相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
詳解Webpack loader 之 file-loader
這篇文章主要介紹了詳解Webpack loader 之 file-loader,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
JavaScript實(shí)現(xiàn)統(tǒng)計(jì)文本框Textarea字?jǐn)?shù)增強(qiáng)用戶體驗(yàn)
現(xiàn)在流行的Twitter等微博客網(wǎng)站,有一個(gè)很好的用戶體驗(yàn),就是在文本框中輸入文字的時(shí)候,會(huì)自動(dòng)統(tǒng)計(jì)輸入的字符,并顯示用戶還能輸入的字符,在限制了140個(gè)字的微博客中,這樣的小提示可以很好的增強(qiáng)用戶體驗(yàn),本文也嘗試著實(shí)現(xiàn)一下2012-12-12

