Void运算符 与 undefined类型

本文深入讲解了void运算符的功能及应用场景,包括如何确保JavaScript引擎正确解析立即执行的函数表达式,以及如何用void运算符安全地替代undefined进行比较。

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

void 运算符 对给定的表达式进行求值,然后返回 undefined。

何为求值,就是执行之后的表达式。

我们最常见的就是

<a href="javascript: void(0)"></a> //这段代码使点击这个a标签什么都不做

为什么呢?

重点在于,不管表达式是什么,它返回的始终都是一个undefined

顺序也很重要,先计算表达式,然后再返回。

怎么用?

1、在使用立即执行的函数表达式时,可以利用 void 运算符让 JavaScript 引擎把一个函数识别成函数表达式而不是函数声明(语句)。

void function iife() {
    var bar = function () {};
    var baz = function () {};
    var foo = function () {
        bar();
        baz();
     };
    var biz = function () {};

    foo();
    biz();
}();

普通立即执行的函数表达式都这样(function fn(){})(),这样引擎就会解析为一个表达式。
不使用()括起来的时候,引擎会将其解析为函数表达式,但是通过一个void运算符就可以避免这个问题。因为void 运算符后面本来就是一个表达式。

2、判断时用作undefined的替身
之前a标签的例子就是这样使用的。
比如我们判断一个变量是不是undefined的时候

options === void 0

为什么要使用void 0来替换,不直接使用undefined来作判断?

1、因为undefined在全局变量中是一个属性,本是只读属性,但是在低版本IE的局部作用域中是可以被重新被赋值的。因为这里不安全所以使用void 来替换。
2、使用void来替换的时候,void后面必须要跟一个表达式,其实任意表达式都是可以的。既然都能满足,我们只是想得到一个稳定的undefined,那为什么不用最简短的表达式呢,void 0就应运而生了。有些地方也写作void(0);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值