ES6 變數宣告方式

2022-02-23 18:21:22 字數 3774 閱讀 8351

var, function, let, const, import, class
1. let只在所在的**塊中有效

2. 以前我們需要用iife解決的問題 

3. 不存在變數宣告提公升

4. 暫時性死區tdz

//

1. let只在所在的**塊中有效

2. 以前我們需要用iife解決的問題

3. 不存在變數宣告提公升

console.log(foo);//

輸出undefined

console.log(bar);//

報錯referenceerror

var foo = 2;

let bar = 2;

console:

//

4. 暫時性死區tdz

var temp = 123;

if (true

)

//

5. let不允許重複宣告

1. 大部分和let差不多

2. const(唯讀)(一旦宣告必須賦值)

3. 對於復合型別變數(可以給它的屬性賦值)

//

1. 大部分和let差不多

//2. const(唯讀)(一旦宣告必須賦值)

const max = 123;

max = 1; //

報錯

//

3. 對於復合型別變數(可以給他的屬性賦值)

const a ={};

a.name = "dai";

a.age = 21;

//

4. 如果你不想新增屬性

1. class作為es6的語法糖,實際es5也可以實現

class point

tostring()

}object.assign(point.prototype, ,

gety()

})let p1 = new point(1, 2);

console.log(p1.tostring());

//1,2

console.log(p1.getx()); //

1 console.log(p1.gety()); //

2 console.log(object.keys(point.prototype));//

["getx", "gety"]

(1)、方法之間不需要逗號分隔

(2)、tostring () {} 等價於 tostring: function () {}

(3)、你仍然可以使用point.prototype

(4)、你可以用object.assign()一次性擴充套件很多方法

(5)、類內部定義方法多是不可以列舉的

(6)、constructor(){}是乙個預設方法,如果沒有新增,會自動新增乙個空的。

(7)、constructor預設返回例項物件(this),完全可以指定返回其他的物件。

(8)、必須用new呼叫

(9)、不存在變數提公升

(10)、當用乙個變數去接受class時,可以省略classname

(11)、es6不提供私有方法

//

2、使用extends繼承

class threedpoint extends point

tostring ()

static getinfo()

get z()

set z(value)

} threedpoint.getinfo();

//"static method"

let ta = new threedpoint(2,3,4);

console.log(ta.tostring());

//2,3,4

console.log(ta.z); //

4 ta.z = 200; //

200 console.log(object.getprototypeof(threedpoint)); //

point

(1)、constructor中必須呼叫super,因為子類中沒有this,必須從父類中繼承。

(2)、子類的__proto__屬性總是指向父類

(3)、子類的prototype屬性的__proto__總是指向父類的prototype

(4)、object.getprototypeof()獲取父類

(5)、super作為方法只能在constructor中

(6)、super作為屬性指向父類的prototype.

(7)、在constructor中使用super.x = 2,實際上this.x = 2;但是讀取super.x時,又變成了父類.prototype.x。

(8)、原生建構函式是無法繼承的。

(9)、get set 方法可以對屬性的賦值和讀取進行攔截

(10)、靜態方法不能被例項繼承。通過static宣告

(11)、靜態屬性只能 threedpoint.name = "123" 宣告 (與static沒什麼關係)

1. es6引入自己的模組系統,通過export匯出,import匯入

2. 與commonjs不同的是,它是獲取模組的引用,到用的時候才會真正的去取值 

//

3. 例如student.js中:

let student =[,,

]export

default student;//

// 這種匯出方式,你可以在import時指定它的名稱

//

import studentlist from './student.js'; //

指定名稱

console.log(studentlist[0].name);//

小張

ES6的變數宣告方式

保留了var和function。新增加了let const class和import。而且,let const class宣告的全域性變數再也不會和全域性物件的屬性掛鉤了。let 1 let只在所在的 塊中有效 for var i 0 i 10 i console.log i 10 for let ...

Es6之變數宣告

es6變數宣告let 和 canst,let 所宣告的變數具有塊級作用域,且宣告的變數不會前置,而const宣告的是不變了常量 let test test let 所宣告的變數只在塊級作用域內有效,而var就不同 for var i 1 i 5 i console.log str 輸出hello.c...

ES6之新的變數宣告方式

作用域就是變數的有效範圍 之前只有全域性作用域和函式作用域 let和const是新的變數宣告方式 輸出結果 使用let定義的變數只能用在定義它的那個塊裡 在這個塊之外是不能使用這個變數的 就是將宣告的變數繫結在宣告該變數的塊裡 同理 可以看做為最簡單的塊級元素 大括號外當然也訪問不到 輸出結果 因為...