void 关键字概述
在 JavaScript 中,void
关键字作为一个操作符,可以评估给定表达式并返回 undefined
。void
是 JavaScript 中一个重要关键字,其意义为空或无。
void
关键字可以用作一元操作符,出现在其单一操作数之前,此操作数可以是任何类型。此操作符指定一个要评估而不返回值或者返回 undefined
的表达式。
语法
使用 void
关键字的语法如下:
void operand;
在上述语法中,operand
可以是任意表达式。
返回值
它返回 undefined
。
示例
在下面的代码中,我们使用了 10
与 void
关键字。在输出中,你可以看到它返回 undefined
。
<html>
<body>
<div id = "output">The value of the ans variable is: </div>
<script>
let ans = void 10;
document.getElementById("output").innerHTML += ans;
</script>
</body>
</html>
输出
The value of the ans variable is: undefined
void
关键字优先级的重要性
通常,JavaScript 的 void
关键字用来返回原始的 undefined
值,但如果忽略优先级,则可能会返回不同的值。
示例
在下面的代码中,void
操作符优先于严格等号操作符执行。因此,它首先评估 void 10
为 undefined
并与 20
进行比较,所以返回 false
。
第二个表达式首先评估 10 === 20
为 false
,然后评估 void false
为 undefined
。
<html>
<body>
<div id = "output1"> </div>
<div id = "output2"> </div>
<script>
let res1 = void 10 === 20;
let res2 = void (10 === 20);
document.getElementById("output1").innerHTML += res1;
document.getElementById("output2").innerHTML += res2;
</script>
</body>
</html>
输出
false
undefined
javascript:void(0)
的含义
让我们将 javascript:void(0)
分成两部分来理解。
javascript:
你可以使用 javascript:
来创建伪 URL。使用 javascript:
可以创建交互式的 URL。
你需要在 javascript:
后写入表达式,当用户点击锚点文本时,会执行 JavaScript 代码。
示例
在下面的代码中,我们创建了链接文本并使用 JavaScript URL 作为 href
。当你点击锚点文本时,它会在 HTML 文档中写出内容。
<html>
<body>
<a href = "javascript:document.write('Anchor text is clicked!')"> Click me! </a>
</body>
</html>
void(0)
void(0)
评估 JavaScript 表达式,但返回 undefined
。因此,当你希望执行表达式而不进行任何操作时,可以使用 void(0)
。
javascript: void(0)
当你不希望用户点击链接后导航到另一个网页时,可以使用 javascript:void(0)
作为锚标签的 href
值。
示例
在下面的代码中,无论何时点击锚点文本,它都不会做任何事情。
<html>
<body>
<a href = "javascript:void(0)"> Click me! </a>
</body>
</html>
你还可以在想要更新网页但不希望导航到另一个网页时使用 javascript:void(0)
。
示例
在下面的代码中,当你点击锚点文本时,它会改变背景颜色而不是导航到另一个网页。
<html>
<body>
<a href = "javascript:void(0);"
onclick = "document.body.style.backgroundColor = 'blue'">
Change Background Color
</a>
</body>
</html>
void
关键字与函数
当你在 JavaScript 函数中使用 void
关键字时,它返回 undefined
。之后,如果你尝试执行该函数,它将抛出错误,因为 void
操作符将函数视为其操作数并评估为 undefined
。
示例
在下面的代码中,我们定义了 test()
函数,并使用了 void
关键字。
此外,使用了 try...catch
块来捕获错误。
在 try
块中,我们执行该函数,在输出中,你可以看到控制流进入 catch
块。
<html>
<body>
<div id = "demo"> </div>
<script>
const output = document.getElementById('demo');
try {
void function test() {
output.innerHTML += "The test function is executed!";
}
test();
} catch (error) {
output.innerHTML += "The test function is undefined!";
}
</script>
</body>
</html>
输出
The test function is undefined!
void
关键字与立即执行函数
当你在 JavaScript 立即执行函数中使用 void
关键字时,它首先调用该函数表达式,然后评估为 undefined
。
示例
在下面的代码中,我们定义了一个带有 void
关键字的立即执行函数。你可以看到它首先调用了该函数,然后返回 undefined
。
<html>
<body>
<div id = "demo"> </div>
<script>
const output = document.getElementById("demo");
void function () {
output.innerHTML = "Unknown function is executed!";
}();
</script>
</body>
</html>
输出
Unknown function is executed!
此外,你还可以在箭头函数中使用 void
关键字来使箭头函数返回 undefined
。JavaScript void()
URI 也可以用来防止默认情况下重新加载网页,类似于 preventDefault()
方法的作用。