1. js中null undefined “” false 0的区别
null undefined "" false 0
所属什么类型
console.log(typeof null);
console.log(typeof undefined);
console.log(typeof "");
console.log(typeof 0);
console.log(typeof false);
共同点:
- 在if语句中做判断,都会执行false分支。当然从广义上来看,是说明这些数值都是其对应数据类型上的无效值或空值。还有这五个值作!运算,结果全为:true。
不同点
''==0==false
undefined==null
10+null
结果为1010+undefined
结果为NAN- null的类型是object,但是null不具有任何对象的特性,就是说我们并不能执行
null.toString()
、null.constructor
等对象实例的默认调用 - “”、0和false虽然在if语句表现为"假值",可它们都是有意义数据,只是被作为了"空值"或"假值",因为:
"".toString()
,(0).toString()
和false.toString()
都是合法的可执行表达式 - NaN也可以近似看做是一个空值或假值,因为任何类型的值与NAN做比较得到的都是false,包括NAN本身。
typeof NaN
为number
alert(0 == '');
alert(0 == false);
alert(false == '');
alert(null == undefined); alert(!0);
alert(!false);
alert(!undefined);
alert(!null);
alert(!''); alert(0 == undefined);
alert(0 == null);
alert(false == null);
alert(false == undefined);
alert('' == null);
alert('' == undefined);
2. js数值和字符串之间的运算
- 数值和字符串做加法,数值被转换为字符串
- 数值和字符串做减法、乘法、除法,字符串被转换为数字,如果字符串无法转化为数字,则与数字的运算结果为
NaN
3. typeof
和instanceof
① typeof
- typeof运算符返回一个用来表示表达式的数据类型的字符串。
- typeof一般返回以下几个字符串:
"number", "string","boolean","object","function","undefined"
。对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性。 - 可以用
typeof(变量名)
来检测该变量是否声明(或是否存在),如果返回值为undefined
则代表该值未声明或不存在。 - 一般只会返回以上几个字符串,不能追溯原型链的对象。
② instanceof
- instanceof用来检测某个对象是不是另一个对象的实例。
- 一个对象在其原型链中是否存在一个构造函数prototype属性
- 可追溯到原型链上的对象
4. parseIndex(str,radix)
- 该方法用户将字符串转换成整数并返回
radix
参数可选。表示要解析的数字的基数。该值介于 2 ~ 36
之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。