用void 0代替undefined

本文探讨了在JavaScript中使用void0代替undefined的原因及其优势,并介绍了void0在填充超链接和图片源中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要用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,确保不会向服务器发出垃圾请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值