如何在JavaScript中使用void关键字?
在本教程中,让我们讨论如何在JavaScript中使用void关键字。
我们使用void关键字作为不返回值的函数的返回类型。它计算表达式并返回undefined。因为这是一个一元运算符,所以我们可以将其与单个操作数一起使用。
我们不应该将表达式括在括号中,因为void不是函数。void 0与void(0)相同。
用户可以遵循语法块来处理每个用例。
语法
void expression
表达式可以是变量或函数。
将void关键字与立即调用函数表达式一起使用
立即调用函数表达式(IIFE)允许void关键字作为表达式而不是声明来工作。
例如,我们需要运行以下代码片段。
function execute(){}()
语法
void (function execute() {})(); (function execute() {})();
我们可以用两种方法编写第一个代码片段,如上所示,使用void。
示例
在这个程序中,我们在IIFE函数中添加了一个void。因此,函数返回undefined。
<html> <body> <h2>Program:<i>IIFE with void</i></h2> <div id="IIFEVoidBtnWrap"> <button onclick="IIFEVoidOutput()">Click Me</button> </div> <p id="IIFEVoidOut"></p> <script> function IIFEVoidOutput() { var IIFEVoidBtnWrap = document.getElementById("IIFEVoidBtnWrap"); var IIFEVoidOut = document.getElementById("IIFEVoidOut"); IIFEVoidBtnWrap.style.display = "none"; const IIFEFunction = void function IIFEFunction1() { return 'IIFEFunction1'; }(); IIFEVoidOut.innerHTML = "<b>Output</b> : " + IIFEFunction; } </script> </body> </html>
将void关键字与URI一起使用
当我们将void关键字与URI一起使用时,浏览器会评估URI代码并将值返回到页面。
当用户点击链接时,超链接会通过重新加载页面来打开。在这种情况下,如果需要运行其他代码,可以使用javascript: void(0)。
语法
javascript:void 0
它什么也不返回。
示例
在这个程序中,当用户点击第一个链接时,第一个链接会重新加载页面。第二个链接保持不变,因为void 0限制了页面重新加载。
<html> <body> <h2>Program:<i>javascript: void(0)</i></h2> <a href=""ondblclick="alert('Twice')">Page reload</a><br><br> <a href="javascript: void(0)" ondblclick="alert('Twice')">No page reload</a> </body> </html>
将void关键字与条件语句一起使用
语法
if(value===void(0)) {}
Void可以将未定义的变量或数据与未定义的数据进行比较。
示例
在这个程序中,第一个函数调用没有参数。因此,它使用void进行条件检查显示undefined。第二个函数调用有值,因此用户可以在输出中看到该值。
<html> <body> <h2>Program: <i>conditions with void</i></h2> <div id="checkVoidBtnWrap"> <button onclick="checkVoidOutput()">Click Me</button> </div> <p id="checkVoidOut"></p> <script> function checkVoidOutput() { var checkVoidBtnWrap = document.getElementById("checkVoidBtnWrap"); var checkVoidOut = document.getElementById("checkVoidOut"); //checkVoidBtnWrap.style.display = "none"; var checkVoidCbk = function(value) { if(value===void(0)) return "Nothing"; else return value; }; checkVoidOut.innerHTML = "<b>Output</b><br><br> " + checkVoidCbk() + "<br><br>"+ checkVoidCbk("Hello"); } </script> </body> </html>
将void关键字与非泄漏箭头函数一起使用
箭头函数返回一个表达式。在某些情况下,它会返回不返回任何内容的函数调用的意外结果。在这种情况下,void可以提供帮助,因为它不返回任何内容。
语法
button.onclick = () => void doAction();
即使出现意外结果,它也不会返回任何内容。
示例
在这个程序中,我们使用void键设置箭头函数,以避免可能发生的任何错误操作。
<html> <body> <h2>Program: <i>arrow function with void</i></h2> <div id="arrowVoidBtnWrap"> <button id="arrowVoidBtn">Click Me</button> </div> <p id="arrowVoidOut"></p> <script> var arrowVoidBtnWrap = document.getElementById("arrowVoidBtnWrap"); var arrowVoidBtn = document.getElementById("arrowVoidBtn"); var arrowVoidOut = document.getElementById("arrowVoidOut"); function arrowVoidOutput() { arrowVoidOut.innerHTML = "Returns Nothing"; } arrowVoidBtn.onclick = () => void arrowVoidOutput(); </script> </body> </html>
将void关键字与异步调用一起使用
语法
(async () => { try { const resp = await fetch('API'); const res = await response.result(); } catch(e) {} })();
在异步API调用的情况下,Void可以提供帮助。
示例
此程序使用异步函数的无效语法并显示结果。
<html> <body> <h2>Program: <i>asynchronus calls with void</i></h2> <div id="asyncVoidBtnWrap"> <button id="asyncVoidBtn" onclick="asyncVoidDoAction()">Click Me</button> </div> <p id="asyncVoidOut"></p> <script> var asyncVoidBtnWrap = document.getElementById("asyncVoidBtnWrap"); var asyncVoidOut = document.getElementById("asyncVoidOut"); function asyncVoidDoAction() { (async () => { try { const resp = await fetch('API'); const res = await response.result(); asyncVoidOut.innerHTML = res; } catch(e) { asyncVoidOut.innerHTML = e; } })(); } </script> </body> </html>
使用void关键字生成未定义的值
语法
void(variable=value)
它返回undefined。
示例
在这个程序中,我们使用void关键字返回undefined值,并将实际值和undefined值都显示给用户。
<html> <body> <h2>Program: <i>undefined value with void</i></h2> <div id="undefValVoidBtnWrap"> <button id="undefValVoidBtn">Click Me</button> </div> <p id="undefValVoidOut"></p> <script> var undefValVoidBtnWrap = document.getElementById("undefValVoidBtnWrap"); var undefValVoidBtn = document.getElementById("undefValVoidBtn"); var undefValVoidOut = document.getElementById("undefValVoidOut"); undefValVoidBtn.onclick = function() { var num1, num2, num3, num4; num1=10, num2=void (num3=30, num4=40); undefValVoidOut.innerHTML = ('num1 = ' + num1 + '<br><br>num2 = ' + num2 + '<br><br>num3 = ' + num3 + '<br><br>num4 = ' + num4); }; </script> </body> </html>
使用void关键字生成一次性函数
语法
void function doAction() {}(); try{ doAction();} catch(e) {}
Void使函数第二次变为未定义。
示例
在这个程序中,我们使用void关键字定义一个函数。当我们第二次调用它时,函数调用会抛出错误。try-catch块处理错误情况。
<html> <body> <h2>Program: <i> one-time function with void</i></h2> <div id="oneTimeFnVoidBtnWrap"> <button id="oneTimeFnVoidBtn">Click Me</button> </div> <p id="oneTimeFnVoidOut"></p> <script> var oneTimeFnVoidBtnWrap = document.getElementById("oneTimeFnVoidBtnWrap"); var oneTimeFnVoidBtn = document.getElementById("oneTimeFnVoidBtn"); var oneTimeFnVoidOut = document.getElementById("oneTimeFnVoidOut"); var oneTimeFnStr = ""; oneTimeFnVoidBtn.onclick = function() { void function oneTimeFnVoid() { oneTimeFnStr += "One-time function<br><br>"; }(); try { oneTimeFnVoid(); } catch(e) { oneTimeFnStr += e; } oneTimeFnVoidOut.innerHTML = oneTimeFnStr; }; </script> </body> </html>
用例
void console.log("test"); //test void("test"); //undefined (void(2 =="2")); //undefined (void(2)=="2"); //false (void(2)==undefined);// true
运算符优先级
如果有多个操作数,我们应该使用括号。
void 10+20;//void(10)+20
缺点
void是一个关键字。我们不能将其用作变量名。因此,我们无法更改其定义。
eval('const void=100'); //Uncaught SyntaxError: Unexpected token 'void'
本教程向我们讲解了void关键字的用法。它只是有助于最小化代码,但会影响代码的可读性。