在 MDN 文档的“声明和声明”中提到:
\n\n\n术语“语句”和“声明”在 JavaScript 的正式语法中具有精确的含义,这会影响它们在代码中的放置位置。例如,在大多数控制流结构中,主体仅接受语句 \xe2\x80\x94,例如 if...else 的两个分支。如果使用声明而不是语句,则会出现语法错误。例如,let 声明不是语句,因此您不能将其纯粹形式用作 if 语句的主体。
\n
下面的代码会报错:
\nif(true) \n let x = 0;\nRun Code Online (Sandbox Code Playgroud)\n现在函数声明也只是声明吧?那么为什么下面的代码没有给出同样的错误呢?
\nif(true)\nfunction foo() {}\nRun Code Online (Sandbox Code Playgroud)\n javascript if-statement syntax-error language-lawyer conditional-statements
ES5将变量对象(VO)更改为词汇环境.这种变化的动机是什么,因为VO作为感知已经非常明显了?
在JavaScript中,全局变量也是window对象的属性.局部变量怎么样?它们是任何物体的属性吗?
例如:
var apple=3;
alert(apple); // 3
alert(window.apple); // same
thing();
function thing() {
var banana=4;
alert(banana); // 4
alert(thing.banana); // doesn’t work, of course
}
Run Code Online (Sandbox Code Playgroud)
是banana任何对象的属性
javascript ×3
ecmascript-3 ×1
ecmascript-5 ×1
if-statement ×1
properties ×1
syntax-error ×1
variables ×1