學習記錄 ES6(2020 12 05)

2021-10-11 11:02:03 字數 2148 閱讀 7593

* 變數提公升

*var宣告的變數存在變數提公升

*let宣告的變數不存在變數提公升

* 作用域

*var定義的變數沒有塊作用域,只有函式作用域,可以跨塊訪問, 不能跨函式訪問。

*let定義的變數有塊作用域,在塊作用域裡定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。

* 變數名

* 同一作用域下,let不能宣告同名變數,var可以。

var a=

123;if(

true

)

* 報錯,是暫時性死區的原因,塊作用域裡的a繫結在塊作用域,let沒有變數提公升的概念,不能先使用再宣告。

* 在某乙個作用域內,如果存在某乙個變數,就會繫結該區域不再受外部影響

var person=

let str=

` `

;結果呈現:使用者的姓名為 ,年齡是

result.innerhtml=str;

*

let str =

`使用者的姓名為

$,年齡是$`

;

$

("#result").

("he is"

+person.name+

""

+"and we wish to

know his"+person.age+"

.that is all" )

*$(

"#result").

(`he is

$and we wish to know his

$.that is all`

);

let object =

;let

= object;

console.

log(firstname+

'\t'

+lastname)

;

* bill	undefined

* 物件解構,按照屬性名,屬性名相同才能獲得值,否則為undefined。

var tmp =

newdate()

;functionf(

)}f(

)

//等價於

functionf(

)}var tmp;

tmp =

newdate()

;f()

;* undefined

* 在函式中使用函式內部的區域性變數,var定義的變數有宣告提前,輸出undefined。

//a程式:

var a =

;for

(let i =

0; i <

10; i++);

}a[8]

(); a[9]

();//b程式

var a =

;for

(var i =

0; i <

10; i++);

}a[8]

(); a[9]

();

*

a程式輸出: 89

*b程式輸出:

1010

* 執行完for迴圈,陣列中儲存了10個函式的引用

* 在b程式中,使用var宣告的變數i為全域性變數,執行完迴圈後,i為10,輸出的i為全域性的10

* 在a程式中,使用let宣告的變數有塊作用域,所以在for迴圈表示式中使用let其實就等價於在**塊中使用let,也就是說

*for

(let i =

0; i<

5; i++

) 這句話的圓括號之間,有乙個隱藏的作用域

*for

(let i =

0; i<

5; i++

) 在每次執行迴圈體之前,js 引擎會把 i 在迴圈體的上下文中重新宣告及初始化一次。

學習記錄 ES6(2020 12 07)

class person 年齡 say 年齡 let p newperson 張三 23 let str p.say console.log str script 結果 var p newperson console.log p.proto person.prototype 結果 true 類和建構...

學習記錄 ES6 module

export 和 import 簡單的例子 a.js export const a i am a index.js import from a.js console.log a i am a export import 嚴格模式 export 的具體使用方式,以及 import 的具體使用方式 de...

ES5學習記錄 1

進入嚴格模式只需要使用 use strict 這條語句即可。對於支援嚴格模式的瀏覽器,會在宣告 use strict 語句之後的 都將會在嚴格模式的限制下執行。對於不支援嚴格模式的瀏覽器,這個宣告只是乙個簡單的字串,不會產生任何影響。使用 嚴格模式的宣告必須放在指令碼第一行,否則整個指令碼會以正常模...