ES6

ES6簡介

ECMAScript 6.0(以下簡稱 ES6)是 JavaScript 語言的下一代標準,已經(jīng)在

2015 年 6月正式發(fā)布了。它的目標,是使得 JavaScript 語言可以用來編寫復雜的

大型應用程序,成為企業(yè)級開發(fā)語言

ES6 既是一個歷史名詞,也是一個泛指,含義是 5.1版以后的 JavaScript 的下

代標準,涵蓋了 ES2015、ES2016、ES2017 等等,而 ES2015 則是正式名稱,特

指該年發(fā)布的正式版本的語言標準

1.let和const

let聲明變量沒有變量提升

塊級作用域

let不能重復聲明

const聲明常量一旦聲明無法被修改? (獨有的)

const聲明對象時不能直接修改如

const person = {name:'1'};

person = {age:10};

但是可以

person.name = ‘a(chǎn)lex

不會污染全局變量

let聲明的變量不會影響window里邊的對象

在默認情況下使用const,而只有在知道變量值要修改的情況下使用let

2.模板字符串

let value = 1;

``反引號里邊插入變量時${value};

剩余運算符,把多個獨立的合并到一個數(shù)組中? 如果用{}包裹起來則返回一個對象 {...other}

擴展運算符:將一個數(shù)組分割,并將各項作為分離的參數(shù)傳給函數(shù)

求數(shù)組最大值es5

const arr = [10,20,15,30,90,100];

? ? ? ? console.log(Math.max.apply(null,arr));

es6中 ...擴展運算符將arr拆開

console.log(Math.max(...arr));

3.箭頭函數(shù)? a,b為參數(shù)? =>為函數(shù)

let add = (a,b)=> {

? ? ? ? ? ? return a + b;

? ? ? ? }

()相當于return? 可加可不加? ? let add = (val1,val2)=> val1 + val2;

let add = val =>(val + 5);

如果返回形參的話

let add = val =>val;

返回對象或者數(shù)組時要用()括起來

let getObj = id =>({id:id,name:'12312'});

? ? ? ? console.log(getObj(1));

箭頭函數(shù)里邊是沒有this指向的? 要是用this內(nèi)部的值向上查找作用域

給對象里邊的方法設置函數(shù)時不要用箭頭函數(shù),不然this就向上尋找作用域

一旦使用箭頭函數(shù)里邊就沒有arguements? 因為沒有作用域鏈了

箭頭函數(shù)不能使用new關鍵字來實現(xiàn)實例化對象

function函數(shù)是一個對象,但是箭頭函數(shù)不是一個對象他是一個表達式

4.解構賦值

解構賦值是對運算符的一種擴展

他針對數(shù)組和對象來進行操作

有點:代碼書寫上簡單易讀

完全結構

let node = {

? ? ? ? ? ? type:'hide',

? ? ? ? ? ? name:'foo'

? ? ? ? }

? ? ? ? let {type,name} = node;

? ? ? ? console.log(type,name);

不完全結構

let (type) = node;

默認值

let {a,b = 30} = {a:20};

? ? ? ? console.log(a,b);

數(shù)組同理

5.擴展對象功能

const name = 'xiaomage',

? ? ? ? age = 20,

? ? ? ? city = 'Beijing';

? ? ? ? const person = {

? ? ? ? ? ? name,? 等同于name:name

? ? ? ? ? ? age,

? ? ? ? ? ? city,

? ? ? ? ? ? sayName(){

? ? ? ? ? ? ? ? console.log(this.name);


? ? ? ? ? ? }

? ? ? ? }

? ? ? ? person.sayName()

同名簡寫

拋出錯誤

if(newVal < this.wheel){

? ? ? ? ? ? ? ? ? ? throw new Error('輪子太少');

? ? ? ? ? ? ? ? }

給對象添加key時可以用【】里邊可以拼接

const obj = {};

? ? ? ? obj.isShow = true;

? ? ? ? const name = 'a';

? ? ? ? obj[name + 'bc'] = 123;

? ? ? ? obj['f'+'bc'] = function(){

? ? ? ? ? ? console.log(this);


? ? ? ? }

? ? ? ? console.log(obj);

總結:屬性名要動態(tài)變化時要用中括號里邊用+進行拼接

===不嚴謹? ? +0 === -0 返回的時false? NaN === NaN返回也是false

Object.is(NaN,NaN)? 嚴格意義上比較

assign()

對象合并? 返回合并之后的新對象

let target =? Object.assign({},{a:1},{b:2});? 將obj1? onj2合并到traget

? ? ? ? console.log(target);? ?

6.Symsbol? ? ? 了解一下不太常用

原始數(shù)據(jù)類型,Symbol,他表示獨一無二

最大用途? 用于定義對象的私有變量

如果Symbol定義的對象的變量,取值時一定要用[變量名]

let s1 = Symbol('s1');

? ? ? ? // console.log(s1);

? ? ? ? let obj = {};

? ? ? ? obj[s1] = '12312312';

? ? ? ? console.log(obj[s1]);

? ? ? ? console.log(obj.s1); ? 一定不能用.來獲取

使用Symbol時? for i遍歷對象無法獲取

let s = Object.getOwnPropertySymbols(obj);? 通過這個來獲取Symbol

let m = Reflect.ownKeys(obj);

? ? ? ? console.log(m);

7.set和map

set創(chuàng)建

let set = new Set();

? ? ? ? set.add(1);

添加時沒有重復值不會重復會合并

set.add([1,2,3]);? ? 添加數(shù)組? ?

set.delete(2)? 刪除2的元素

set.has(4)? 判斷書否含有4這個元素

將set轉(zhuǎn)換為數(shù)組

let set2 = new Set([1,2,3,4,5]);

? ? ? ? let arr = [...set2];

? ? ? ? console.log(arr);

set里邊的對象無法被釋放

let set3 = new Set(),obj = {};

? ? ? ? set3.add(obj);

? ? ? ? obj = null;

? ? ? ? console.log(set3);

weakSet可以刪除對象? 但是里邊的方法比較少

不能傳入非對象類型的參數(shù)

不可迭代

沒有forEach()

沒有size屬性

let set4 = new WeakSet(),obj2 = {};

? ? ? ? set4.add(obj2);

? ? ? ? obj2 = null;

? ? ? ? console.log(set4);

map類型時鍵值對的有序列表,鍵和值時日益類型

let map = new Map();

? ? ? ? map.set('name','zhangsan');

? ? ? ? map.set('age',20);

? ? ? ? console.log(map.get('name'));? ? 獲取值

? ? ? ? console.log(map);

? ? ? ? map.has('name');? ? 是否含有

? ? ? ? map.delete('name');? 刪除

? ? ? ? map.clear(); 清空

? ? ? ? console.log(map);

鍵和值可以是任意類型的

let map = new Map();

map.set(['a',[1,2,3]],'hellow');

復合寫法

let m = new Map([

? ? ? ? ? ? ['a',1],

? ? ? ? ? ? ['b',2]

? ? ? ? ])



1.只有input 和 textarea才有select() 方法 用這個方法可以進行選中 配合 document.execCommand('copy')來進行復制

2.npm出錯

以管理員身份運行PowerShell

右鍵點擊PowerShell圖標,選擇 “以管理員身份運行”。

輸入以下命令

powershell

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

RemoteSigned:允許運行本地腳本,遠程腳本需簽名。

-Scope CurrentUser:僅對當前用戶生效,無需全局修改。

重啟PowerShell

關閉當前窗口,重新打開PowerShell測試 npm -v。

3

// 發(fā)起 GET 請求

fetch('https://api.example.com/data')

? .then(response => {

? ? // 檢查 HTTP 狀態(tài)碼(如 200)

? ? if (!response.ok) {

? ? ? throw new Error('網(wǎng)絡響應異常: ' + response.status);

? ? }

? ? // 解析 JSON 數(shù)據(jù)

? ? return response.json();

? })

? .then(data => {

? ? console.log('獲取的數(shù)據(jù):', data);

? })

? .catch(error => {

? ? console.error('請求失敗:', error);

? });數(shù)必須要有返回值

返回值也可以這樣寫

await? 是等異步返回結果時返回結果,不會向下執(zhí)行

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 什么是ES6? ECMAScript 6.0 是繼ECMAScript 5.1 之后 JavaScript 語...
    多多醬_DuoDuo_閱讀 1,236評論 0 4
  • Es6 1.數(shù)組 1.擴展運算符 是三個點(...)。它好比 rest 參數(shù)的逆運算,將一個數(shù)組轉(zhuǎn)為用逗號分隔的參...
    林深不見鹿閱讀 262評論 0 0
  • 1、es5和es6的區(qū)別,說一下你所知道的es6 ECMAScript5,即ES5,是ECMAScript的第五次...
    沒糖_cristalle閱讀 762評論 0 0
  • ES6新增特性 【說明】ES5和ES6是javascript語法發(fā)展過程中的新增版本,對一些語法及功能性方法作了增...
    time_剛剛好閱讀 2,482評論 0 5
  • 一.學習ES6(ECMAScript2015)前要搞明白兩個問題,什么是ES6,為什么要學習ES6 1.什么是ES...
    往事已如過眼云煙閱讀 875評論 0 0

友情鏈接更多精彩內(nèi)容