Concat两个变量并与数字比较

时间:2018-08-20 14:23:56

标签: 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

8 个答案:

答案 0 :(得分:2)

res中的值是一个字符串。在字符串中,“ 23”大于“ 100”(从第一个字符开始)。

答案 1 :(得分:1)

为进一步回答您的问题“为什么不使用JavaScript强制”,我想引用James Thorpe的评论

“双方都是弦乐器-没什么可胁迫的”

这是一个代码示例。

console.log (23 > "100")  // false
console.log ("23" > "100")  // true

第一个console.log将数字与字符串进行比较-javascript强制。

第二个console.log将字符串与字符串进行比较-没什么可强迫的

答案 2 :(得分:0)

警报为true,因为在字典上'23'大于'100'('2'>'1')。

您可以使用parseInt将字符串转换为数字:

alert(parseInt(res) > 100);

答案 3 :(得分:0)

因为您正在比较字符串。 “ 100”比“ 23”低,因为“ 1” <“ 2”。 如果要进行数值比较,则应解析为int,如@ jh314答案所示。

答案 4 :(得分:0)

您可以暂时将字符串更改为其数字表示形式,即23100,然后使用比较运算符。在值前加上+即可将其更改为数字值,或使用parseInt()

var str1 = "2";
var str2 = "3";
var res = str1 + str2 // return 23
console.log(res) // 23 
console.log("100") // 100
alert(+res > +"100")

答案 5 :(得分:0)

res的值为"23"而不是23。这意味着它是一个字符串,因此当您进行比较时,alert会比较每个字符串的第一位2 > 1,即true

答案 6 :(得分:0)

至于“为什么不强制?”-因为两种情况下两个操作数都是字符串,并且因为+>都是对字符串的有效操作。

(使用-(减法)会导致对数字进行隐式强制转换,因为它对字符串没有意义,但是连接和加法使用相同的运算符。欢迎使用JavaScript!)

答案 7 :(得分:-1)

您的警报正在比较一个字符串和一个字符串。

尝试:alert(res > 100)