【问题标题】:Comparing two variables JavaScript [closed]比较两个变量 JavaScript [关闭]
【发布时间】:2019-09-29 17:16:21
【问题描述】:

我是编程和 JavaScript 新手,所以如果这是一个愚蠢的问题,请多多包涵。

我初始化了两个变量

let firstName = "blah";
let FirstName = "bleh";

当我在下面编写 if 语句时,我希望输出“正确”,因为变量名称不同(区分大小写),但我得到“boink”。谁能解释一下这里发生了什么?

if (firstName = FirstName) {
    console.log('boink')
} else {
    console.log('right on')
}

【问题讨论】:

  • 正如已经写的那样,只是为了详细说明为什么它如下所示。 = 意味着现在firstName 将采用FirstName 的值,而=== 是一个精确的比较(内存中的类型和位置),这意味着它在问问题“firstName 是否与 FirstName 相同? "和== 是一个近似的比较,在你的情况下这无关紧要。
  • @Michael 你有点误解=== - 更多细节请看this。它与内存中的位置没有任何关系。
  • @Michael:那是给 Swift 的?这个问题是关于 JavaScript 的。
  • @Erik Allik 在 JS 中不一样

标签: javascript let


【解决方案1】:

谁能解释一下这里发生了什么

实际上firstName = FirstName 是一个Assignment 表达式,它将返回右侧的值"bleh",这是真实值。所以第一个块被执行了

您正在使用赋值运算符,您需要使用比较运算符(=====

let firstName = "blah";
let FirstName = "bleh";

if (firstName === FirstName) {
    console.log('boink')
}
else {
    console.log('right on')
}

【讨论】:

  • 为什么会返回右边的值?它不应该像空字符串或未定义一样返回吗? +1
  • @k3lly.dev 在上面的sn-p中尝试使用console.log(firstName = FirstName)
  • 我知道确实如此,但由于控制台中的变量定义返回undefined,我只是对这种行为感到好奇。打算做一些研究。
  • @k3lly.dev 见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…并阅读第一行赋值操作计算为赋值
  • 感谢@MaheerAli 的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 2022-11-22
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多