如何使情况成为真实的JAVASCRIPT [重复]

Posted

技术标签:

【中文标题】如何使情况成为真实的JAVASCRIPT [重复]【英文标题】:How to make the situation true JAVASCRIPT [duplicate] 【发布时间】:2019-08-20 03:40:21 【问题描述】:

我不知道这里缺少什么代码,因为条件语句让我很头疼。

添加缺少的代码,以便下面的条件评估为 TRUE 并打印“it works!”在控制台中。

if (num == 100 && num== 200 && num==300) 
    document.write('it works!');
 else 
    document.write('it doesnt');

【问题讨论】:

一个数字不能同时是100200 300 期待更多,更多的头痛:) 这是你的任务 LMAO!无论如何,是否应该在条件语句之前添加代码? @JackBashford : HMR 刚刚证明你错了 :)(见下文) 【参考方案1】:

如果这是真正的问题,您可以使用 valueOf:

    var Num = function() 
      this.values = [100, 200, 300];
      this.index = -1;
    ;
    Num.prototype.valueOf = function() 
      this.index++;
      return this.values[this.index];
    ;
    var num = new Num();
    if (num == 100 && num == 200 && num == 300) 
      console.log('it works!');
     else 
      console.log('it doesnt');
    

看起来 num 可能同时是 100、200 和 300,但 if 语句有 3 个表达式:num == 100 然后num == 200 然后num == 300。每次将 num 与强制类型的数字进行比较(使用 == 而不是 ===)时,将调用 valueOf,这会改变 num 对象实例的内部状态,因此下次比较时会产生不同的价值。

我不会使用类型强制比较 == 而是使用 ===,当您使用 linter 时,它通常会在使用 == 时抱怨,因为它可能会导致一些意外行为并使您的代码难以预测。

【讨论】:

哇,num 可以同时成为 100、200 和 300!扭曲但令人印象深刻的解决方案,请点赞 @JeremyThille Nina 实际上添加了一个指向类似“解决方案”的链接。 valueOf 和 toString 用于类型强制。 你反驳了常识。恭喜。 对了,我没注意到。这是一团糟【参考方案2】:

你需要使用logical OR ||,因为logical AND &&的条件永远不会是true,如果你取num的相同值。

if (num == 100 || num== 200 || num == 300) 

但在 javascript 中一切皆有可能,例如:Can (a== 1 && a ==2 && a==3) ever evaluate to true?

【讨论】:

【参考方案3】:

它一次不满足条件并打印“it doesn't”。 所以解决方案是这样的。 if(num==100 || num==200 || num==300)

【讨论】:

是的,但为什么呢?解决方案是什么? num 有一个值,并且您对三个不同的值使用 AND 运算符,这永远不会满足。 这就是原因,解决方案是什么?你要给出完整的答案,而不是只说“代码不起作用” 是的,我已经解释过了,有时您也应该考虑一下。所以解决方案是使用 OR 运算符 if(num==100 || num==200 || num==300) 很好,现在请编辑您的答案并使其完整,只有这样我才能给您点赞:)

以上是关于如何使情况成为真实的JAVASCRIPT [重复]的主要内容,如果未能解决你的问题,请参考以下文章

调用 $.get 方法时如何使 javascript 变量成为全局变量? [复制]

如何使我的单选按钮成为必需的[重复]

如何使 Mat-Table 中的列值成为超链接 [重复]

如何使MongoDB的列成为SQL Server中发生的主键,避免重复记录?

在这种情况下如何使 TextInput 成为一个单独的组件

如何在javascript中使作为数组元素的对象为空[重复]