javascript - 在 if 条件下创建变量时出现意外的标记 var

标签 javascript if-statement

我正在创建变量并在 for 语句中使用它

for(var i = 0; i < 10; i++) {
   console.log(i)
}

工作正常,结果为 1-10;

当我在 if 条件中写相同的内容时

if(var value = 10) {
   console.log("Evaluate");
}

结果是意外的 token 变量。 当我声明一个变量(var a = 10)时,导致同样的错误。有什么问题吗?

最佳答案

if 语句仅接受内部的表达式(计算结果为值的东西)。像 var value = ... 是一个语句 - 它不是计算一个值,而是一些事情(即创建一个局部变量)绑定(bind)到名称)。因此,由于 var value = ... 无法作为表达式进行计算,因此会引发错误。

有些事物既可以作为语句也可以作为表达式(例如函数)进行计算,但变量创建不是其中之一。

请注意,变量赋值可以在if内进行,因为赋值确实计算为分配的值:

var value;
if(value = 10) {
  console.log('value now has the value 10');
}

但这确实读起来很困惑 - 代码的读者可能会立即担心这是否是一个拼写错误。最好尽可能在 if 条件之外分配变量。

仅当您想要创建新变量时才使用var。如果您只是想检查一个变量(例如,检查名为value的变量是否为10),那么只需打印该变量名称,并使用比较运算符(===,而不是 =):

if (value === 10) {
  // do stuff
}

关于javascript - 在 if 条件下创建变量时出现意外的标记 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53236464/

相关文章:

java - 使用 equals 方法比较两个对象,Java

scala - scala : better approach? 中嵌套 "if"/"match"语句

javascript - if 语句简写 - 意外标记;

java - 简化 if 语句

mysql - 事件持续时间(从mysql中选择)

javascript - 当 Reactjs 组件中的 componentWillUnmount 时如何清除异步函数?

javascript - 我需要获得值的总和

javascript - Spring 和 React 集成

javascript - 如何在 JointJS 中交互式创建链接

javascript - 在 angularjs 函数中初始化谷歌地图 api