用void 0代替undefined

来源:互联网 发布:centos 生成uuid 编辑:程序博客网 时间:2024/05/02 04:49

为什么要用void 0代替undefined?


因为undefined在javascript中不是保留字。也就是说你可以给undefined赋值:

function changeUndefined() {    var undefined = 'hello world'    console.log(undefined); //'hello world'}

我们可以在一个局部作用于中改变undefined的值,全局环境下不可以。
因此,我们用void 0 代替undefined便成了通用准则。
在coffeeScript和underscore中都是通过void 0 来代替undefined。

void 0 的其他应用


除了取undefined外,void还有什么其它用处吗?

还有一个常见的功能,填充href。下面是一个微博截图,它的转发, 收藏, 讨论都是超链接,但是用户并不希望点击它们会跳转到另一个页面,而是引发出一些交互操作。

这里写图片描述
理论上而言,这三个超链接都是没有URL的,但如果不写的话,呵呵,点击它会刷新整个页面。于是便用上了href=”javascript:void(0)的方式,确保点击它会执行一个纯粹无聊的void(0)。

另一种情况是,如果我们要生成一个空的src的image,最好的方式似乎也是src=’javascript:void(0)’,参见StackOverflow上的这个问题:What’s the valid way to include an image with no src?

总结


void有如下作用:
- 通过采用void 0取undefined比采用字面上的undefined更靠谱更安全,应该优先采用void 0这种方式。
- 填充的href确保点击时不会产生页面跳转; 填充的src,确保不会向服务器发出垃圾请求。

原创粉丝点击