码迷,mamicode.com
首页 > 其他好文 > 详细

void 0 或者 undefined

时间:2014-06-14 12:50:24      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:javascript   undefined   

Problem

在检查一个值是否为undefined的时候,你们是如果去测试的?

要是之前的我会这样子测试

 
 function isUndefined(obj){
   return obj === undefined;
}

但是最近在看《javascript框架设计》这本书的时候,他用了另外一种方法,我就有点纳闷了。

 
 function isUndefined(obj){
   return obj === void 0;
}

两者谁比较好点呢?如何比较呢?应该从它的适用性、浏览器兼容性来比较!然后我就在MDN找到void操作符的定义和undefined的说明,才知道《javascript框架设计》中的方法略胜一筹。为什么呢?下面来讲解

Description

void
The void operator evaluates the given expression and then returns undefined.也是就是说void是一个操作符,它总是返回的是undefined这个值
undefined
The global undefined property represents the value undefined.就是说undefined其实是一个全局变量,它的是就是代表着undefined。我们可以用window.hasOwnProperty("undefined");去测试,返回true就证明它是全局变量。既然它是全局变量的话,我们就可以修改它了,在修改一些特定变量方面ES3和ES5中是不一样的。ES3中每个变量都是可写可配置可遍历的,但是ES5设置一些API去设置变量的这些特性。我们可以在chrome(支持ES5)的控制台敲上一句这样子的代码Object.getOwnPropertyDescriptor(window,"undefined"),我们可以看见他打印出来的是Object {value: undefined, writable: false, enumerable: false, configurable: false}。可以看见在ES5中的undefined值是不能修改(即writable为false)的,但是在旧的浏览器比如IE7、8,你就可以修改undefined的值,导致你的isUndefined失去效果了。

Why void 0, specifically?

stackoverflow网站的一个问题有提到一定要用void 0吗?不能是void 1,void 10000,void "hello world" 或者其他吗?答案都是可以的,只是0给人的感觉就是简短、惯用.

Reference

undefined
void
What does void 0 mean?

void 0 或者 undefined,布布扣,bubuko.com

void 0 或者 undefined

标签:javascript   undefined   

原文地址:http://blog.csdn.net/monkindey/article/details/30493789

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!