ES6學習筆記一:let、const與作用域
- 前言
- 一、ES6新增塊關鍵字let、const
- 二、let關鍵字
- 2.1.基本方法
- 2.2.不存在變數提升
- 2.3.暫時性死區
- 三、const關鍵字
- 3.1.基本方法
- 總結
前言
此系列文章用于記錄小萌新的ES6的學習經歷如有什么錯誤或者不好的地方請各位大佬多多指教
一、ES6新增塊關鍵字let、const
在ES5中只有var關鍵字來定義變數,ES6新增了兩個關鍵字let和count對變數進行宣告,
并且在ES5中作用域方面不支持塊級作用域,而ES6添加這兩個關鍵字就是為了劃分塊級作用域
二、let關鍵字
2.1.基本方法
ES6 新增了 let 命令,用于宣告變數,其用法類似于 var ,但是所宣告的變數只在 let命令所在的代碼塊內有效,
代碼如下(示例):
{
let a = 10;
var b = 1;
}
console.log(b); // 1
console.log(a); // ReferenceError: a is not defined
上面的代碼在let宣告的塊作用域外進行使用會報錯, 而var回傳了正確的值,所以let只能在所定義的塊作用域里面進行使用
注意:
代碼如下(示例):
{
var b = 5;
var b = 1;
console.log(b); // 1
}
{
let a = 10;
let a = 1;
console.log(a); // SyntaxError: Identifier 'a' has already been declared
}
上面的代碼var宣告的變數可以重新定義覆寫,而let不能重新定義相同名字的變數,
2.2.不存在變數提升
在js中var定義變數時,會出現變數提升的現象即在定義變數之前進行使用會顯示var為undefined并不會報錯,而let所定義的變數則沒有變數提升的問題,
代碼如下(示例):
console.log(b); // undefined
var b = 1;
console.log(a); // ReferenceError: a is not defined
let a = 10;
2.3.暫時性死區
S6明確規定,如果區塊中存在let和const命令,則這個區塊對這些命令宣告的變數從一開始就形成封閉作用域,
在代碼塊內,使用let命令宣告變數之前,該變數都是不可用的,這個區域被稱為“暫時性死區”,
{
var temp = 123;
if (true) {
console.log(temp); //ReferenceError: Cannot access 'temp' before initialization
let temp;
}
}
三、const關鍵字
3.1.基本方法
宣告一個只讀的常量,一旦宣告,其值不能改變且必須立即初始化,
除此之外,與let用法一致,
在下面這種情況當常量保存的不是一個值,而是一個地址的時候,該常量所參考的物件是可以更改成員的,只是不能更改該常量保存的地址,
{
const foo={y:10};
foo.x=100;
console.log(foo.x);
foo={n:1000};
}
總結
例如:以上就是今天要講的內容,本文僅僅簡單介紹了ES6的let和const關鍵字的使用,轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/272936.html
標籤:區塊鏈
