面试觉得自己实在太垃圾了,就来看看基础,做人还是要 多读书。
流控制语句会自动执行相应的Boolean转换**即调用Boolean()**,如if语句。
var message = "Hello world!";
if (message){
alert("Value is true");
}
以下为转换规则:
| 数据类型 | 转化为true的值 | 转化为false的值 |
|---|---|---|
| Boolean | true | false |
| String | 任何非空字符串 | ""(空字符串) |
| Number | 任何非零数字(包括无穷大) | 0和NaN |
| Object | 任何对象 | null |
| Undefined | not applicable | undefined |
var octalNum1 = 079; //解析为79
var octalNum2 = 08; //解析为8var a=0.1,b=0.2;
a+b==0.3; //false 注意==和=
详见这个链接
-1/0; //-infinity
isFineite(-1/0);//false
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false (10是一个数值)
alert(isNaN("10")); //false (可以被转化成数值10)
alert(isNaN("blue")); //true (不能转化成数值)
alert(isNaN(true)); //false (可以被转化成数值1)
包括Number()用于各种类型,parseInt()和parseFloat()专门用来把字符串转化成数值。
Number()
var num1 = Number("Hello world!"); //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number(true); //1
var num5 = Number("0xf");//15
parseInt()
var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN 第一个字符不是字符或负号,就返回NaN
var num3 = parseInt("0xA"); // 10(十六进制)
var num4 = parseInt(22.5); // 22
var num5 = parseInt("070"); // 56(八进制)
var num6 = parseInt("70"); // 70(十进制)
var num7 = parseInt("0xf"); // 15(十六进制)
为了消除在解析数据的时候进制错误,如070被当成十进制(ES5),可指定第二个参数(基数)。
var num1 = parseInt("10", 2); //2
var num2 = parseInt("10", 8); //8
var num3 = parseInt("10", 10); //10
var num4 = parseInt("10", 16); //16
parseFloat() 只解析十进制数。会忽略前导的0,任何16进制数都会被解析为0。可以解析到一个小数点
var num1 = parseFloat("1234blue"); //1234
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000