如何使情况成为真实的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');
【问题讨论】:
一个数字不能同时是100
、200
、和 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 变量成为全局变量? [复制]