怎么可能在IfStatement 中宣告一個函式?因為根據 ecmascript 規范,那里只能有一個Statement。
if(運算式)陳述句
if ( 運算式 ) 陳述句 else 陳述句
和FunctionDeclaration不是宣告,而是宣告
所以也許我錯過了一些東西,或者瀏覽器現在無法實作這樣的東西,因為它可能會破壞在 if 陳述句中使用函式宣告的網站。
uj5u.com熱心網友回復:
這是不可能把一個函式宣告中的if說法。嘗試
if (true) function example() {}
在嚴格模式下 - 你會得到一個SyntaxError. 要在條件分支中宣告一個函式,您必須將它放在一個Block 中,它是一個Statement(通過BlockStatement)并且可以包含Declaration s(在StatementList 中)。
也許現在瀏覽器無法實作這樣的東西,因為它可能會破壞在 if 陳述句中使用函式宣告的網站。
確實是的。為了 Web 遺留兼容性,在 sloppy 模式下允許陳述句中的函式宣告if。不要寫那樣的代碼,但允許瀏覽器將其視為有效的。
uj5u.com熱心網友回復:
從規范:
在函式或腳本的頂層,內部函式宣告被視為 var 宣告。
沒問題,宣告串列項
https://tc39.es/ecma262/#prod-StatementListItem
在 ECMAScript 2015 之前,ECMAScript 規范沒有將 FunctionDeclaration 的出現定義為 Block 陳述句的 StatementList 的元素。但是,對這種形式的 FunctionDeclaration 的支持是一種允許的擴展,并且大多數瀏覽器托管的 ECMAScript 實作都允許它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353636.html
標籤:javascript ecmascript-6 ecma262
