Javascript 计算两个变量并与数字进行比较
Javascript代码 我在压缩两个变量,并用一个字符串进行比较 为什么警报是真的?为什么不是强迫Javascript 计算两个变量并与数字进行比较,javascript,Javascript,Javascript代码 我在压缩两个变量,并用一个字符串进行比较 为什么警报是真的?为什么不是强迫 var str1 = "2"; var str2 = "3"; var res = str1 + str2 // return 23 console.log(res) // 23 console.log("100") // 100 alert(res > "100") // alerts true instead of false 警报为tru
var str1 = "2";
var str2 = "3";
var res = str1 + str2 // return 23
console.log(res) // 23
console.log("100") // 100
alert(res > "100") // alerts true instead of false
警报为
true
,因为“23”在字典上大于“100”(“2'>“1”)
您可以使用parseInt
将字符串转换为数字:
alert(parseInt(res) > 100);
res
中的值是一个字符串。字符串中的“23”大于“100”(查看第一个字符)。因为您正在比较字符串。“100”比“23”低,因为“1”您的警报正在比较字符串和字符串
尝试:
alert(res>100)
您可以临时将字符串更改为其数字表示形式,即23
和100
,并使用比较运算符。在值前面加上+
将其更改为数值,或者使用parseInt()
:
var str1=“2”;
var str2=“3”;
var res=str1+str2//返回23
console.log(res)//23
console.log(“100”)//100
警报(+res>+“100”)
res的值是“23”
而不是23
。这意味着它是一个字符串,因此,当您进行警报
比较时,它会比较每个字符串的第一个数字,2>1,即true
为了进一步回答您的问题“为什么javascript不是强制的”,我想引用James Thorpe的一条评论
“双方都是线——没有什么可以强迫的”
下面是一个代码示例。
console.log(23>“100”)//错误
console.log(“23”>“100”)//true
至于“为什么它不是强制的?”——因为在这两种情况下,两个操作数都是字符串,而且+
和
都是对字符串的有效操作
(使用-
(减法)将导致对数字进行隐式强制,因为它对字符串没有意义,但串联和加法使用相同的运算符。欢迎使用JavaScript!)您正在将字符串与字符串进行比较。@ParshuramKalvikatte两边都是字符串-没有什么可强制的。@ParshuramKalvikatte不。如果“强制”的意思是“即使没有任何东西指向那个方向,也可以推断出我的意思”。JS有决定操作类型的规则,这是正确的-但是(string)>(string)由这些规则作为字符串比较处理。