摘要:對(duì)象可被不定參數(shù)和默認(rèn)參數(shù)完美代替。將對(duì)象納入規(guī)范,提供了原生的對(duì)象。規(guī)定,命令和命令聲明的全局變量,屬于全局對(duì)象的屬性命令命令命令聲明的全局變量,不屬于全局對(duì)象的屬性。。這些函數(shù)表達(dá)式最適合用于非方法函數(shù),并且它們不能用作構(gòu)造函數(shù)。
ES6的了解
新增模板字符串(為JavaScript提供了簡(jiǎn)單的字符串插值功能)、箭頭函數(shù)(操作符左邊為輸入的參數(shù),而右邊則是進(jìn)行的操作以及返回的值Inputs=>outputs。)、for-of(用來(lái)遍歷數(shù)據(jù)—例如數(shù)組中的值。)arguments對(duì)象可被不定參數(shù)和默認(rèn)參數(shù)完美代替。ES6將promise對(duì)象納入規(guī)范,提供了原生的Promise對(duì)象。增加了let和const命令,用來(lái)聲明變量。增加了塊級(jí)作用域。let命令實(shí)際上就增加了塊級(jí)作用域。ES6規(guī)定,var命令和function命令聲明的全局變量,屬于全局對(duì)象的屬性;let命令、const命令、class命令聲明的全局變量,不屬于全局對(duì)象的屬性。。還有就是引入module模塊的概念
let var const
let 允許你聲明一個(gè)作用域被限制在塊級(jí)中的變量、語(yǔ)句或者表達(dá)式
let綁定不受變量提升的約束,這意味著let聲明不會(huì)被提升到當(dāng)前
該變量處于從塊開始到初始化處理的“暫存死區(qū)”。
var 聲明變量的作用域限制在其聲明位置的上下文中,而非聲明變量總是全局的
由于變量聲明(以及其他聲明)總是在任意代碼執(zhí)行之前處理的,所以在代碼中的任意位置聲明變量總是等效于在代碼開頭聲明
const 聲明創(chuàng)建一個(gè)值的只讀引用 (即指針)
這里就要介紹下 JS 常用類型
String、Number、Boolean、Array、Object、Null、Undefined
其中基本類型 有 Undefined、Null、Boolean、Number、String,保存在棧中;
復(fù)合類型 有 Array、Object ,保存在堆中;
基本數(shù)據(jù)當(dāng)值發(fā)生改變時(shí),那么其對(duì)應(yīng)的指針也將發(fā)生改變,故造成 const申明基本數(shù)據(jù)類型時(shí),
再將其值改變時(shí),將會(huì)造成報(bào)錯(cuò), 例如 const a = 3 ; a = 5 時(shí) 將會(huì)報(bào)錯(cuò);
但是如果是復(fù)合類型時(shí),如果只改變復(fù)合類型的其中某個(gè)Value項(xiàng)時(shí), 將還是正常使用;
箭頭函數(shù)
語(yǔ)法比函數(shù)表達(dá)式更短,并且不綁定自己的this,arguments,super或 new.target。這些函數(shù)表達(dá)式最適合用于非方法函數(shù),并且它們不能用作構(gòu)造函數(shù)。
快速的讓一個(gè)數(shù)組亂序
var arr = [1,2,3,4,5,6,7,8,9,10]; arr.sort(function(){ return Math.random() - 0.5; }) console.log(arr);
首先: 當(dāng)return 的值
小于 0 ,那么 a 會(huì)被排列到 b 之前;
等于 0 , a 和 b 的相對(duì)位置不變;
大于 0 , b 會(huì)被排列到 a 之前;
這里你會(huì) 發(fā)現(xiàn)起始 的時(shí)候數(shù)組是正序排列,每當(dāng)進(jìn)行一次排列的時(shí)候, 都會(huì)先隨機(jī)一個(gè)隨機(jī)數(shù) (注意這里的每一次排列 指 每一個(gè)紅框指一次排列, 共9次排列 , 一次排列中可能存在多次比較);
當(dāng)一次排列的 隨機(jī)數(shù)大于0.5 時(shí) 將會(huì)進(jìn)行第二次比較, 當(dāng)?shù)诙坞S機(jī)數(shù) 仍然大于0.5 時(shí) ,將會(huì)再 進(jìn)行一次比較, 直到 隨機(jī)數(shù)大于0.5 或者排列到第一位;
當(dāng)一次排列的 隨機(jī)數(shù) 小于0.5時(shí) 當(dāng)前比較的兩項(xiàng) 索引將不會(huì)改變 ,繼續(xù)下一次 的排列;
最快捷的數(shù)組求最大值
var arr = [ 1,5,1,7,5,9]; Math.max(...arr) // 9
更短的數(shù)組去重寫法
[...newSet([2,"12",2,12,1,2,1,6,12,13,6])]
說(shuō)說(shuō)你對(duì)Promise的理解
依照 Promise/A+ 的定義,Promise 有四種狀態(tài):
pending: 初始狀態(tài), 非 fulfilled 或 rejected.
fulfilled: 成功的操作.
rejected: 失敗的操作.
settled: Promise已被fulfilled或rejected,且不是pending
另外, fulfilled 與 rejected 一起合稱 settled
Promise 對(duì)象用來(lái)進(jìn)行延遲(deferred) 和異步(asynchronous ) 計(jì)算
Promise 的構(gòu)造函數(shù)
構(gòu)造一個(gè) Promise,最基本的用法如下:
var promise = new Promise(function(resolve, reject) { if (...) { // succeed resolve(result); } else { // fails reject(Error(errMessage)); } });
Promise 實(shí)例擁有 then 方法(具有 then 方法的對(duì)象,通常被稱為thenable)。它的使用方法如下:
promise.then(onFulfilled, onRejected)
接收兩個(gè)函數(shù)作為參數(shù),一個(gè)在 fulfilled 的時(shí)候被調(diào)用,一個(gè)在rejected的時(shí)候被調(diào)用,接收參數(shù)就是 future,onFulfilled 對(duì)應(yīng) resolve, onRejected 對(duì)應(yīng) reject
什么是 Promise ?
Promise 就是一個(gè)對(duì)象,用來(lái)表示并傳遞異步操作的最終結(jié)果
Promise 最主要的交互方式:將回調(diào)函數(shù)傳入 then 方法來(lái)獲得最終結(jié)果或出錯(cuò)原因
Promise 代碼書寫上的表現(xiàn):以“鏈?zhǔn)秸{(diào)用”代替回調(diào)函數(shù)層層嵌套(回調(diào)地獄)
談一談你了解ECMAScript6的新特性?
塊級(jí)作用區(qū)域 let a = 1;
可定義常量 const PI = 3.141592654;
變量解構(gòu)賦值 var [a, b, c] = [1, 2, 3];
字符串的擴(kuò)展(模板字符串) var sum = ${a + b};
數(shù)組的擴(kuò)展(轉(zhuǎn)換數(shù)組類型) Array.from($("li"));
函數(shù)的擴(kuò)展(擴(kuò)展運(yùn)算符) [1, 2].push(...[3, 4, 5]);
對(duì)象的擴(kuò)展(同值相等算法) Object.is(NaN, NaN);
新增數(shù)據(jù)類型(Symbol) let uid = Symbol("uid");
新增數(shù)據(jù)結(jié)構(gòu)(Map) let set = new Set([1, 2, 2, 3]);
for...of循環(huán) for(let val of arr){};
Promise對(duì)象 var promise = new Promise(func);
Generator函數(shù) function* foo(x){yield x; return x*x;}
引入Class(類) class Foo {}
引入模塊體系 export default func;
引入async函數(shù)[ES7]
async function asyncPrint(value, ms) { await timeout(ms); console.log(value) }
Object.is() 與原來(lái)的比較操作符 ===、== 的區(qū)別?
== 相等運(yùn)算符,比較時(shí)會(huì)自動(dòng)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換
=== 嚴(yán)格相等運(yùn)算符,比較時(shí)不進(jìn)行隱式類型轉(zhuǎn)換
Object.is 同值相等算法,在 === 基礎(chǔ)上對(duì) 0 和 NaN 特別處理
+0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
什么是 Babel ?
Babel 是一個(gè) JS 編譯器,自帶一組 ES6 語(yǔ)法轉(zhuǎn)化器,用于轉(zhuǎn)化 JS 代碼。
這些轉(zhuǎn)化器讓開發(fā)者提前使用最新的 JS語(yǔ)法(ES6/ES7),而不用等瀏覽器全部兼容。
Babel 默認(rèn)只轉(zhuǎn)換新的 JS 句法(syntax),而不轉(zhuǎn)換新的API。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/93894.html
摘要:使用新特性開發(fā)微信小程序國(guó)際化與本地化新特性國(guó)際化與本地化新增了很多對(duì)于國(guó)際化的支持,比如時(shí)間格式,貨幣格式,數(shù)字格式等。 ECMAScript 6(簡(jiǎn)稱ES6)是JavaScript語(yǔ)言的最新標(biāo)準(zhǔn)。因?yàn)楫?dāng)前版本的ES6是在2015年發(fā)布的,所以又稱ECMAScript 2015。 微信小程序支持絕大部分ES6的新增特性。 使用ES6新特性開發(fā)微信小程序(1) ES6新特性:Cons...
摘要:更新了個(gè)版本,最新正式版是語(yǔ)言的下一代標(biāo)準(zhǔn),早已在年月正式發(fā)布。基本不支持移動(dòng)端瀏覽器對(duì)的支持情況版起便可以支持的新特性。比較通用的工具方案有,,,等。 1、ECMAScript是什么? 和 JavaScript 有著怎樣的關(guān)系? 1996 年 11 月,Netscape 創(chuàng)造了javascript并將其提交給了標(biāo)準(zhǔn)化組織 ECMA,次年,ECMA 發(fā)布 262 號(hào)標(biāo)準(zhǔn)文件(ECMA-...
摘要:但是在中,可以通過(guò)關(guān)鍵字來(lái)實(shí)現(xiàn)類的繼承的使用可以使得繼承意義更加明確并且值得一提的是,如果你使用來(lái)定義的組件,那么可以在類的構(gòu)造器里面,用簡(jiǎn)單的的聲明方式來(lái)替代方法。 原文:The 10 min ES6 course for the beginner React Developer譯者:Jim Xiao 著名的80/20定律可以用來(lái)解釋React和ES6的關(guān)系。因?yàn)镋S6增加了超過(guò)75...
摘要:,正式名稱是,但是這個(gè)名稱更加簡(jiǎn)潔。已經(jīng)不再是最新的標(biāo)準(zhǔn),但是它已經(jīng)廣泛用于編程實(shí)踐中。而制定了模塊功能。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,得到了金山軟件等眾多知名用戶的認(rèn)可。 譯者按: 人生苦短,我用ES6。 原文: Top 10 ES6 Features Every Busy JavaScript Developer Must Know 譯者: Fundebug 為了保...
摘要:今天閑來(lái)無(wú)事,看見幾行小字。又說(shuō)所有對(duì)象,繼承終是。強(qiáng)行押韻一波這首詩(shī)的意思就是說(shuō)的我今天沒有什么事情,然后無(wú)意中又在網(wǎng)上看到了任何對(duì)象都是從對(duì)象繼承而來(lái)的這句話。一時(shí)興起,便去驗(yàn)證這句話。 今天閑來(lái)無(wú)事,看見幾行小字。又說(shuō)所有對(duì)象,繼承終是Obj?!?強(qiáng)行押韻一波 這首詩(shī)的意思就是說(shuō)的我今天沒有什么事情,然后無(wú)意中又在網(wǎng)上看到了任何對(duì)象都是從Object對(duì)象繼承而來(lái)的這句話。一時(shí)興...
閱讀 3456·2021-11-22 12:04
閱讀 2783·2019-08-29 13:49
閱讀 550·2019-08-26 13:45
閱讀 2349·2019-08-26 11:56
閱讀 1102·2019-08-26 11:43
閱讀 659·2019-08-26 10:45
閱讀 1351·2019-08-23 16:48
閱讀 2272·2019-08-23 16:07