學習js函式 函式定義

2022-03-06 12:53:19 字數 1509 閱讀 9112

函式的定義方法有三種

1.函式表示式

2.函式宣告

3,new function建構函式

這邊主要看下函式表示式和函式宣告

函式表示式(未省略標誌的)

var alertname = function

namealert(name);

alertname("博主");

函式表示式(省略標誌的)

var alertname = function

(name);

alertname("博主");

函式宣告

function

namealert(name);

namealert(「博主」);

函式宣告和函式表示式的關係是非常微妙的。

1.函式宣告 必須始終帶有乙個識別符號(identifier),也就是我們所說的函式名,而函式表示式則可以省略。

2.ecmascript通過上下文來區分兩者。

假如 function foo(){} 是乙個賦值表示式的一部分,則認為它是乙個函式表示式。而如果 function foo(){} 被包含在乙個函式體內,或者位於程式(的最上層)中,則將它作為乙個函式宣告來解析。

我們來看幾個例子

function foo(){}; //

宣告,因為它是程式的一部分

var bar = function foo(){}; //

表示式,因為它是賦值表達(assignmentexpression)的一部分

newfunction bar(){}; //

表示式,因為它是new表示式(newexpression)的一部分

(function

(); //

宣告,因為它是函式體(functionbody)的一部分

})();

(function foo(){})這也是函式表示式,因為在它被包含在一對圓括號中的函式,在其上下文環境中,()構成了乙個分組操作符,而分組操作符只能包含表示式

這樣就可以改乙個自執行函式,例如(function foo(){})

();

3.函式宣告和函式表示式還有個重要的區別:函式宣告總是在作用域開始時先行解析,而函式表示式只會在遇到時才開始運算;

舉個例子

saytruth();

function

saytruth()

saytruth();

var saytruth=function

()

上面第乙個由於函式宣告能提前解析(在瀏覽器預執行**的時候就執行了,在執行**的時候就不執行了),所以能正常輸出myvin is handsome.而第二個是不能正常輸出的。事實上var 宣告變數的話 變數被提前宣告了,只是沒有初始化而已

4.ecmascript規範中表示,函式宣告語句可以出現在全域性**中,或者內嵌在其他函式中,但是不能出現在迴圈、條件判、或者try/finally以及with語句中。這時候我們可以使用函式表示式

js函式 函式的定義

函式的定義 函式是被設計為執行特定任務的 塊。函式會在某 呼叫它時被執行。function getnumber 引數 1 引數 2 getnumber 定義函式名有以下幾點要注意 下面舉個呼叫函式的例子 定義乙個函式 命名為 getnumber 採用駝峰命名法第二個字母用大寫 function ge...

js函式定義方法

其語法為 function functionname 首先是function關鍵字,然後是函式名,其重要特徵是函式宣告提公升,即在執行 之前會先讀取函式宣告,使其在讀取任何 之前可用,這就意味著可以把函式放在呼叫它的語句之後 該方法有不同的語法形式 var functionname function...

js函式定義方法

其語法為 function functionname 首先是function關鍵字,然後是函式名,其重要特徵是函式宣告提公升,即在執行 之前會先讀取函式宣告,使其在讀取任何 之前可用,這就意味著可以把函式放在呼叫它的語句之後 該方法有不同的語法形式 var functionname function...