JavaScript在进行 “==” 判断时会进行一些隐式转化, 但是如果使用严格比较“===”来比较这两个不同类型的对象,就会判断失败。
let number1 = 20;
let number2 = "20";
console.log(number1 == number2); //true
console.log(number1 === number2); //false
现在在实际开发中一般推荐使用“===”来进行判断,因为JavaScript中的隐式转换太多了,使用严格相等来判断会使得代码更加稳定,可靠。比如对false的判断,如果不使用“===”来进行判断,这些值都会被被认为是false:
false 0 " null undefined
所以,在使用“===”之前需要转换一下变量的类型。今天先总结一下JavaScript中将字符串转换为数字的几种方法。
parseInt(string)方法能将字符串转换为整数。 此方法接受两个参数,第一个参数是要解析的字符串,而第二个参数是radix, 表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
let string = "42wisdom";
let integer = parseInt(string, 10);
console.log(integer); // 42
parseFloat(string) 方法将字符串转换为带浮点数的数字(带小数点的数字)。该方法只有一个参数,如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。
let string = "33.4so333meRandomStuff";
let pointNum = parseFloat(string);
console.log(pointNum);
let string1 = "234";
let string2 = "0.000003320";
let string3 = "23px";
let etring4 = "wisdom";
console.log(string1 * 1); // 234
console.log(string2 * 1); // 0.00000332
console.log(string3 * 1); // NaN
console.log(string4 * 1); // NaN
Number ()将字符串转换为数字,但是如果传入一个包含随机文本的字符串,它将返回NaN。
Number("3455") //returns 3455
Number("0.9493") // returns 0.9493
Number("10.949e3") // returns 10949
Number('3.14someRandomStuff'); // returns NaN
let string = '100';
+string // 100
let string2 = "wisdom"
+string2 // NaN
该方法一般用来对小数进行向上取整,它还接受字符串作为参数,也能将字符串转换为数字。
let string1 = "101";
let string2 = "100.21";
let string3 = "bye";
Math.ceil(string1); // 101
Math.ceil(string2); // 101
Math.ceil(string3); // NaN
Math.ceil("); // 0