javascriptの変数定義と運行メカニズム
1307 ワード
定義と実行は2つの概念である.全部「=」で操作しますが.
ただし、定義時にはメモリに何も生成されていません.
実行時のみメモリにオブジェクトが生成されます.
定義だけで実行されていない場合、他の場所で実行されている関数参照の場合、undefinedメッセージが表示されます.
「=」操作子について:
1、宣言変数(直接量):
2、宣言関数:
fnの値はあります.ただし、fn内部の値はオブジェクトを生成していません.関数が動作しないからです.
どのように関数を実行しますか?fn()
また、
定義してすぐ実行できる書き方:
1、例えばalert()など、すぐに実行できる関数です.
2、(function(){}();
定義と運転の仕組み
==============================================================================================================================
関数内部で定義されている変数は、まず定義された部分を解析して実行します.
これはjavascriptのhoisting特性です.
ただし、定義時にはメモリに何も生成されていません.
実行時のみメモリにオブジェクトが生成されます.
定義だけで実行されていない場合、他の場所で実行されている関数参照の場合、undefinedメッセージが表示されます.
「=」操作子について:
1、宣言変数(直接量):
var a = 10;
作用:直接量定義はすぐ実行されます.2、宣言関数:
var fn = function(){
return new Date().getTime();
}
役割:定義だけで実行しません.fnの値はあります.ただし、fn内部の値はオブジェクトを生成していません.関数が動作しないからです.
どのように関数を実行しますか?fn()
また、
定義してすぐ実行できる書き方:
1、例えばalert()など、すぐに実行できる関数です.
2、(function(){}();
定義と運転の仕組み
==============================================================================================================================
関数内部で定義されている変数は、まず定義された部分を解析して実行します.
これはjavascriptのhoisting特性です.
a =20;
c = 0;
fnt = function(a,c){
var d = function(){
c = a + b;
return c;
}
var b = 20;
var a = 10;
console.log(d()); // 30
}
fnt(a,c);
//d , , ( ), 30
a =20;
c = 0;
fnt = function(a,c){
var b = 20;
c = a + b;
var a = 10;
console.log(c); // 40
}
fnt(a,c);
//c , , c=40;
--