var a = $('.box').width();
var b = $(document).height();
现在,假设 124px,是一个int
或string
?
到目前为止,我已经通过反复试验做到了这一点,但现在我很想知道为什么if (b < 20)
需要parseInt
计算var c = a + b
. 这是为什么?
var a = $('.box').width();
var b = $(document).height();
现在,假设 124px,是一个int
或string
?
到目前为止,我已经通过反复试验做到了这一点,但现在我很想知道为什么if (b < 20)
需要parseInt
计算var c = a + b
. 这是为什么?
注意:出于本问题的目的,我假设a
and是类似andb
的字符串。实际上会返回(例如,如果您的元素是 123 像素宽),所以在这种情况下是无关紧要的。"10"
"20"
$('.box').width()
123
parseInt
因为在
a + b
如果您不使用parseInt
,那么 JavaScript 将假定您想要连接字符串(因为+
连接重载)。但是,当您使用
b < 20
JS 知道你不能有“小于 20 的字符串”,因为这没有任何意义,所以它会自动转换为数字。
我们没有。
.width()
并height()
返回数字,而不是字符串,因此不需要使用parseInt(...,10)
. 我不知道你指的“我们”是谁,但它不包括正确使用 jQuery 的人。
在这个网站上尝试一下——打开一个控制台,然后输入var d = jQuery("div"); console.log(typeof d.height(), typeof d.width(), d.height() + d.width());
,你会看到 [number]、[number] 和正常数字相加的结果。
因为当您使用 < 运算符时,只有数字更大或更小才有意义,但是对于“+”,在 javascript 中它也可以用于连接字符串,例如:“30”+“20”=“3020”和 30+20=50
注意:@Mike Poxman Kamerman 是对的,在大多数情况下它可以在没有 parseInt 的情况下工作,因为 jquery 函数的宽度和高度返回浮点数,但这是正确的做法,因为 javascript 过去非常严格,并且在像旧 IE 这样的浏览器中它无法工作.
当您比较字符串和数字时,必须将一个转换为另一个的类型才能进行比较。该字符串将隐式转换为数字。
当您将+
运算符与两个字符串一起使用时,无需进行转换即可进行操作。它只会连接字符串,但如果您想使用运算符进行加法而不是连接,那么您需要先将字符串显式转换为数字。