JavaScript中函數(shù)作用域之精辟,函數(shù)原理的淺入深出碉碉,及程序執(zhí)行預(yù)編譯之通天編譯柴钻??垢粮?
版權(quán)聲明:本文為CSDN博主「NanQiao1716」的原創(chuàng)文章贴届,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/NanQiao1716/article/details/104629921
1.程序執(zhí)行的前一刻會(huì)先將代碼預(yù)編譯一遍毫蚓,如果有語(yǔ)法錯(cuò)誤則直接終止程序運(yùn)行
//預(yù)編譯之通天編譯 --> 在執(zhí)行的前一刻占键,會(huì)把文件通天掃描一遍
/**
//預(yù)編譯 函數(shù)整體提升(即函數(shù)會(huì)放到程序最頂端) 變量提升 (即 var a = 123 ; 難么會(huì)將a變量提升,則值是undefined)
未先聲明變量就賦值的歸全局所有 即Windows 元潘,在程序執(zhí)行則會(huì)創(chuàng)建一個(gè)Go{ } 對(duì)象 = Window{ }
1.先創(chuàng)建一個(gè)AO對(duì)象
2.再將函數(shù)形參和變量存入AO對(duì)象中畔乙,初始為undefined
3.在將相應(yīng)參數(shù)值從執(zhí)行順序往AO對(duì)象中傳值,后覆蓋前
4.最后在執(zhí)行程序翩概,然后在AO對(duì)象中找
*/
console.log(b);//undefined
var b = 234;
function test(a){
console.log(a)//fn
console.log(b)//234
var a = 123;
console.log(a)//123
function a(){}
b = 123 ;
console.log(b);//123
}
console.log(b);//234
test(1);
console.log(b);//123
2.函數(shù)作用域之精辟及函數(shù)原理的淺入深出
這里我就拿個(gè)上面那個(gè)列子稍微改動(dòng)一下
console.log(b);//undefined
var b = 234 ;
function test(a){
console.log(a) //fna
function a(){
a = 123456 ;
function c(){c = 789;}
}
console.log(b) //fnb
var a = 123 ;
console.log(a) ; //123
b();
function b(){
console.log(b) ;//undefined
c = 666 ;
var b = 456 ;
console.log(b) ;//456
}
console.log(c) ;//666
c = 999 ;
b = 123 ;
console.log(b);//123
}
test(1);
console.log(c); //999
console.log(b); //234
i.這里我直接在終端運(yùn)行了牲距,如圖所示
ii.在Chrome 瀏覽器運(yùn)行程序的示意圖
這里我在給出評(píng)論區(qū)了給出了幾個(gè)案例,歡迎在評(píng)論區(qū)留下你的答案哦钥庇,我不會(huì)告訴你不可以直接速知答案的哦
版權(quán)聲明:本文為博主原創(chuàng)文章牍鞠,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明评姨。
本文鏈接:https://blog.csdn.net/NanQiao1716/article/details/104629921
————————————————
版權(quán)聲明:本文為CSDN博主「NanQiao1716」的原創(chuàng)文章难述,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明吐句。
原文鏈接:https://blog.csdn.net/NanQiao1716/article/details/104629921