我不清楚以下代码到底出了什么问题 我想要求用户输入文本字符串并将其与另一个文本字符串进行比较。然后通知用户他的字符串是按字母顺序高于还是低于存储的值。当我在jsfiddle中测试时,我只收到第二条警报消息。为什么会这样?
这是我的代码:
var string1;
var string2;
string1 = prompt("Tell me your string1?");
string2 = "green";
if ("string1" > "string2")
alert("Your string is alphabetically higher");
else
alert("Your string is not alphabetically higher");
答案 0 :(得分:1)
你根本没有比较你的变量,而是实际的字符串“string1”& “字符串2”。这就是为什么你总是得到第一个警报,因为"string1" > "string2"
lexicographicaly(按字母顺序排列)。
使用:
if (string1 > string2)
这将修复您的代码并使其正常工作,但在javascript中比较字符串的更安全和更好的方法是使用localeCompare
:
string1.localeCompare(string2);
/* Returns:
0: equal
-1: string1 < string2
1: string1 > string2
*/
答案 1 :(得分:0)
localeCompare()方法返回一个数字,指示引用字符串是在排序顺序之前还是之后出现,或者与排序顺序中的给定字符串相同。
string1.localeCompare(string2)
答案 2 :(得分:0)
如果你删除变量名称周围的引号,它将按照宣传的方式工作。否则你要比较两个字符串而不检查变量。
因为“string1”&gt; “string2”总是假的,你总是进入你发布的代码中的else块
答案 3 :(得分:0)
var stringA = 'something';
var stringB = 'foobar';
var compareResult = stringA.localeCompare(stringB);
if (compareResult < 0) {
console.log('a is before b');
} else if (compareResult > 0) {
console.log('a is after b');
} else {
console.log('a equals b');
}
答案 4 :(得分:0)
正如Idos所提到的,您正在创建两个新字符串并在if语句中进行比较,而不是用户提出的字符串。
"string1" > "string2"
// This compares the values "string1" and "string2"
string1 > string2
// This compares the contents of the variables string1 and string2,
// in your case the user input and "green"