<script>
var a=1
function fn1(a){//教程中介紹:此處傳參a就相當(dāng)于在函數(shù)中var a
var a=3+a//問(wèn)題1:此處重新var a是吧傳參處聲明的a重新清空并覆蓋掉嗎?問(wèn)題2:對(duì)于傳參處聲明的var a和此處聲明的var a有聲明區(qū)別嗎,它們兩者的關(guān)系,和js解讀的邏輯請(qǐng)?jiān)敿?xì)講解下。
alert(a)
var a=8//問(wèn)題3:此處重新var a是吧傳參處聲明的a重新清空并覆蓋掉嗎?還是前面的var a=3+a,a重新清空并覆蓋掉嗎?
alert(a)
}
fn1(4);
alert(a)
</script>
問(wèn)題1:此處重新var a是吧傳參處聲明的a重新清空并覆蓋掉嗎?
問(wèn)題2:對(duì)于傳參處聲明的var a和此處聲明的var a有聲明區(qū)別嗎,它們兩者的關(guān)系,和js解讀的邏輯請(qǐng)?jiān)敿?xì)講解下。
問(wèn)題3:此處重新var a是吧傳參處聲明的a重新清空并覆蓋掉嗎?還是前面的var a=3+aa重新清空并覆蓋掉嗎?
問(wèn)題4:在函數(shù)的作用域中,又有傳參又有var 新的聲明且變量名字一樣的時(shí)候預(yù)解析該以哪一個(gè)優(yōu)先級(jí)高?
1、樓上說(shuō)得不錯(cuò),先贊一下;
2、這是我在瀏覽器的一個(gè)實(shí)例,可以看一下;
3、再上理論——函數(shù)內(nèi)的變量提升!當(dāng)js進(jìn)入到新的函數(shù)時(shí),函數(shù)內(nèi)所有變量的聲明都被提到函數(shù)最前面,但是賦值操作還在原地不動(dòng)。另外很重要的一點(diǎn)是,變量聲明是系統(tǒng)根據(jù)變量名稱(chēng)進(jìn)行內(nèi)存空間分配的,當(dāng)之前已有某一變量時(shí),你只是單純地聲明而不是賦值的話(huà),它所占內(nèi)存空間是不變的,也就是說(shuō)該變量值是不變的!再上一張圖,來(lái)自于 javascript面向?qū)ο缶幊讨改?/a> 這本書(shū),可以搜搜看電子版
首先你要明白一個(gè)知識(shí)點(diǎn)就是變量聲明提升,并且變量重復(fù)聲明并不會(huì)影響其值
var a = 1;
console.log(a);//1
var a = 2;
console.log(a);//2
var a = a+4;
console.log(a);//6
上面等價(jià)下面
var a,a,a;//聲明提升
//下面的都是賦值操作
a = 1;
console.log(a);//1
a = 2;
console.log(a);//2
a = a+4;
console.log(a);//6
從上面看 聲明過(guò)的變量 重新聲明是沒(méi)有意義的,所以就不存在聲明變量誰(shuí)覆蓋誰(shuí),因?yàn)橹灰幸粋€(gè)聲明就夠了(同一個(gè)作用域)
你的代碼就變成下面的了
var a;//聲明提前
a = 1;//全局變量
function fn1(a) {
//重復(fù)聲明沒(méi)有意義所以直接省略(同一個(gè)作用域)
//下面都是簡(jiǎn)單的賦值操作不用說(shuō)了
a = 3 + a;
console.log(a);//7
a = 8;
console.log(a);//8
}
fn1(4);
alert(a);//函數(shù)內(nèi)聲明的變量是局部的并不會(huì)影響全局變量 所以這里是a=1北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。