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]=;ps:若乙個陣列成員不嚴格等於undefined,則其預設值不會生效let [x,y =『a』]=[『b』];
let [m,n = 『b』]=[『a』,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...