let const和解構賦值的相關概念

2021-10-22 09:09:29 字數 2341 閱讀 9787

1、let命令

定義:類似於var,但所宣告的變數只在其所在的**塊中生效

例:console.log(a);//1

console.log(b);//referenceerror

其var宣告所在的變數無論在何處,都會被視為宣告所在函式的頂部,這就是變數提公升。

暫時性死區:

例:var temp=123;

if(true)

在這個**塊內,使用let宣告變數之前使用,該變數都是不可用的,這個區域被稱為暫時性死區。

不能重複宣告:

例:function fn()

function fn()

function fn()

function fn()

以上四個函式在呼叫時,只有其第四個函式不會報錯。即let不能重複宣告變數。

即let與var的三個區別:

一、let只能作用於塊級作用域(下面會提到幾個作用域)

二、let會造成暫時性死區

三、let不能重複宣告變數(在同乙個作用域內)

作用域在es5裡,只存在兩個作用域——全域性作用域和區域性作用域(函式作用域);但es6裡卻新增了乙個塊級作用域。

es5裡出現的問題:

例:var tmp=new date();

function f()

}f();//內層變數可能會覆蓋外層變數

——————————

var s=「hello」

for(var i=0;i陣列解構賦值

例:let [a, b, c] = [1, 2 , 3];

本質上,這種寫法屬於」模式匹配「,只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值。

例:let [foo,[[bar],baz]]=[1,[[2],3]];

ps:若萬一解構不成功,即沒有對應的值賦給變數,那麼就會等於undefined

若沒有變數接受的解構值會被忽略掉。

如果兩邊不是相同的型別就會報錯

解構值允許指定預設值

例:

let [foo =true]=;

let [x,y =『a』]=[『b』];

let [m,n = 『b』]=[『a』,undefined];

ps:若乙個陣列成員不嚴格等於undefined,則其預設值不會生效

預設值可以引用解構賦值的其他變數,但該變數必須已經宣告,否則會報錯

let [x = 1 , y = x] = ; i i x=l ; y=l

let [x = 1, y = x] = [2]; ii x=2 ; y=2

let [ x = 1 , y = x] = [ 1 , 2] ; ii x=l; y=2

let [ x = y , y = l] = [ ] ; ii referenceerror

物件結構賦值

物件的解構賦值與陣列不同,陣列的元素是按次排列的,變數的取值是由其位置決定。

物件的屬性沒有次序,變數必須與屬性同名才能取到正確的值

let = ;

too // "aaa "

bar //「bbb」

如果變數名與屬性名不一致,必須明確對應關係。

let obj = ;

let =obj;

f // 』 h ello 』

l // 』 world 』

var = ;

x // 1

y // 5

var = {};

y // 3

var = ;

y // 5

//其解構失敗的例子如下//

let =;//undefined

//將已經宣告的變數運用到解構賦值//

let x;

( = arr;

first // 1

last // 3

最後解構賦值的用途可以歸為幾大部分

function func()

let [a,b,c]=func();

function f([x,y,z])

f([1,2,3]);

const json=』』;//從後台返回的一串字串

let data=json.parse(json);

let=data;

console.log(id,status,numbers);

ES6學習筆記一 let const 解構賦值

一 let與const命令 1 let命令 es6新增了let命令,用來宣告變數。它的用法類似於var,但是所宣告的變數,只在let命令所在的 塊內有效。let命令彌補了es語法一切皆公開的弊端,起到了區域性變數的功能,增加了塊級作用域。for迴圈的計數器,就很合適使用let命令來宣告,它只在for...

解構賦值 陣列的解構賦值

什麼是解構賦值?es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 我的理解是 允許宣告一種模式 陣列 物件等 裡面包含乙個或多個變數,再分別對這些變數遍歷 按照對應位置 賦值。以前,為變數賦值,只能直接指定值。let a 1 let b 2 通...

擴充套件運算子和解構賦值的理解

var foo function a,b,c var arr 1,2,3 傳統寫法 foo arr 0 arr 1 arr 2 使用擴充套件運算子 foo arr 1 2 3 陣列深拷貝 var arr2 arr var arr3 arr console.log arr arr2 true,說明ar...