在javascript中,“声明位置”是什么?

In javascript, what are the “statement positions”?

我在本文中读到函数声明只能出现在语句位置。 我想知道这些"声明立场"是什么。


what are these"statement positions".

在代码中放置声明有效的位置。

句法结构分为几组,其中一组是语句。另一大组是表达。一般来说,你可以考虑那些表达式产生值之间的差异,而语句描述纯粹作为"副作用"做什么。

例如,if语句的结构是

1
if (<expression>) <statement>

if语句的条件需要是一个表达式,而body需要是一个语句。语句永远不能放在表达式的位置,因为它不会产生值。

例如,加法运算符定义为

1
<expression> + <expression>

由于if语句不是表达式,因此您无法做到

1
42 + if(...) {}

要了解有关哪些语句和表达式可用的更多信息,您可以查看规范,但不一定非常容易阅读。 YDKJS - 语法可能更容易理解。

I read that function declarations can appear only in statement position.

它实际上比那复杂一点。函数声明不是语句,它们是声明。官方声明仅在全局范围的顶级和函数声明中有效。但是,大多数环境允许在其他地方进行函数声明,遗憾的是以不同的方式评估这些情况。

因此,ECMAScript 6添加了兼容性规则来解释这种行为,但它不是应该依赖的东西。另请参阅为什么条件块中的函数声明在Chrome中升级到功能范围而不是Firefox? 。

当文章说"函数声明是一个声明。"时,那肯定是一种简化。