undefined/null自动转换与强制转换
这两个值的数值、布尔值自动和强制转换很特别
by calefy
HTML
<h1>undefined & null 转换</h1>
<pre>
undefined == null // true
undefined == 0 // false
!!undefined // false
undefined == false // false
</pre>
<hr/>
JavaScript
function log (s) {
document.write('<p>' + s + '</p>');
}
//=============Boolean============
// 强制转换
log('Boolean(undefined) = ' + Boolean(undefined));
log('!!undefined = ' + !!undefined);
log('Boolean(null) = ' + Boolean(null));
log('!!null = ' + !!null);
// 自动转换
log('undefined == false --> ' + (undefined == false));
log('undefined == true --> ' + (undefined == true));
log('null == false --> ' + (null == false));
log('null == true --> ' + (null == true));
log('---');
//=============Number=============
// 强制转换
log('Number(undefined) = ' + Number(undefined));
log('undefined - 0 = ' + (undefined - 0));
log('Number(null) = ' + Number(null));
log('null - 0 = ' + (null - 0));
// 自动转换
log('undefined == 0 --> ' + (undefined == 0));
log('null == 0 --> ' + (null == 0));
// 是否不能转成数字
log('isNaN(undefined) = ' + isNaN(undefined));
log('isNaN(null) = ' + isNaN(null));
log('---');
log('undefined == null --> ' + (undefined == null));