进阶学习js中的执行上下文
在js中的執(zhí)行上下文,菜鳥(niǎo)入門(mén)基礎(chǔ)?這篇文章中我們簡(jiǎn)單的講解了js中的上下文,今天我們就更進(jìn)一步的講解js中的執(zhí)行上下文。
1、當(dāng)遇到變量名和函數(shù)名相同的問(wèn)題。
var a = 10; function a(){console.log(1); } a(); //報(bào)錯(cuò)如果你覺(jué)得函數(shù)a會(huì)覆蓋變量a那你肯定是js的新朋友,為什么這里會(huì)報(bào)錯(cuò)呢?我記得我在基礎(chǔ)的執(zhí)行上下文文章中說(shuō)過(guò)變量聲明提前的概念,對(duì)這里就是因?yàn)檫@個(gè)原因,但是在上面一篇文章中還有一個(gè)問(wèn)題我沒(méi)有去講。
那就是函數(shù)的聲明比變量的聲明順序更早,上面那段代碼相當(dāng)于下面這段代碼:
function a(){console.log(1); } var a = undefined; a = 10; a();函數(shù)a被變量a覆蓋了。
2.當(dāng)函數(shù)在另外一個(gè)函數(shù)中調(diào)用的時(shí)候
var a = 1; function fn1(){console.log(a); } function fn2(){fn1(); } a = 2; fn2(); //2這里沒(méi)有輸出1是因?yàn)閒n1嵌套在fn2中,所以函數(shù)fn2沒(méi)有執(zhí)行的話,fn1自然也沒(méi)有被執(zhí)行,又因?yàn)閒n2是在a賦值為2以后才執(zhí)行的所以fn1打印的就是2,此時(shí)a的值就是2。
到這里,關(guān)于js的執(zhí)行上下文就可以告一段落了,當(dāng)然如果后期遇到其他的問(wèn)題,會(huì)繼續(xù)更新到這一文章中,之所以這一章講解的比較簡(jiǎn)單是因?yàn)橛猩厦嬉还?jié)的基礎(chǔ)。
轉(zhuǎn)載于:https://www.cnblogs.com/pssp/p/5218716.html
總結(jié)
以上是生活随笔為你收集整理的进阶学习js中的执行上下文的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 常见的天线种类
- 下一篇: 解决plsqldev连接oracle数据