Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算两个变量并与数字进行比较_Javascript - Fatal编程技术网

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

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

警报为
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)由这些规则作为字符串比较处理。