老樣子永淌,先看下面的函數(shù)
function fn(a){
console.log(a)??
var a = 123
console.log(a)??
function a(){
}
console.log(a)
var b = function(){
}
console.log(b)
????function d(){
????}
}
fn(1)
打印結(jié)果 function(){}? 123? 123? function(){}
=====華麗的分隔符-----------------------------------------
js 特點(diǎn): 單線程 解釋性語(yǔ)言
js 執(zhí)行 第一步
預(yù)編譯:預(yù)編譯發(fā)生再函數(shù)執(zhí)行的前一刻
預(yù)編譯四部曲:{
? ? 1.創(chuàng)建ao對(duì)象
? ? 2.找形參和變量申明暂吉,將形參和變量的名作為ao的屬性名,初始值為undefined
? ? 3填帽。 將實(shí)參和形參統(tǒng)一? 1 =》a f(1)
? ? 4. 在函數(shù)體{}中找函數(shù)聲明苛预,值賦予函數(shù)體
}
1.創(chuàng)建AO對(duì)象(Activation Object)(執(zhí)行期上下文)
先定義后執(zhí)行? fn 聲明 優(yōu)先于 變量申明??
下面是AO 對(duì)象的變化過(guò)程
AO{
? ? a:undefined;?
? ? b:undefined,
? ? d: function d(){}
}
AO{
a:1;
b:function(){},
}
AO{
a:function(){};
b:function(){},
d: function d(){}
}
AO{
a:3;
b:function(){},
d: function d(){}
}