相关疑难解决方法(0)

为什么在 JavaScript 中将函数声明作为 If 语句主体不会导致错误?

在 MDN 文档的“声明和声明”中提到:

\n
\n

术语“语句”和“声明”在 JavaScript 的正式语法中具有精确的含义,这会影响它们在代码中的放置位置。例如,在大多数控制流结构中,主体仅接受语句 \xe2\x80\x94,例如 if...else 的两个分支。如果使用声明而不是语句,则会出现语法错误。例如,let 声明不是语句,因此您不能将其纯粹形式用作 if 语句的主体。

\n
\n

下面的代码会报错:

\n
if(true) \n  let x = 0;\n
Run Code Online (Sandbox Code Playgroud)\n

现在函数声明也只是声明吧?那么为什么下面的代码没有给出同样的错误呢?

\n
if(true)\nfunction foo() {}\n
Run Code Online (Sandbox Code Playgroud)\n

javascript if-statement syntax-error language-lawyer conditional-statements

7
推荐指数
1
解决办法
137
查看次数

为什么变量对象在ES5中被改为词汇环境?

ES5将变量对象(VO)更改为词汇环境.这种变化的动机是什么,因为VO作为感知已经非常明显了?

javascript lexical-scope ecmascript-5 ecmascript-3

5
推荐指数
1
解决办法
382
查看次数

JavaScript变量与属性

在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 variables properties

4
推荐指数
1
解决办法
212
查看次数