黄子涵

4.45 void 运算符

void 是 undefined 类型的单目运算符。无论向其传递什么操作数,其运算结果都会是 undefined 值。下面是一个具体的例子。

console.log("操作数为数值:");
console.log(void 0);
console.log("");
console.log("操作数为字符串值:");
console.log(void 'hzh');
console.log("");
var hzh = 0;
void hzh++; // 由于会先对操作数进行求值,所以 x 将自增
console.log("访问全局变量hzh:");
console.log(hzh);
console.log("");
console.log("通过void运算符访问全局变量hzh");
console.log(void(hzh)); // 常常会把操作数通过括号包围起来
[Running] node "e:\HMV\JavaScript\JavaScript.js"
操作数为数值:
undefined

操作数为字符串值:
undefined

访问全局变量hzh:
1

通过void运算符访问全局变量hzh
undefined

[Done] exited with code=0 in 0.173 seconds

void 这一运算符的用途比较难以理解,不过在客户端 JavaScript 中有不少相关的习惯用法。下面是一个在 HTML 中点击了标签 a 之后发送表单内容的 JavaScript 代码的例子。

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>void运算符</title>
</head>

<body>
    <a href="JavaScript: void(document.form.submit())">发送HTML表单数据但不跳转页面</a>
</body>

</html>

image

hred 属性中所写的表达式如果具有值的话,则会被标签 a 认为是 URL 并跳转至该页面。为了阻止标签 a 的这一行为,需要将 href 属性中表达式的值强制设为undefined 值。对此最为简单的惯用方法就是通过 void 运算来实现。

posted @ 2022-05-30 10:47  黄子涵  阅读(34)  评论(0编辑  收藏  举报