我刚写了一段代码,我做了一个基本的比较:
HTML是:
<input id="someInputField" />
Javascript是:
var someVariableThatIsANumber = 1123.23
if (someVariableThatIsANumber > $("someInputField").val()) {
// do something
}
代码有效,在某种意义上,如果someInputField的值是大于1123.23的数字,则返回TRUE,如果小于1123.23,则返回false。我的问题是:为什么?
我问,因为val() should return a string并且无法比较它。为什么会这样做?
答案 0 :(得分:3)
它返回一个String,它由JavaScript引擎隐式转换为正确的数值。
通常,JavaScript使用隐式转换来适应不同的类。
当您执行"something" + 1
时,情况相反。然后将1
转换为字符串。
答案 1 :(得分:0)
它的作用是因为当你将一个字符串与一个数字进行比较时,该字符串首先也被转换为一个数字用于该转换。
比较数字和字符串时,字符串将转换为a 数值。 JavaScript尝试转换字符串数字 字面值为数字类型值
小心不要将字符串与另一个字符串进行比较,因为"33"<"9"
为true
。
答案 2 :(得分:0)
===比较没有转换类型
==与转换类型进行比较