<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] <br/><br/><br/> # <b style="color:#4F4F4F;">簡介說明</b> 原文鏈接: - [JavaScript](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference) ``` 版本:JavaScript 作用:具有函數優先的輕量級,解釋型或即時編譯型的編程語言 ``` <br/> # <b style="color:#4F4F4F;">基本語法</b> <br/> # <span style="color:#619BE4">? :</span> ***** 三元判斷符 <br/> # <span style="color:#619BE4">? .</span> ***** 對象有屬性則調用沒有則忽略,瀏覽器環境有效 <br/> # <span style="color:#619BE4">??</span> ***** 空值合并運算符,當左側返回null或者undefined,執行右側返回值 <br/> # <span style="color:#619BE4">...args</span> ***** 展開運算符,可以將迭代對象展開 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` var a, b, rest; [a, b] = [10, 20]; console.log(a); // expected output: 10 console.log(b); // expected output: 20 [a, b, ...rest] = [10, 20, 30, 40, 50]; console.log(rest); // expected output: [30,40,50] [..."abc"] // expected output: ["a","b","c"] ``` <br/> # <span style="color:#619BE4">( , )</span> ***** 逗號表達式,從左往右逐個計算表達式,它的值為最后一個表達式(也即表達式n)的值 <br/> # <span style="color:#619BE4">()=>{}/()=>()</span> ***** 箭頭函數,沒有this,沒有arguments對象,小括號直接返回里面內容 <br/> # <span style="color:#619BE4">{}={}/[]=[]</span> ***** 解構賦值 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 數組案例: let a=12,b=13 [a,b]=[b,a] a 對象案例: 同理 ``` <br/> # <span style="color:#619BE4">\<\<</span> ***** 左移動運算符,往左移動n位相當于乘2的n次方 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 15 << 2 返回值:60 ``` <br/> # <span style="color:#619BE4">\>\></span> ***** 右移動運算符,往右移動n位相當于除2的n次方 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 128 >> 2 返回值:64 ``` <br/> # <span style="color:#619BE4">\>\>\></span> ***** 無符號向右移位 <br/> # <span style="color:#619BE4">&&</span> ***** 邏輯與 <br/> # <span style="color:#619BE4">||</span> ***** 邏輯或 <br/> # <span style="color:#619BE4">async</span> ***** 創建一個異步函數 <br/> # <span style="color:#619BE4">await</span> ***** 等待一個promise對象 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` function say() { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(158); },3000); }); } async function demo() { const v = await say(); console.log(v); const z = await say(); console.log(z); } demo(); ``` <br/> # <span style="color:#619BE4">break</span> ***** 跳出當前代碼塊 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` break ``` # <span style="color:#619BE4">class</span> ***** es6中新定義的類的創建方式 <br/> ### 示例內容 <span style="color:red;">1. static</span> ``` static 關鍵字只能修飾靜態方法 static get 函數名 獲取屬性 static set 函數名 設置屬性 ``` <br/> # <span style="color:#619BE4">const</span> ***** 定義常量 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` const i = 1; ``` <span style="color:red">2. 語法特點</span> ``` - 常量不能重新賦值 - 不能重復聲明 - 塊級作用域 - const 不會被預解析 ``` <br/> # <span style="color:#619BE4">continue</span> ***** 重新開始下一次新循環 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` continue ``` # <span style="color:#619BE4">delete</span> ***** 釋放變量內存 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 值類型放在棧,引用類型放在堆 let a = [1, 2, 3, 4, 5]; delete a[2]; console.log(a); ``` <br/> # <span style="color:#619BE4">export</span> ***** 模塊導出 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` const a = 1; let b = 2; function show() { console.log(10); } show(); // 10 console.log(a); // 1 console.log(b); // 2 export default a; export { a, b as c, show } ``` <span style="color:red">2. 導入案例</span> ``` import {a, b} from './js/foo.js'; console.log(a); import('./js/bar.js').then(bar => { console.log(bar); }); ``` <br/> # <span style="color:#619BE4">for</span> ***** 循環 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 1. 新式寫法 for (let i in [1, 2, 3]) { console.log(i); } for (let x of a) { console.log(x); } 2. 傳統寫法 for (let i = 0; i < [1, 2, 3].length; i++) { console.log(i); } ``` <br/> # <span style="color:#619BE4">for in</span> ***** 遍歷出來是屬性 <br/> # <span style="color:#619BE4">for of</span> ***** 遍歷出來是值 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` // 創建可迭代對象 let obj = { data: [ 'hello', 'world' ], [Symbol.iterator]() { const self = this; let index = 0; return { next() { if (index < self.data.length) { return { value: self.data[index++], done: false }; } else { return { value: undefined, done: true }; } } }; } }; ``` <br/> # <span style="color:#619BE4">func\`TemplateStringsArray\`</span> ***** 直接傳遞模板字符串給函數 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` function f(a: TemplateStringsArray) { console.log(a); } f`color:red;background:red`; ``` <br/> # <span style="color:#619BE4">if</span> ***** 分支抉擇 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` let c = 1; if (c === 1) { } else if (c === 2) { } else { } ``` <br/> # <span style="color:#619BE4">import</span> ***** 模塊導入 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 注意引用標簽類型 <script src="main.js" async type="module"></script> <script src="movie.js" type="module" ></script> import {a, c, show} from './trial.js'; show(); // 10 console.log(a); // 1 console.log(c); // 2 <script type="module" src="a.js"></script> ``` <br/> # <span style="color:#619BE4">import()</span> ***** 模塊導入 <br/> ### 返回類型 ``` Promise ``` <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 注意引用標簽類型 <script src="main.js" async type="module"></script> <script src="movie.js" type="module" ></script> import("a.js").then(res=>{console.log(res)}); ``` <br/> # <span style="color:#619BE4">in</span> ***** 如果指定的屬性在指定的對象或其原型鏈中,則in 運算符返回true。 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` // 數組 var trees = new Array("redwood", "bay", "cedar", "oak", "maple"); 0 in trees // 返回true 3 in trees // 返回true 6 in trees // 返回false "bay" in trees // 返回false (必須使用索引號,而不是數組元素的值) "length" in trees // 返回true (length是一個數組屬性) Symbol.iterator in trees // 返回true (數組可迭代,只在ES2015+上有效) // 內置對象 "PI" in Math // 返回true // 自定義對象 var mycar = {make: "Honda", model: "Accord", year: 1998}; "make" in mycar // 返回true "model" in mycar // 返回true ``` <br/> # <span style="color:#619BE4">instanceof</span> ***** 類型判定,并且考慮到繼承關系 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` console.log([] instanceof Object); 輸出:true ``` <br/> # <span style="color:#619BE4">let</span> ***** 定義塊級作用域變量 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` let i = 1; ``` <span style="color:red">2. 語法特點</span> ``` let 允許聲明一個在作用域限制在塊級中的變量、語句或者表達式 - 塊級作用域 - let 不能重復聲明 - let 不會被預解析 ``` <br/> # <span style="color:#619BE4">return</span> ***** 跳出當前方法 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` return ``` # <span style="color:#619BE4">switch</span> ***** 分支抉擇 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` let c = 1; switch (c) { case 1: console.log("a"); break; case 2: console.log("a"); break; default: console.log("a"); } ``` <br/> # <span style="color:#619BE4">label:</span> ***** 帶標簽的語句,類似goto允許你在語句之間穿梭 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` outer:while (true) { inner:while (true) { break outer; } } // 跳出循環到這里 console.log("hello") ``` <br/> # <span style="color:#619BE4">throw</span> ***** 拋出一個異常 <br/> # <span style="color:#619BE4">try</span> ***** 異常捕獲 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` try { } catch (e) { } finally { } ``` <br/> # <span style="color:#619BE4">typeof </span> ***** 類型判定,輸出字符,注意null是Object <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` console.log(typeof []); 輸出:object ``` <br/> # <span style="color:#619BE4">var</span> ***** 定義方法級作用域變量 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` var i=1; ``` <span style="color:red">2. 語法特點</span> ``` var 允許聲明一個在作用域限制在函數中的變量、語句或者表達式 - 函數作用域 - var 聲明的變量只能是全局或者整個函數塊的 - var 能重復聲明 - var 會被預解析 ``` <br/> # <span style="color:#619BE4">void</span> ***** 定義函數返回undefined <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` var foo = 1; void function(){ foo = 1; }() // will assign foo a value of 1 +function(){ foo = 1; }() // same as above 當IIFE括號上一層代碼不寫分號會造成小括號作為上一層代碼函數調用, 添加void可以避免這個問題 ``` <br/> # <span style="color:#619BE4">while</span> ***** 循環 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` 1. 先做一次再循環 do { } while (1 === 1); 2. 循環知道滿足條件 while (1 === 1) { } ``` <br/> # <span style="color:#619BE4">with</span> ***** 將變量屬性映射為當前作用域環境 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` var env = {b: 1}; with (env) { console.log(b); } ``` <span style="color:red">2. 變量隔離</span> ``` var b; void function () { var env = {}; b = 2; console.log("function " + b) // 2 with (env) { var b = 9; // 如果不定義var 進行變量提升,函數獲取閉包環境中全局b console.log("with " + b) // 9 } }() console.log("global " + b); // undefined ``` <br/> # <span style="color:#619BE4">yield</span> ***** 函數斷點,生成器對象 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` let compute = function* (a, b) { let sum = a + b; yield console.log(sum); let c = a - b; yield console.log(c); let d = a * b; yield console.log(d); let e = a / b; console.log(e); }; // 執行一下這個函數得到 Generator 實例 let generator = compute(4, 2); // 要使得函數中封裝的代碼邏輯得到執行,還得需要調用一次next方法。 generator.next(); ``` <br/> # <span style="color:#619BE4">super</span> ***** 父類的引用 <br/> # <span style="color:#619BE4">new</span> ***** 實例化對象 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` new URL(); ``` <br/> # <span style="color:#619BE4">new.target</span> ***** 構造函數中使用的關鍵字,用于判斷當前實例是否為指定類型,多用于做抽象類 <br/> # <span style="color:#619BE4">globalThis</span> ***** 包含全局的 this 值,類似于全局對象 <br/> # <b style="color:#4F4F4F;">特性內容</b> <br/> # <span style="color:#619BE4">語句圖解</span> ***** 語句圖解 <br/> ### 示例內容 <span style="color:red">1. 思維導圖</span> ![JS語句圖](https://img.kancloud.cn/98/ce/98ce53be306344c018cddd6c083392d5_555x872.jpeg) <br/> # <span style="color:#619BE4">關系圖解</span> ***** 對象間原型,構造函數,原型鏈之間的關系 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ![JS原型圖解](https://img.kancloud.cn/d4/8e/d48edc69f2309cf55d4bf5dd1ea2e692_1768x992.png) <br/> # <span style="color:#619BE4">EventLoop</span> ***** 事件循環 ### 示例內容 <span style="color:red">1. 舉例說明</span> ![event-loop](https://img.kancloud.cn/23/36/2336375b94d479d13fc72b9e9d80bb8f_2388x2396.png) ![JS事件循環](https://img.kancloud.cn/b5/d6/b5d6cb4581eab5eb85472a4eb3b2b077_1954x1784.jpg) <br/> # <span style="color:#619BE4">創建對象</span> ***** 創建對象--ES6之前的傳統方式 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ![JS原型繼承](https://img.kancloud.cn/6a/3e/6a3eee45db2b406a88b7cfa7f564ad5e_890x3673.png) <br/> <span style="color:red">2. jQuery創建模式</span> ``` let jquery = (function () { let obj = function () { return new obj.prototype.init(); }; obj.prototype = { constructor: obj, init: function () { }, }; obj.set = function () { }; obj.prototype.init.prototype = obj.prototype; return obj; })(); ``` <br/> # <span style="color:#619BE4">繼承對象</span> ***** 繼承對象--ES6之前的傳統方式 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ![](https://img.kancloud.cn/4c/23/4c2357d77a06fc145d3cfe9cf0e9ba42_1062x3513.png) <br/> # <span style="color:#619BE4">重載方法</span> ***** 通過閉包來實現JS方法重載,發揮多態的特性 <br/> ### 示例內容 <span style="color:red">1. 使用案例</span> ``` function bind_method(obj, name, fn) { let old = obj[name]; obj[name] = function (...args) { if (args.length === fn.length) { fn.apply(obj, args); } else { old.apply(obj, args); } } } let arr = [...Array(5).keys()]; bind_method(arr, "show", function () { console.log(0) }); bind_method(arr, "show", function (a) { console.log(1) }); bind_method(arr, "show", function (a, b) { console.log(2) }); arr.show(); //0 arr.show(1); //1 arr.show(1, 2); //2 ``` <br/> # <span style="color:#619BE4">拆箱與封箱</span> ***** 自動拆箱與封箱 <br/> # <span style="color:#619BE4">執行上下文</span> ***** ES2018中規定的執行上下文 <br/> ### 示例內容 <span style="color:red">1. 舉例說明</span> ``` lexical environment: 詞法環境,當獲取變量或者this值時使用 variable environment: 變量環境,當聲明變量時使用 code evaluation state: 用于恢復代碼執行位置 Function: 執行的任務是函數時使用,表示正在被執行的函數 ScriptOrModule: 執行的任務是腳本或者模塊時使用,表示正在被執行的代碼 Realm: 使用的基礎庫和內置對象實例 Generator: 僅生成器上下文有這個屬性,表示當前生成器 ``` <br/> # <span style="color:#619BE4">IIFE</span> ***** 立即調用函數表達式 <br/> ### 示例內容 <span style="color:red">1. 舉例說明</span> ``` (function () { var name = "Barry"; })(); // 無法從外部訪問變量 name name // 拋出錯誤:"Uncaught ReferenceError: name is not defined" ``` <br/> # <span style="color:#619BE4">自動插入分號</span> ***** 自動插入分號 <br/> ### 示例內容 <span style="color:red">1. No Line TerminatorHere</span> ![noLineTerminatorHere](https://img.kancloud.cn/c3/ff/c3ffbc89e049ad1901d4108c8ad88aad_1008x598.jpg) <br/>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看