2015-10-25 53 views
-1

我想比较用户提示的两个字符串。在JavaScript中比较字符串与!==

如果我做 (巴== “是” ||吧== “无”)

它工作正常,但如果我用!==

(吧!==“是“||吧==! ”无“)

程序返回总是

警报(” 第二个值必须是\ '是\' 或\ '无\'“);

即使当我介绍是或否作为第二个值。

do{ 
    var values = window.prompt("Introduce a title, and \'yes\' o \'no\' separted with a comma."); 
    var longValues = values.length; 
    var comma = values.indexOf(","); 
    var title = values.substr(0,comma); 
    var bar = values.substr(comma+1,longValues); 
    var longTitle = title.length; 

    if (longTitle <3 || longTitle >30){ 
    alert("The title must be greater than 3 characters and less than 30 characters"); 
} 
else if (bar !== "yes" || bar !== "no"){ 
    alert("The second value must be \'yes\' or \'no\'"); 
} 
else{ 
    alert("Correct!"); 
} 
}while((longTitle <3 || longTitle >30) && (bar !=="yes" || bar !=="no")) 
+0

从逻辑上说,这是完全正确的。无论是 - *不是*“是”还是*不是*“否” - 总是会成为真实的(也可能是两者)。 – usr2564301

回答

3

您的情况需要是AND而不是OR。更改

if (bar !== "yes" || bar !== "no") 

if (bar !== "yes" && bar !== "no") 

如果您正在使用或,你问你的代码,如果bar不等于yesbar不等于no。如果bar的值是yes,那么第一个条件是false,但第二个条件是true,所以结果是true。如果barno也是同样有效 - 在这种情况下,第一个条件为true,第二个条件为false,因此结果也为true

你想要什么,而不是当baryes以及当barno执行代码。