JavaScript:String与numeric比较
我们知道,默认情况下,下面的“obj”是字符串。如果不使用“parseInt”,JavaScript如何将其与数字进行比较JavaScript:String与numeric比较,javascript,html,string-comparison,autoboxing,type-conversion,Javascript,Html,String Comparison,Autoboxing,Type Conversion,我们知道,默认情况下,下面的“obj”是字符串。如果不使用“parseInt”,JavaScript如何将其与数字进行比较 obj = document.frm.weight.value; if( obj < 0 || obj > 5 ){ alert("Enter valid range!"); return false; } obj=document.frm.weight.value; 如果(obj5){ 警报(“输入有效范围!”); 返回false; } 如果
obj = document.frm.weight.value;
if( obj < 0 || obj > 5 ){
alert("Enter valid range!");
return false;
}
obj=document.frm.weight.value;
如果(obj<0 | | obj>5){
警报(“输入有效范围!”);
返回false;
}
如果
的一个操作数是数字,则另一个操作数将被强制转换为数字
alert("3" > 3); // false
alert("3.5" > 3); // true
编辑并进一步解释:
如果无法将另一个参数转换为数字,则将其转换为名为NaN
的特殊值-缩写表示“非数字”。NaN
值有一个特殊属性,它是绝对不可比较的-如果其中一个参数是NaN
,则所有关系运算符(如
和=
)都将返回false
alert("" > 3); // false
alert("3.5?" > 3); // false
alert({} > 3); // false
另外,请注意,在第二行中,如果我们使用
alert(parseInt("3.5?") > 3);
它将向true
发出警报,因为parseInt
从字符串“3.5”
中读取“3.5”
,然后在“?”
处停止读取,因此计算结果为3.5
。但是,
alert("3.5?" > 3);
返回
false
,因为从string
到number
的转换不像parseInt
那样仁慈。由于“3.5”
实际上不是一个数字,因此它被强制转换为NaN
如果
的一个操作数是数字,则另一个操作数将强制转换为数字
alert("3" > 3); // false
alert("3.5" > 3); // true
alert("" > 3); // false
alert("3.5?" > 3); // false
alert({} > 3); // false
编辑并进一步解释:
如果无法将另一个参数转换为数字,则将其转换为名为NaN
的特殊值-缩写表示“非数字”。NaN
值有一个特殊属性,它是绝对不可比较的-如果其中一个参数是NaN
,则所有关系运算符(如
和=
)都将返回false
alert("" > 3); // false
alert("3.5?" > 3); // false
alert({} > 3); // false
另外,请注意,在第二行中,如果我们使用
alert(parseInt("3.5?") > 3);
它将向true
发出警报,因为parseInt
从字符串“3.5”
中读取“3.5”
,然后在“?”
处停止读取,因此计算结果为3.5
。但是,
alert("3.5?" > 3);
返回
false
,因为从string
到number
的转换不像parseInt
那样仁慈。由于“3.5”
实际上不是一个数字,它被强制转换为NaN
,字符串将使用任意规则强制转换为一个数字。通常,您会看到如下规则:
alert("" > 3); // false
alert("3.5?" > 3); // false
alert({} > 3); // false
- 如果字符串以
开头,则将其视为十六进制数0x
- 如果字符串以
开头,则将其视为八进制数。(并非在所有浏览器中)0
- 否则,将其视为十进制
9
或0
(因为9不是有效的八进制数字)
通常,在将字符串与数字进行比较时,应始终使用基数参数
10
手动调用parseInt
。这样,就不会有什么意外了。字符串将使用任意规则转换为数字。通常,您会看到如下规则:
- 如果字符串以
开头,则将其视为十六进制数0x
- 如果字符串以
开头,则将其视为八进制数。(并非在所有浏览器中)0
- 否则,将其视为十进制
9
或0
(因为9不是有效的八进制数字)
通常,在将字符串与数字进行比较时,应始终使用基数参数10
手动调用parseInt
。这样,就不会有什么意外了。作为一种实现,Javascript将遵循Ecma-262的11.8.5一节中定义的抽象关系比较算法。首先,Javascript将对两个操作数应用内部运算符
ToPrimitive
,该运算符必须根据传递给它的参数返回一个基元值(未定义、布尔、字符串、空或数字)。如果原语值被传递给ToPrimitive
则返回值是传递给运算符的参数值,如果它是一个对象,则调用Javascript中所有对象的内部方法,则返回值是[[DefaultValue]]。
此方法负责返回对象表示的基元类型。根据代码类型,此方法可以调用对象的toString
或valueOf
方法
例如:
希望这有助于澄清一些事情 作为一种实现,Javascript将遵循Ecma-262的11.8.5一节中定义的抽象关系比较算法。首先,Javascript将对两个操作数应用内部运算符
ToPrimitive
,该运算符必须根据传递给它的参数返回一个基元值(未定义、布尔、字符串、空或数字)。如果原语值被传递给ToPrimitive
则返回值是传递给运算符的参数值,如果它是一个对象,则调用Javascript中所有对象的内部方法,则返回值是[[DefaultValue]]。
此方法负责返回对象表示的基元类型。根据代码类型,此方法可以调用对象的toString
或valueOf
方法
例如:
希望这有助于澄清一些事情 如果另一个可以转换成一个数字,即
(“a”>5)| |(“a”<5))
是f