当前位置: 首页 > 面试题库 >

如果没有括号则让它进入

卜鹏
2023-03-14
问题内容
if (true) {
  let x = 5
}

可以正常工作(没有语法错误),但是

if (true) let x = 5

抛出SyntaxError: Unexpected strict mode reserved wordNode 4.1.0和babel

这是预期的行为吗?我知道这是一个愚蠢的例子。我只是想知道这是否是错误。


问题答案:

是的,这是预期的行为。语句的生产规则if

 if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return]

let声明不是aStatement,因此不允许在以下位置进行声明:

Statement[Yield, Return] :
    BlockStatement[?Yield, ?Return]
    VariableStatement[?Yield]
    EmptyStatement
    ExpressionStatement[?Yield]
    IfStatement[?Yield, ?Return]
    BreakableStatement[?Yield, ?Return]
    ContinueStatement[?Yield]
    BreakStatement[?Yield]
    [+Return] ReturnStatement[?Yield]
    WithStatement[?Yield, ?Return]
    LabelledStatement[?Yield, ?Return]
    ThrowStatement[?Yield]
    TryStatement[?Yield, ?Return]
    DebuggerStatement

Declaration[Yield] :
    HoistableDeclaration[?Yield]
    ClassDeclaration[?Yield]
    LexicalDeclaration[In, ?Yield]

LexicalDeclaration[In, Yield] :
    LetOrConst BindingList[?In, ?Yield] ;


 类似资料:
  • 问题内容: 真正想知道但从未发现的是PHP中的快捷方式。 我目前正在用一个循环在一个函数内编码一个函数。我试图省略花括号,就像您在if / else控制结构中所做的那样,它可以正常工作。没有错误。 现在,我尝试以相同的方式使用它,但在其中放置了一个if / else块。再次,工作,没有错误。 然后,我以为“这为什么起作用?” 省略了分号。还在工作。因此,我尝试在ifeach循环中使用if / el

  • 我希望修改 VS Code 的缩进行为,以便在键入如下行后按 Enter 键: 它将缩进到左括号的级别,这样我就可以轻松地将代码格式化如下: 我希望它也适用于开放方括号和花括号: 我希望我使用的几乎所有语言都有这种行为,尽管在C或C#中使用大括号行为是不必要的(甚至可能是不可取的)。 这与Sublime文本的设置非常相似。 有什么办法可以做到这一点?如果没有设定,我愿意做任何必要的修改。我也乐于接

  • 我有一个长字符串,只要逗号不在方括号或圆括号内,我想通过用逗号将其拆分来将其设置为数组。我已经尝试了一些变化,但没有得到我想要的。。。 例1: 例2:

  • 问题内容: 尝试访问API时,必须像这样解析JSON数组 但是当我在做下面的代码 它返回不带方括号的json数组,如下所示 我已经花了数小时试图找出解决方法,却想不出解决方案 问题答案: 您需要将其他东西包装起来: 如果我们使用等效的PHP 5.4数组语法,这将更容易理解: 将此与JSON进行比较: 唯一要说明的是,为什么一个PHP数组保留为JSON 数组,而另两个数组转换为对象。但是文档已经这样

  • 当使用Arrays.ToString时,为什么输出打印在方括号内?如果我不想打印方括号,我需要做什么?

  • 我试图匹配,使用正则表达式,所有逗号(后跟一个空格):在任何括号或方括号之外,即逗号不应该包含在括号或方括号中。 目标字符串是。在这种情况下,它应该匹配第一个逗号和最后一个逗号(介于和之间,和)。 所以我可以拆分分成,and,不会因此而使括号/括号不平衡。 为此,似乎很难单独使用正则表达式。有没有其他办法解决这个问题? 我使用的正则表达式: 但是这个表达式将匹配另外两个不应该匹配的逗号(第二个和第