【问题标题】:Javascript - Can there be 3 or more '===' in a single statement?Javascript - 单个语句中可以有 3 个或更多“===”吗?
【发布时间】:2014-01-16 08:11:27
【问题描述】:

例如,会

function myFunction() {
    if(var_1 === var_2 === var_3 === var_4) {
        return true;
    } else {
        return false;
    }
}

返回真假时

var_1 = true;
var_2 = true;
var_3 = true;
var_4 = true;

另外,函数“myFunction”会在什么时候返回

var_1 = false;
var_2 = false;
var_3 = false;
var_4 = false;

var_1 = "abc";
var_2 = "abc";
var_3 = "abc";
var_4 = "abc";

非常感谢!

【问题讨论】:

  • 当你尝试这些事情时会发生什么?在我看来,您自己的快速测试可以为所有这些问题提供答案。
  • 是的 .. 但在大多数情况下它不会达到您的预期:a === b === c 等效于 (a === b) === c,其中 === 的计算结果为 truefalse
  • @user2864740:关联性则相反。
  • @user2357112 呵呵,谢谢! (并更正)
  • 如果我记得,Python 的行为符合预期,但对于大多数语言,包括 Javascript,这将无法正常工作。

标签: javascript if-statement operator-keyword


【解决方案1】:

不,因为第一个 === 将等于 true(或 false),而不等于下一个变量。

所以var_1 === var_2 将是truefalse

然后它将结果与var_3 进行比较,例如true/false === var_3。这给出了真假的结果。然后将第二个结果与var_4 进行比较。

所以根据您的测试,这将是true

var_1 = "yes";
var_2 = "apple";
var_3 = "amazing";
var_4 = false;

我想这不是你想要的:)

【讨论】:

  • 凹凸。声名鹊起:D
  • @chris97ong 你好,克里斯。你会比我走得更远:)
【解决方案2】:

三个变量的情况会更容易处理。它将被解释为:

(a == b) == c

这将是:

(some boolean) == c

这可能不是您打算发生的。要解决此问题,请使用等式的传递性:

(a == b) && (b == c)

【讨论】:

  • “等式的传递性”- groovy :)
【解决方案3】:

在所有 3 个条件下,该函数都将返回 true..

是的,一个语句中可以有 3 个“===”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多