1、null, undefined在条件判断时都为false值
assert(! null );
assert(! undefined);
还有 空字符, 0, NaN
assert(! "");
assert("\n\t" == false)
assert(! 0);
assert(! NaN);
2、undefined值派生自null值,但是值等类型不等
assert(null == undefined); //值等
assert(! (null === undefined));// 值等类型不等
null值的类型是Object,undefined值的类型是Undefined
assert(typeof null == 'object');
assert(typeof undefined == 'undefined');
3、变量已声明但未初始化,其值是undefined
var a; //相当于var a = undefined;
assert(a == undefined);
assert(a == null);
assert(a != 1);
assert(typeof a == 'undefined');
4、未声明过的变量不可参与表达式计算,但可使用typeof操作符判断其类型
try{
c == undefined ? 0 : 1; // 不可使用未声明的变量参与计算, 否则抛ReferenceError异常
}catch(e){
console.log(e); //ReferenceError: c is not defined
}
assert(typeof(b) == 'undefined'); // 未声明过的变量类型为Undefined
注: assert方法简单实现:
function assert(expr){
if(expr !== true){
throw "Assert error";
}
}
assert(! null );
assert(! undefined);
还有 空字符, 0, NaN
assert(! "");
assert("\n\t" == false)
assert(! 0);
assert(! NaN);
2、undefined值派生自null值,但是值等类型不等
assert(null == undefined); //值等
assert(! (null === undefined));// 值等类型不等
null值的类型是Object,undefined值的类型是Undefined
assert(typeof null == 'object');
assert(typeof undefined == 'undefined');
3、变量已声明但未初始化,其值是undefined
var a; //相当于var a = undefined;
assert(a == undefined);
assert(a == null);
assert(a != 1);
assert(typeof a == 'undefined');
4、未声明过的变量不可参与表达式计算,但可使用typeof操作符判断其类型
try{
c == undefined ? 0 : 1; // 不可使用未声明的变量参与计算, 否则抛ReferenceError异常
}catch(e){
console.log(e); //ReferenceError: c is not defined
}
assert(typeof(b) == 'undefined'); // 未声明过的变量类型为Undefined
注: assert方法简单实现:
function assert(expr){
if(expr !== true){
throw "Assert error";
}
}