2

我刚刚写了一段代码,我做了一个基本的比较:

HTML是:

<input id="someInputField" />

Javascript是:

var someVariableThatIsANumber = 1123.23
if (someVariableThatIsANumber > $("someInputField").val()) { 
   // do something
}

该代码有效,如果 someInputField 的值大于 1123.23 则返回 TRUE,如果小于 1123.23 则返回 false。我的问题是:为什么?

我问,因为val() 应该返回一个字符串并且无法比较它。为什么它和工作?

4

3 回答 3

3

它返回一个字符串,该字符串由 JavaScript 引擎隐式转换为适当的数值。

通常 JavaScript 使用隐式转换来适应不同的类。

当你这样做时,相反的情况也是如此"something" + 1。然后1转换为String。

于 2013-06-10T11:59:41.713 回答
0

它之所以有效,是因为当您将字符串与数字进行比较时,该字符串也会首先转换为数字以进行该转换。

来自MDN 的比较

比较数字和字符串时,字符串将转换为数字值。JavaScript 尝试将字符串数字文字转换为数字类型值

注意不要将一个字符串与另一个字符串按原样进行"33"<"9"比较true

于 2013-06-10T12:00:04.167 回答
0

=== 比较没有转换类型

== 与转换类型比较

于 2013-06-10T12:00:57.997 回答