gpt4 book ai didi

javascript - 为什么我可以做 'if (a = 7) ...' 而不是 'if (var a = 7) ...' ?

转载 作者:行者123 更新时间:2023-11-30 07:03:21 24 4
gpt4 key购买 nike

为什么

if (prev = this.Prev()) {
...
}

工作但是

if (var prev = this.Prev()) {
...
}

不是吗? this.Prev() 是 Point 对象的一种方法,如果它存在则返回对前一个 Point 的引用,如果不存在则返回 false。我不想将变量声明为全局变量,也不想像这样冗长:

var prev = this.Prev();
if (prev) {
...
}

编辑:做我正在尝试的事情最优雅的方法是什么?

最佳答案

发生这种情况是因为 if statement需要一个表达式:

语法:

IfStatement :
if ( Expression ) Statement else Statement

var是一个声明,这就是为什么您会收到 SyntaxError 的原因。

您的第一个示例有效,因为赋值是一个表达式 ( AssignmentExpression )

编辑:让我引用这部分:

I don't want to declare the variable to be global

我理解您的担忧,对未声明标识符的赋值可能最终会在全局对象上创建一个属性,而且使用 ECMAScript 5th Strict Mode ,未声明的赋值将导致 ReferenceError,破坏您的代码

JavaScript 中的变量在实际代码执行之前声明,所有出现的var 语句都绑定(bind)到当前变量对象,并且它们是用 undefined 初始化的,你不能真正声明有条件的变量。

关于javascript - 为什么我可以做 'if (a = 7) ...' 而不是 'if (var a = 7) ...' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3486210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com