函數(shù)定義

2018-06-16 15:25 更新

語法

FunctionDeclaration : function Identifier ( FormalParameterListopt ) { FunctionBody } FunctionExpression : function Identifieropt ( FormalParameterListopt ) { FunctionBody } FormalParameterList : Identifier FormalParameterList , Identifier FunctionBody : SourceElementsopt

 語義

 產(chǎn)生式 FunctionDeclaration : function Identifier ( FormalParameterListopt ) { FunctionBody } 依照定義綁定初始化 (10.5) 如下初始化:

  1. 依照 13.2,指定 FormalParameterListopt 為參數(shù),指定 FunctionBody 為 body,創(chuàng)建一個(gè)新函數(shù)對(duì)象,返回結(jié)果。運(yùn)行中的執(zhí)行環(huán)境的 VariableEnvironment 傳遞為 Scope。如果 FunctionDeclaration 包含在 嚴(yán)格模式代碼 里或 FunctionBody 是 嚴(yán)格模式代碼 ,那么傳遞 true 為 Strict 標(biāo)志。

 產(chǎn)生式 FunctionExpression : function ( FormalParameterListopt ) { FunctionBody } 的解釋執(zhí)行如下:

  1. 依照 13.2,指定 FormalParameterListopt 為參數(shù),指定 FunctionBody 為 body,創(chuàng)建一個(gè)新函數(shù)對(duì)象,返回結(jié)果。運(yùn)行中的執(zhí)行環(huán)境的 LexicalEnvironment 傳遞為 Scope。如果 FunctionExpression 包含在 嚴(yán)格模式代碼 里或 FunctionBody 是 嚴(yán)格模式代碼 ,那么傳遞 true 為 Strict 標(biāo)志。

 產(chǎn)生式 FunctionExpression : function Identifieropt ( FormalParameterListopt ) { FunctionBody } 的解釋執(zhí)行如下:

  1. 令 funcEnv 為以運(yùn)行中執(zhí)行環(huán)境的 Lexical Environment 為參數(shù)調(diào)用 NewDeclarativeEnvironment 的結(jié)果。
  2. 令 envRec 為 funcEnv 的環(huán)境記錄項(xiàng)。
  3. 以 Identifier 的字符串值為參數(shù)調(diào)用 envRec 的具體方法 CreateImmutableBinding(N)。
  4. 令 closure 為依照 13.2,指定 FormalParameterListopt 為參數(shù),指定 FunctionBody 為 body,創(chuàng)建一個(gè)新函數(shù)對(duì)象的結(jié)果。傳遞 funcEnv 為 Scope。如果 FunctionExpression 包含在嚴(yán)格模式代碼 里或 FunctionBody 是 嚴(yán)格模式代碼 ,那么傳遞 true 為 Strict 標(biāo)志。
  5. 以 Identifier 的字符串值和 closure 為參數(shù)調(diào)用 envRec 的具體方法 InitializeImmutableBinding(N,V)。
  6. 返回 closure。

 可以從 FunctionExpression 的 FunctionBody 里面引用 FunctionExpression 的 Identifier,以允許函數(shù)遞歸調(diào)用自身。然而不像 FunctionDeclaration,F(xiàn)unctionExpression 的 Identifier 不能被范圍封閉的 FunctionExpression 引用,也不會(huì)影響它。

 產(chǎn)生式 FunctionBody : SourceElementsopt 的解釋執(zhí)行如下:

  1. 如果這個(gè) FunctionBody 所在 FunctionDeclaration 或 FunctionExpression 包含在嚴(yán)格模式代碼內(nèi),或其 SourceElements 的指令序言 (14.1) 包含一個(gè) use strict 指令,或滿足 10.1 的任何條件,那么其代碼是嚴(yán)格模式代碼。如果 FunctionBody 的代碼是嚴(yán)格模式代碼,SourceElements 的解釋執(zhí)行為以下的嚴(yán)格模式代碼步驟。否則,SourceElements 的解釋執(zhí)行為以下的非嚴(yán)格模式步驟。
  2. 如果 SourceElements 是當(dāng)前的,則返回 SourceElements 的解釋執(zhí)行結(jié)果。
  3. 否則返回 (normal, undefined, empty)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)