国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ECMAScript6 簡介及拓展

這篇具有很好參考價(jià)值的文章主要介紹了ECMAScript6 簡介及拓展。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ECMAScript簡介


JavaScript是大家所了解的語言名稱, 但它的正式名稱叫做ECMAScript。

1996年11月, JavaScript的創(chuàng)造者網(wǎng)景公司將JavaScript提交給國際化組織 ECMA(歐洲計(jì)算機(jī)制造聯(lián)合會), 希望這種語言能夠成為國際標(biāo)準(zhǔn)。

隨后 ECMA 發(fā)布了規(guī)定瀏覽器腳本語言的標(biāo)準(zhǔn), 即ECMAScript。 它的歷史版本:

version 時(shí)間 描述
1.0 1997 誕生,制定了語言的基本語法
2.0 1998 較小改動,同步獨(dú)立的ISO國際標(biāo)準(zhǔn)
3.0 1999 引入正則,異常處理,格式化輸出等。在業(yè)界得到了廣泛的支持, 奠定了JS的基本語法
4.0 2000 過于激進(jìn),未發(fā)布
5.0 2009 引入嚴(yán)格模式,Json,擴(kuò)展對象,數(shù)組,原型,字符串,日期方法
6.0 2015 模塊,面向?qū)ο笳Z法,Promise,箭頭函數(shù),let,const,數(shù)組解構(gòu)賦值等
7.0 2016 冪運(yùn)算符,數(shù)組擴(kuò)展,Async/await關(guān)鍵字
8.0 2017 Async/await,字符串?dāng)U展
9.0 2018 對象解構(gòu)賦值,正則擴(kuò)展
10 2019 擴(kuò)展對象,數(shù)組方法

ES6


目前市面上推薦使用的是ECMAScript 6.0(ES6), 主要原因在于:

  • 兼容性 目前并非所有的瀏覽器相關(guān)都支持最新語言的特性,而ES6已經(jīng)被廣泛支持。并可通過轉(zhuǎn)譯工具可將ES6轉(zhuǎn)換為較低版本的JavaScript,以確保在各種環(huán)境中的運(yùn)行
  • 新特性 ES6引入了箭頭函數(shù),解構(gòu)賦值,類等,使得代碼更加簡潔、易讀和維護(hù)
  • 模塊化支持 可以提升代碼的復(fù)用性和可維護(hù)性,使得項(xiàng)目結(jié)構(gòu)更清晰
  • 異步編程 引入Promiseasync特性, 支持異步編程

ES6的推廣主要還是為了解決ES5的不足,目前瀏覽器的JavaScript雖是ES5版本,但大多數(shù)的高版本瀏覽器支持ES6的使用。

它又被稱為ES2015, 因?yàn)樗?015年發(fā)布的。

ES6所支持的新特性簡要說明下:

  • 增加letconst, 可用于塊作用域聲明變量,避免了var變量提升和作用域不明的問題
  • 新增的原始數(shù)據(jù)類型Symbol, 可用于定義對象的唯一屬性
  • 增加了解構(gòu)賦值的語法, 使得代碼更加簡潔和易于理解
  • 拓展了Number,支持二/八進(jìn)制表示,增加了isFinite,整合了parseInt方法等
  • 拓展了String,新增了子字符串的識別, 模版字符串的拼接等
  • 拓展了Array, 增加了對象轉(zhuǎn)換為數(shù)組,以及查找的方法相關(guān)
  • 拓展了函數(shù)的默認(rèn)參數(shù)設(shè)置, 箭頭函數(shù)等
  • 新增Map容器和Set對象的使用
  • 新增ProxyReflect
  • 引入class類的支持, 支持extends繼承, super訪問父類規(guī)范, 靜態(tài)方法等
  • 引入模塊, 主要分為export導(dǎo)出import導(dǎo)入
  • 引入 Generator , Promise和 async 等異步編程

let、const和Symbol


ES6之前只有全局變量函數(shù)內(nèi)局部變量letconst為新增關(guān)鍵字:

  • let 必須在聲明之后才能使用, 不可重復(fù)聲明, 塊作用域, 變量不能提升
  • const 聲明之后必須初始化,否則會報(bào)錯(cuò)。 且聲明后不允許改變,屬于只讀變量。
// ---------- let -------------
{
    let value = 0;
    console.log(value);     // 0
}
// Error: value is not defined 
console.log(value);

// ---------- let -------------
const value: number = 10;
// Error: Assignment to constant variable
value = 100;

經(jīng)常會拿varlet比較:

/*
var是ES5及之前的JavaScript的關(guān)鍵字,特點(diǎn):
* 函數(shù)作用域,聲明的變量在整個(gè)函數(shù)體內(nèi), 而不僅是在塊作用域內(nèi)
* 變量會提升,聲明的變量會提升到函數(shù)的頂部, 即可在聲明之前使用
* 允許重復(fù)聲明
*/
function example() {
  var x = 10;
  if (true) {
    var x = 20; // 在同一函數(shù)作用域內(nèi)重復(fù)聲明變量x
    console.log(x); // 輸出:20
  }
  console.log(x); // 輸出:20
}
example();

/*
let是ES6及之后的JavaScript和TypeScript引入的關(guān)鍵子,特點(diǎn):
* 塊作用域, 比如if語句,循環(huán)語句,并不是整個(gè)函數(shù)體內(nèi)
* 不存在變量提升,必須聲明之后才能使用
* 不允許重復(fù)聲明,否則會報(bào)錯(cuò)
*/
function example2() {
  let y = 10;
  if (true) {
    let y = 20; // 在塊級作用域內(nèi)聲明變量y
    console.log(y); // 輸出:20
  }
  console.log(y); // 輸出:10
}
example2();

const需要注意,所謂的不允許改變真正指的是:變量或引用所指向的內(nèi)存地址不可改變。

在基礎(chǔ)數(shù)據(jù)類型使用中,值就保存在變量指向的地址。
而對于類似于Array數(shù)組,Object對象等這些復(fù)雜類型, 對象內(nèi)的子元素是可改變的

// ------------ 數(shù)組 ------------
const numData = [1, 2];
// 允許插入數(shù)值
numData.push(3);
console.log(numData);
// 不允許改變對象,Assignment to constant variable
numData = [4, 5];

// ------------ object ------------
const objectData = {
    value: 1,
}
// 允許修改對象內(nèi)部元素
objectData.value = 2;
// 不允許改變對象,Assignment to constant variable
objectData = {value: 2};

Symbol

除了number, string, boolean, object, null, undefined外, Symbol為新增的原始數(shù)據(jù)類型。

它被用于表示獨(dú)一無二的值,可被用于定義對象的唯一屬性名,構(gòu)成:

// lib.es2015.symbol.d.ts
interface SymbolConstructor {
  readonly prototype: Symbol;
  // 創(chuàng)建symbol對象
  (description?: string | number): symbol;
  // 全局搜索指定key字符串的symbol對象
  for(key: string): symbol;
  // 獲取symbol對象的key, 如果沒有則undefined
  keyFor(sym: symbol): string | undefined;
}

declare var Symbol: SymbolConstructor;

基本使用:

let sym = Symbol("a_1");
console.log(typeof(sym), sym);  // "symbol",  Symbol(a_1)

主要用法:

  • 定義常量,保證不同常量的唯一性
  • 作為對象的屬性名, 使用[]來設(shè)定,不要使用.

簡單的實(shí)例:

let sy = Symbol("key1");

let obj = {
  [sy]: "kk",
  value: 10,
};
// 雖然作為對象的屬性名,但其實(shí)是不可讀的, 結(jié)果是:{"value": 10}
console.log(obj); 

解構(gòu)賦值

它是對賦值運(yùn)算符的擴(kuò)展, 可用于 數(shù)組對象 進(jìn)行模式匹配, 然后對其中的變量進(jìn)行賦值。

// 基本使用
let [a, b, c] = [1,2,3];
console.log(a, b, c);       // 1,  2,  3 
let {a, b, c} = {a:1,b:2,c:3};
console.log(a, b, c);       // 1,  2,  3 

// 嵌套使用
let [a, [b, c]] = [1, [2, 3]];
console.log(a, b, c);  // 1,  2,  3 
let [A, [[B], C]] = [1, [[2], 3]];
console.log(A, B, C);  // 1,  2,  3 

// 忽略
let [a1, , c1] = [1, 2, 3];
console.log(a1, c1);    //  1,  3 
let [, b2, , d2] = [1,2, 3,4];
console.log(b2, d2);    // 2,  4 
let [a3, [, b3], [,,c3]] = [1, [2,3], [4,5,6]];
console.log(a3, b3, c3);    // 1,  3,  6 

支持不完全解構(gòu),可以做個(gè)簡單了解,但不推薦使用,會有報(bào)錯(cuò)

// Error: Tuple type '[number]' of length '1' has no element at index '1'
let [a1, b1] = [1];
console.log(a1, b1);    // 1,  undefined 

let [a2 = 1, b2] = [];
console.log(a2, b2);    // 1,  undefined 

支持剩余參數(shù),通過...參數(shù)來設(shè)定,它會用于收集剩余的元素來創(chuàng)建一個(gè)新的數(shù)組。文章來源地址http://www.zghlxwxcb.cn/news/detail-668817.html

// 數(shù)組
let [a, ...b] = [1, 2, 3];
console.log(typeof(a), typeof(b));  // "number",  "object" 
console.log(a, b);                  // 1,  [2, 3] 

// 對象
let {age, ...params} = {
    name: "ES", 
    age: 2023, 
    value: 1,
}
// 參數(shù)age被賦值,其余的都給了params
// 2023,  {"name": "ES", "value": 1} 
console.log(age, params);   

// 函數(shù)參數(shù),比如求和
function AddNum(...numbers: any) {
    let totalValue = 0;
    for (let num of numbers) {
        totalValue += parseInt(num);
    }
    return totalValue;
}
console.log(AddNum(1, 2, 3));       // 6
console.log(AddNum(1, "2", "3"));   // 6

到了這里,關(guān)于ECMAScript6 簡介及拓展的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【ECMAScript6_3】正則、數(shù)值、函數(shù)、數(shù)組、對象、運(yùn)算符

    1、如果RegExp構(gòu)造函數(shù)第一個(gè)參數(shù)是一個(gè)正則對象,那么可以使用第二個(gè)參數(shù)指定修飾符。而且,返回的正則表達(dá)式會忽略原有的正則表達(dá)式的修飾符,只使用新指定的修飾符。 ES5不允許第二個(gè)參數(shù)使用修飾符, 2、ES6將字符串中可以使用正則表達(dá)式的4個(gè)方法全部調(diào)用RegExp的

    2024年02月15日
    瀏覽(16)
  • TypeScript教程(一)簡介與安裝

    ????????TypeScript 是 JavaScript 的一個(gè)超集,擴(kuò)展了JavaScript的語法,因此現(xiàn)有的JavaScript可與TypeScript一起工作無需修改,支持 ECMAScript 6 標(biāo)準(zhǔn)(ES6 教程)。 1.類型批注和編譯時(shí)類型檢查 2.類型推斷 3.類型擦除 4.接口 5.枚舉 6.泛型編程 7.名字空間 8.元組 9.Await 10.Mixin 從ECMA2015反

    2024年02月13日
    瀏覽(37)
  • 【ECMAScript6_6】async 函數(shù)、Class、Module、異步遍歷器、ArrayBuffer、Decorator裝飾器

    1、async 函數(shù) async 函數(shù)是什么?一句話,它就是 Generator 函數(shù)的語法糖。async函數(shù)就是將 Generator 函數(shù)的星號(*)替換成async,將yield替換成await,僅此而已。 async函數(shù)自帶執(zhí)行器,只要調(diào)用了asyncReadFile函數(shù),它就會自動執(zhí)行,輸出最后結(jié)果。不像 Generator 函數(shù),需要調(diào)用next方法

    2024年02月16日
    瀏覽(14)
  • ECMAScript 6語法簡介

    在Vue開發(fā)中,使用塊作用域構(gòu)造 let 和 const 可以更好地管理變量的作用域,避免出現(xiàn)意外的變量污染。 let 可以在塊級作用域中聲明一個(gè)變量,并且該變量僅在該作用域內(nèi)有效。 解析:在上述代碼中,我們在塊級作用域內(nèi)部使用 let 聲明了變量 value 。在 if 代碼塊內(nèi)部,

    2024年02月15日
    瀏覽(25)
  • ECMAScript (ES)簡介

    ECMAScript (ES) 是一種標(biāo)準(zhǔn)化的腳本語言規(guī)范,它是 JavaScript 語言的基礎(chǔ) 基本語法結(jié)構(gòu): 變量聲明 : 使用 var (ES5 及以前版本)、 let (ES6 起引入)或 const (ES6 起引入)聲明變量。 數(shù)據(jù)類型 : 基本數(shù)據(jù)類型: number 、 string 、 boolean 、 null 、 undefined 、 symbol (ES6 新增

    2024年04月11日
    瀏覽(24)
  • 【TypeScript】TypeScript中的泛型

    定義一個(gè)函數(shù)或類時(shí),有些情況下無法確定其中要使用的具體類型(返回值、參數(shù)、屬性的類型不能確定),此時(shí)泛型便能夠發(fā)揮作用。 舉個(gè)例子: 上例中,test函數(shù)有一個(gè)參數(shù)類型不確定,但是能確定的時(shí)其返回值的類型和參數(shù)的類型是相同的,由于類型不確定所以參數(shù)和

    2024年02月09日
    瀏覽(30)
  • 《前端面試題》- TypeScript - TypeScript的優(yōu)/缺點(diǎn)

    簡述TypeScript的優(yōu)/缺點(diǎn) 優(yōu)點(diǎn) 增強(qiáng)了代碼的可讀性和可維護(hù)性 包容性,js可以直接改成ts,ts編譯報(bào)錯(cuò)也可以生成js文件,兼容第三方庫,即使不是ts編寫的 社區(qū)活躍,完全支持es6 缺點(diǎn) 增加學(xué)習(xí)成本 增加開發(fā)成本,因?yàn)樵黾恿祟愋投x 需要編譯,類型檢查會增加編譯時(shí)長,語

    2024年04月23日
    瀏覽(25)
  • 【TypeScript】TypeScript的介紹、安裝和配置

    TypeScript是JavaScript的超集。 它對JS進(jìn)行了擴(kuò)展,向JS中引入了類型的概念,并添加了許多新的特性。 TS代碼需要通過編譯器編譯為JS,然后再交由JS解析器執(zhí)行。 TS完全兼容JS,換言之,任何的JS代碼都可以直接當(dāng)成JS使用。 相較于JS而言,TS擁有了靜態(tài)類型,更加嚴(yán)格的語法,更

    2024年02月09日
    瀏覽(22)
  • 16.【TypeScript 教程】TypeScript 泛型(Generic)

    本節(jié)開始介紹 TypeScript 一些進(jìn)階知識點(diǎn),第一個(gè)要介紹的泛型是 TypeScript 中非常重要的一個(gè)概念,它是一種用以增強(qiáng)函數(shù)、類和接口能力的非??煽康氖侄?。 使用泛型,我們可以輕松地將那些輸入重復(fù)的代碼,構(gòu)建為可復(fù)用的組件,這給予了開發(fā)者創(chuàng)造靈活、可重用代碼的能

    2024年01月18日
    瀏覽(39)
  • Vue中使用Typescript及Typescript基礎(chǔ)

    Vue中使用Typescript及Typescript基礎(chǔ)

    準(zhǔn)備工作 新建一個(gè)基于ts的vue項(xiàng)目 通過官方腳手架構(gòu)建安裝 最新的Vue CLI工具允許開發(fā)者 使用 TypeScript 集成環(huán)境 創(chuàng)建新項(xiàng)目。 只需運(yùn)行 vue create my-app 然后選擇選項(xiàng),箭頭鍵選擇 Manually select features,確保選擇了 TypeScript 和 Babel 選項(xiàng) 在已存在項(xiàng)目中安裝typescript 在建好的vue項(xiàng)

    2024年02月15日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包