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
结果为10
10+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属性