var obj = {
name: 'Mocen'
}
function output(obj) {
if (typeof obj === 'object') {
console.log(obj.name);
} else {
console.log('obj is not a object');
}
}
output(obj);
上面这段代码有没有问题,如果有的话应该如何改进?
错误点:
typeof在检测到null时也会显示为object,但在javascript中null并非对象,因此需要增加一个检测null的模块:
if (typeof obj === 'object' && obj !== null) ;
修改后的代码如下:
var obj = {
name: 'xiaoming'
}
function output(obj) {
if (!obj && typeof obj === 'object') {
console.log(obj.name);
} else {
console.log('obj is not a object');
}
}
output(obj);
犀牛书44页,第三章3.4中是这样描述的:
对null执行typeof预算,结果返回字符串'object',也就是说,可以将null认为是一个特殊的对象值,含义是“非对象。”
附上一篇阮一峰的文章作为补充:http://www.ruanyifeng.com/blog/2011/05/how_to_judge_the_existence_of_a_global_object_in_javascript.html
网友评论