aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/operators/void/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/javascript/reference/operators/void/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/javascript/reference/operators/void/index.html')
-rw-r--r--files/zh-cn/web/javascript/reference/operators/void/index.html114
1 files changed, 114 insertions, 0 deletions
diff --git a/files/zh-cn/web/javascript/reference/operators/void/index.html b/files/zh-cn/web/javascript/reference/operators/void/index.html
new file mode 100644
index 0000000000..b67110459a
--- /dev/null
+++ b/files/zh-cn/web/javascript/reference/operators/void/index.html
@@ -0,0 +1,114 @@
+---
+title: void 运算符
+slug: Web/JavaScript/Reference/Operators/void
+tags:
+ - JavaScript
+ - Unary
+translation_of: Web/JavaScript/Reference/Operators/void
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p><strong><code>void</code> 运算符 </strong>对给定的表达式进行求值,然后返回 {{jsxref("Global_Objects/undefined", "undefined")}}。</p>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox">void <em>expression</em></pre>
+
+<h2 id="描述">描述</h2>
+
+<p>这个运算符能向期望一个表达式的值是{{jsxref("Global_Objects/undefined", "undefined")}}的地方插入会产生副作用的表达式。</p>
+
+<p>void 运算符通常只用于获取 <code>undefined</code>的原始值,一般使用<code>void(0)</code>(等同于<code>void 0</code>)。在上述情况中,也可以使用全局变量{{jsxref("Global_Objects/undefined", "undefined")}} 来代替(假定其仍是默认值)。</p>
+
+<h2 id="立即调用的函数表达式">立即调用的函数表达式</h2>
+
+<p>在使用<a href="/zh-CN/docs/Glossary/IIFE">立即执行的函数表达式</a>时,可以利用 <code>void</code> 运算符让 JavaScript 引擎把一个<code>function</code>关键字识别成函数表达式而不是函数声明(语句)。</p>
+
+<pre class="brush: js">void function iife() {
+ var bar = function () {};
+ var baz = function () {};
+ var foo = function () {
+ bar();
+ baz();
+ };
+ var biz = function () {};
+
+ foo();
+ biz();
+}();
+</pre>
+
+<h2 id="JavaScript_URIs">JavaScript URIs</h2>
+
+<p>当用户点击一个以 <code>javascript:</code> URI 时,它会执行URI中的代码,然后用返回的值替换页面内容,除非返回的值是{{jsxref("Global_Objects/undefined", "undefined")}}。<code>void</code>运算符可用于返回{{jsxref("Global_Objects/undefined", "undefined")}}。例如:</p>
+
+<pre class="brush: html">&lt;a href="javascript:void(0);"&gt;
+ 这个链接点击之后不会做任何事情,如果去掉 void(),
+ 点击之后整个页面会被替换成一个字符 0。
+&lt;/a&gt;
+&lt;p&gt; chrome中即使&lt;a href="javascript:0;"&gt;也没变化,firefox中会变成一个字符串0 &lt;/p&gt;
+&lt;a href="javascript:void(document.body.style.backgroundColor='green');"&gt;
+ 点击这个链接会让页面背景变成绿色。
+&lt;/a&gt;
+</pre>
+
+<p>注意,虽然这么做是可行的,但利用 <code>javascript:</code> 伪协议来执行 JavaScript 代码是不推荐的,推荐的做法是为链接元素绑定事件。</p>
+
+<h2 id="在箭头函数中避免泄漏">在箭头函数中避免泄漏</h2>
+
+<p>箭头函数标准中,允许在函数体不使用括号来直接返回值。 如果右侧调用了一个原本没有返回值的函数,其返回值改变后,则会导致非预期的副作用。 安全起见,当函数返回值是一个不会被使用到的时候,应该使用 <code>void</code> 运算符,来确保返回 {{jsxref("Global_Objects/undefined", "undefined")}}(如下方示例),这样,当 API 改变时,并不会影响箭头函数的行为。</p>
+
+<pre class="brush: js">button.onclick = () =&gt; void doSomething();</pre>
+
+<p>确保了当 <code>doSomething</code> 的返回值从 {{jsxref("Global_Objects/undefined", "undefined")}} 变为 <code>true</code> 的时候,不会改变函数的行为</p>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-void-operator', 'The void Operator')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-void-operator', 'The void Operator')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-11.4.2', 'The void Operator')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES3', '#sec-11.4.2', 'The void Operator')}}</td>
+ <td>{{Spec2('ES3')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1', '#sec-11.4.2', 'The void Operator')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>Initial definition. Implemented in JavaScript 1.1</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容">浏览器兼容</h2>
+
+<div class="hidden">
+<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+</div>
+
+<p>{{Compat("javascript.operators.void")}}</p>
+
+<h2 id="See_also" name="See_also">相关链接</h2>
+
+<ul>
+ <li><code><a href="/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined">undefined</a></code></li>
+</ul>