javascriptの2つの定義関数方式の違いと関数のプリコンパイル効果
701 ワード
javascriptで関数を定義する方法は以下の2つがあることを知っています.
function mm(){}
この形式は一つの関数を宣言するもので、varが一つの変数機構を宣言するのと同じで、シナリオは解釈実行前にプリコンパイル処理を行います.
var mm=function(){}
この形式は一つの変数に対して値を賦課し、プリコンパイルもしますが、ただ事前変数にメモリ空間を割り当てるだけで、初期化はしていません.
コード1:
コード2:
Javascriptは完全に順番に解釈して実行するのではなく、説明する前にJavascriptを一回「プリコンパイル」します.最初の方法で定義された関数は、javascriptが関数定義の前に使用することができます.第二の方式で定義された関数は、その値がundefinedであるため、事前に使用できない.
function mm(){}
この形式は一つの関数を宣言するもので、varが一つの変数機構を宣言するのと同じで、シナリオは解釈実行前にプリコンパイル処理を行います.
var mm=function(){}
この形式は一つの変数に対して値を賦課し、プリコンパイルもしますが、ただ事前変数にメモリ空間を割り当てるだけで、初期化はしていません.
コード1:
alert(a);// a
alert(b);//undefined
alert(c);//JS :“c”
function a()
{
}
var b = function(){};
コード2:
func(); //2
func = function() {alert(1);};
func(); //1
function func() {alert(2);};
func(); //1
表示:Javascriptは完全に順番に解釈して実行するのではなく、説明する前にJavascriptを一回「プリコンパイル」します.最初の方法で定義された関数は、javascriptが関数定義の前に使用することができます.第二の方式で定義された関数は、その値がundefinedであるため、事前に使用できない.