语法高亮,滚动条美化,设置页面调整

This commit is contained in:
fofolee
2019-04-19 02:41:09 +08:00
parent 1e8f76c000
commit 359d29ee0b
1590 changed files with 12328 additions and 11441 deletions

View File

@@ -4,12 +4,12 @@
<div><iframe class="interactive interactive-js" frameborder="0" height="250" src="https://interactive-examples.mdn.mozilla.net/pages/js/expressions-deleteoperator.html" width="100%"></iframe></div>
<p class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a class="external" href="https://github.com/mdn/interactive-examples" rel="noopener">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p>
<h2 id="Syntax" name="Syntax">语法</h2>
<pre class="syntaxbox">delete <em>expression</em>
</pre>
<pre><code class="language-javascript">delete <em>expression</em>
</code></pre>
<p> <em>expression</em> 的计算结果应该是某个属性的引用,例如:</p>
<pre class="syntaxbox">delete <em>object.property</em> 
<pre><code class="language-javascript">delete <em>object.property</em> 
delete <em>object</em>['<em>property</em>']
</pre>
</code></pre>
<h3 id="Parameters" name="Parameters">参数</h3>
<dl>
<dt><code>object</code></dt>
@@ -39,7 +39,7 @@ delete <em>object</em>['<em>property</em>']
<li>不可设置的(Non-configurable)属性不能被移除。这意味着像<a href="Reference/Global_Objects/Math" title="Math 是一个内置对象 它具有数学常数和函数的属性和方法。不是一个函数对象。"><code>Math</code></a>, <a href="Reference/Array" title="REDIRECT Array"><code>Array</code></a>, <a href="Reference/Global_Objects/Object" title="Object 构造函数创建一个对象包装器。"><code>Object</code></a>内置对象的属性以及使用<a href="Reference/Global_Objects/Object/defineProperty" title="Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。"><code>Object.defineProperty()</code></a>方法设置为不可设置的属性不能被删除。</li>
</ul>
<p>下面的代码块给出了一个简单的例子:</p>
<pre class="brush: js">var Employee = {
<pre><code class="language-javascript">var Employee = {
age: 28,
name: 'abc',
designation: 'developer'
@@ -50,15 +50,15 @@ console.log(delete Employee.age); // returns true
// 当试着删除一个不存在的属性时
// 同样会返回true
console.log(delete Employee.salary); // returns true</pre>
console.log(delete Employee.salary); // returns true</code></pre>
<h3 id="不可配置属性">不可配置属性</h3>
<p>当一个属性被设置为不可设置delete操作将不会有任何效果并且会返回false。在严格模式下会抛出语法错误<a href="Reference/Global_Objects/SyntaxError" title="SyntaxError 对象代表尝试解析语法上不合法的代码的错误。"><code>SyntaxError</code></a>)。</p>
<pre class="brush: js">var Employee = {};
<pre><code class="language-javascript">var Employee = {};
Object.defineProperty(Employee, 'name', {configurable: false});
console.log(delete Employee.name); // returns false</pre>
console.log(delete Employee.name); // returns false</code></pre>
<p><a href="Reference/Statements/var" title="var 声明语句声明一个变量,并可选地将其初始化为一个值。"><code>var</code></a>, <a href="Reference/Statements/let" title="let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。与var关键字不同的是var声明的变量只能是全局或者整个函数块的。"><code>let</code></a>以及<a href="Reference/Statements/const" title="常量是块级作用域,很像使用 let 语句定义的变量。常量的值不能通过重新赋值来改变并且不能重新声明。"><code>const</code></a>创建的不可设置的属性不能被delete操作删除。</p>
<pre class="brush: js">var nameOther = 'XYZ';
<pre><code class="language-javascript">var nameOther = 'XYZ';
// 通过以下方法获取全局属性:
Object.getOwnPropertyDescriptor(window, 'nameOther');
@@ -70,19 +70,19 @@ Object.getOwnPropertyDescriptor(window, 'nameOther');
// 因为“nameOther”使用var关键词添加
// 它被设置为不可设置non-configurable
delete nameOther; // return false</pre>
delete nameOther; // return false</code></pre>
<p>在严格模式下,这样的操作会抛出异常。</p>
<h3 id="严格模式与非严格模式的对比"><strong>严格模式与非严格模式的对比</strong></h3>
<p>在严格模式下如果对一个变量的直接引用、函数的参数或者函数名使用delete操作将会抛出语法错误<a href="Reference/Global_Objects/SyntaxError" title="SyntaxError 对象代表尝试解析语法上不合法的代码的错误。"><code>SyntaxError</code></a>)。</p>
<p>任何使用var声明的变量都会被标记为不可设置的。在下面的例子中salary是不可设置的以及不能被删除的。在非严格模式下下面的delete操作将会返回false。</p>
<pre class="brush: js">function Employee() {
<pre><code class="language-javascript">function Employee() {
delete salary;
var salary;
}
Employee();</pre>
Employee();</code></pre>
<p>让我们来看看相同的代码在严格模式下会有怎样的表现。会抛出一个语法错误( <code>SyntaxError而不是返回false。</code></p>
<pre class="brush: js">"use strict";
<pre><code class="language-javascript">"use strict";
function Employee() {
delete salary; // SyntaxError
@@ -96,9 +96,9 @@ function DemoFunction() {
//some code
}
delete DemoFunction; // SyntaxError</pre>
delete DemoFunction; // SyntaxError</code></pre>
<h2 id="示例">示例</h2>
<pre class="brush: js">// 在全局作用域创建 adminName 属性
<pre><code class="language-javascript">// 在全局作用域创建 adminName 属性
adminName = 'xyz';
// 在全局作用域创建 empCount 属性
@@ -138,10 +138,10 @@ function f() {
// delete 对局部变量名不起作用
delete z; // 返回 false
}</pre>
}</code></pre>
<h3 id="delete_和原型链"><code>delete</code> 和原型链</h3>
<p>在下面的示例中,我们删除一个对象的自己的属性,而原型链上具有相同名称的属性可用:</p>
<pre class="brush: js">function Foo() {
<pre><code class="language-javascript">function Foo() {
this.bar = 10;
}
@@ -160,26 +160,26 @@ delete Foo.prototype.bar;
// 输出 "undefined",因为不能继承这个属性了
console.log(foo.bar);
</pre>
</code></pre>
<h3 id="Deleting_array_elements" name="Deleting_array_elements">删除数组元素</h3>
<p>当你删除一个数组元素时,数组的长度不受影响。即便你删除了数组的最后一个元素也是如此。</p>
<p>当用 <code>delete</code> 操作符删除一个数组元素时,被删除的元素已经不再属于该数组。下面的例子中用 <code>delete </code>删除了<code> trees[3]</code></p>
<pre class="brush: js">var trees = ["redwood","bay","cedar","oak","maple"];
<pre><code class="language-javascript">var trees = ["redwood","bay","cedar","oak","maple"];
delete trees[3];
if (3 in trees) {
// 这里不会执行
}
</pre>
</code></pre>
<p>如果你想让一个数组元素继续存在但是其值是 <code>undefined</code>,那么可以使用将 <code>undefined</code> 赋值给这个元素而不是使用 <code>delete</code>。下面的例子中trees[3] 被赋值为 <code>undefined</code>,但该元素仍然存在。</p>
<pre class="brush: js">var trees = ["redwood","bay","cedar","oak","maple"];
<pre><code class="language-javascript">var trees = ["redwood","bay","cedar","oak","maple"];
trees[3] = undefined;
if (3 in trees) {
// 这里会被执行
}</pre>
}</code></pre>
<p>如果你想通过改变数组的内容来移除一个数组元素,请使用<code><a href="Reference/Global_Objects/Array/splice" title="splice() 方法通过删除或替换现有元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。"><code>splice</code></a></code>方法。在下面的例子中,通过使用<code><a href="Reference/Global_Objects/Array/splice" title="splice() 方法通过删除或替换现有元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。"><code>splice</code></a></code>将trees[3]从数组中移除。</p>
<pre class="brush: js">var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
<pre><code class="language-javascript">var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
trees.splice(3,1);
console.log(trees); // ["redwood", "bay", "cedar", "maple"]</pre>
console.log(trees); // ["redwood", "bay", "cedar", "maple"]</code></pre>
<h2 id="规范">规范</h2>
<table class="standard-table">
<tbody>