JavaScript前解析詳細
2923 ワード
まず、JSの事前解析とJSプログレッシブの関係をはっきりさせます.実際にはそれらの2つは衝突していません.1つの例はそれらの関係を簡単に理解します.
ホテルで食事をします.食事の前にメニューを見て、注文します.でも、食べる時は一口で食べます.
一、jsの事前解析は何ですか?
プログラムに使う材料(変数、関数)に初期値を与えて、表の中に並存しています.その行にプログラムが実行されると、この表に初期値があるかどうかを見に来ます.
二、どのような場合に事前解析が行われますか?
1、ラベルが合っている場合;
2、関数に会った時;
三、jsは何を解析しますか?
1、関数参照の変数
2、varの後の変数
3、関数
四、jsはこれらの変数、関数にどのような初期値を与えますか?
1、すべてのパラメータを直接に割り当てます.
2、凡是varのものは、undefinedを初期値として付与します.
3、すべての関数は、直接関数自体を初期値として付与します.したがって、なぜ関数宣言の前に呼び出すことができますか?
五、どのような状況で予備解析に与えられた初期値が変わりますか?
値付け機能のある記号:=,+=,-=,*=,/=,+,--など(追加があれば.)
ホテルで食事をします.食事の前にメニューを見て、注文します.でも、食べる時は一口で食べます.
一、jsの事前解析は何ですか?
プログラムに使う材料(変数、関数)に初期値を与えて、表の中に並存しています.その行にプログラムが実行されると、この表に初期値があるかどうかを見に来ます.
二、どのような場合に事前解析が行われますか?
1、ラベルが合っている場合;
2、関数に会った時;
三、jsは何を解析しますか?
1、関数参照の変数
2、varの後の変数
3、関数
四、jsはこれらの変数、関数にどのような初期値を与えますか?
1、すべてのパラメータを直接に割り当てます.
2、凡是varのものは、undefinedを初期値として付与します.
3、すべての関数は、直接関数自体を初期値として付与します.したがって、なぜ関数宣言の前に呼び出すことができますか?
五、どのような状況で予備解析に与えられた初期値が変わりますか?
値付け機能のある記号:=,+=,-=,*=,/=,+,--など(追加があれば.)
:
alert(a); //undefined
var a = 0;
alert(a); //0, =
alert(a); //function a(){ alert(' ') }, undefined , , !
var a = ' ';
function a(){ alert(' ') }
alert(a); //' ', =
alert(a); //function a(){ alert(' ') }, undefined , , !
a++;
alert(a); //NaN, ++
var a = ' ';
function a(){ alert(' ') }
alert(a) //' ', =
alert(a); //undefined
var a = 0;
alert(a); //0
function fn(){
alert(a); //undefined; ,
var a = 2;
alert(a); //2
}
fn()
alert(a); //0,fn a a
alert(a); //undefined
var a = 0;
alert(a); //0
function fn(){
alert(a); //0 js (var), ,
a = 2;
alert(a); //2
}
fn()
alert(a); //2,fn a
function fn(a){
alert(a); //undefined,JS var , fn --> var a;
a = 2;
alert(a); //2, , fn
}
fn()
alert(a); //
alert(a); // , <script> , , , , a,
alert(a); //undefined
var a = 0;
alert(a); //0
var a;
alert(a); //undefined, <script> a, , <script> , undefined
alert(a); // ,
var a;
この つの の いを ます.1 alert(a); //function a(){ alert(' ') }
2 function a(){ alert(' ') }
1 alert(a); //undefined, , var, undefined
2 var a = function (){ ' ' }
・