鍍金池/ 問(wèn)答/HTML/ js定義函數(shù)時(shí)可以不使用function關(guān)鍵字么?

js定義函數(shù)時(shí)可以不使用function關(guān)鍵字么?

最近在讀別人小程序代碼時(shí),發(fā)現(xiàn)js中在page內(nèi)的函數(shù)方法都沒(méi)有用function聲明,但是在es6規(guī)范中并沒(méi)有提出可以省略function呀,這是怎么回事?
圖片描述

回答
編輯回答
傲寒

es6的函數(shù)聲明

2018年4月9日 15:39
編輯回答
耍太極

es6規(guī)范還真的指定了可以省略function!

2017年5月7日 15:42
編輯回答
不將就

可以的。es6 就可以了,https://www.ecma-internationa...

對(duì)象字面量的定義:

ObjectLiteral[Yield] :
  { }
  { PropertyDefinitionList[?Yield] }
  { PropertyDefinitionList[?Yield] , }

每行之間是“或”的關(guān)系,翻譯過(guò)來(lái)就是:對(duì)象字面量(ObjectLiteral)由下面三種情況構(gòu)成:

  1. 左大括 + 右大括號(hào)
  2. 左大括 + 屬性定義列表 + 右大括號(hào)
  3. 左大括 + 屬性定義列表 + 逗號(hào) + 右大括號(hào)

我們繼續(xù)看屬性定義列表(PropertyDefinitionList):

PropertyDefinitionList[Yield] :
  PropertyDefinition[?Yield]
  PropertyDefinitionList[?Yield] , PropertyDefinition[?Yield]

屬性定義列表(PropertyDefinitionList)由下面 2 種情況構(gòu)成:

  1. 屬性定義
  2. 屬性定義列表 + 逗號(hào) + 屬性定義

這個(gè)是一個(gè)遞歸的定義。

我們繼續(xù)看屬性定義:

PropertyDefinition[Yield] :
  IdentifierReference[?Yield]
  CoverInitializedName[?Yield]
  PropertyName[?Yield] : AssignmentExpression[In, ?Yield]
  MethodDefinition[?Yield]   // <--- 這里

馬上就找到答案了,https://www.ecma-internationa...

MethodDefinition[Yield] :
  PropertyName[?Yield] ( StrictFormalParameters ) { FunctionBody }  // <--- 這里
  GeneratorMethod[?Yield]
  get PropertyName[?Yield] ( ) { FunctionBody }
  set PropertyName[?Yield] ( PropertySetParameterList ) { FunctionBody }
  PropertySetParameterList :
  FormalParameter

屬性名 + 左小括號(hào) + 參數(shù)列表(可為空) + 右小括號(hào) + 左大括號(hào) + 函數(shù)體 + 右大括號(hào)。

2018年8月17日 17:27
編輯回答
陪我終

沒(méi)事的時(shí)候多看看es6,里面有好多新的東西,es7也出現(xiàn)了

2017年10月7日 08:37