ES6學習筆記 let的使用

2021-09-19 08:23:40 字數 1380 閱讀 1828

for(var i = 0; i < 10; i++){}

console.log(i); //10

for(let j = 0; j < 10; j++){}

console.log(j); //"referenceerror: j is not defined

疑問:

console.log(a); // 輸出undefined

console.log(b); // 報錯referenceerror

console.log(c); // 報錯referenceerror

var a = 2;

let b = 2;

注意區別undefinedreferenceerror

只要進入當前塊級作用域,所使用的變數已經存在了,但在宣告之前都屬於死區,不可進行操作。

注意:typeof不再是100%安全的操作

typeof x; // referenceerror

typeof y // undefined

let x;

let x = 1;

let x; // "syntaxerror: identifier 'x' has already been declared

var y = 2;

var y = 3; // y = 3

// 匿名函式寫法

(function () ());

// 塊級作用域寫法

es5的嚴格模式規定,函式只能在頂層作用域和函式內宣告,其他情況(比如if**塊、迴圈**塊)的宣告都會報錯。

// es5

'use strict';

if (true) // 報錯

}

es6由於引入了塊級作用域,這種情況可以理解成函式在塊級作用域內宣告,因此不報錯,但是構成區塊的大括號不能少

// 報錯

'use strict';

if (true)

function f() {}

"use strict";

var a = 1;

console.log(window.a) // 1

let b = 1;

console.log(window.b) // undefined

es6學習筆記 let和const

console.log b uncaught referenceerror a is not defined 在for迴圈中,迴圈語句部分是乙個作用域,內部又是乙個作用域 for let a 1 a 3 a 在let宣告變數完成前,對變數賦值會出錯es中模仿塊級作用域 function functi...

ES6學習筆記 let和const

今天開始讀阮一峰的 ecmascript 6 入門 在這裡記錄下閱讀過程中的要點,以便隨時查閱。頂層物件的屬性與全域性變數掛鉤,被認為是js最大的敗筆之一,es6開始,全域性變數將逐步與頂層物件脫鉤。為了保持相容性,一方面,var和function宣告的全域性變數,依舊是頂層物件的屬性 另一方面,l...

ES6 學習筆記 let和const

學習資料 ecmascript 6 入門 如果使用var,只有乙個全域性變數i var a for var i 0 i 10 i a 6 10var a for let i 0 i 10 i a 6 6設定迴圈變數的那部分是乙個父作用域,而迴圈體內部是乙個單獨的子作用域 for let i 0 i ...