ES6整理 let和const命令

2021-09-26 14:54:31 字數 1829 閱讀 7555

es6介紹

ecma國際標準化組,他們希望這種語言成為國際化標準相容大部分主流瀏覽器,所以ecmascript就是js的一種寫作規格。es6在2023年提出的語法,在以前大部分瀏覽器沒有完全識別es6語法可以在node.js等框架內進行使用,但是現在es6語法已經被大部分瀏覽器所支援,可以在頁面上直接執行。用es6完全替代ecmascript標準不太現實,所以在2023年對ecmascript的標準進行了公升級簡稱es6語法。

let和const命令

let是es6新增的命令,用來宣告變數,類似於var,但是宣告的變數只在let命令所在的**塊內有效。

if(true)//a輸出22 b報錯;(let讓**塊標稱私有)
不存在變數提公升

var宣告的變數會存在變數提公升,在變數宣告之前呼叫,值會自動找undefine型別,所以值找不到也沒在頁面上輸出,這種現象不好,在let裡糾正了此行為,找不到變數會進行報錯。

例如: console.log(a)

var a=11;//輸出undefined

let a=11;//輸出錯誤

暫時性死區

只要在塊級作用域內存在let命令,他所宣告的變數就進行了鎖定,不在受外部環境的影響。

例如:var a=11

if(true)

document.writeln(a);//報錯,因為在if裡let重新宣告了a變數,就把作用在**裡進行繫結。

let不允許重複宣告

let不允許和var在同乙個作用域下宣告同乙個變數

例如: function fun();//報錯
es6的塊級作用域

在函式裡巢狀時,為了防止變數定義重複,可以let宣告塊級作用域

function fun() 

console.log(n)

fun();//輸出1

const命令

const用來宣告常量,一旦宣告,常量的值就不能改變

1.常量定義時必須賦值

const n;//報錯

2.常量的值就不能改變

const pi=3.1415;

pi=3.3;//報錯

3.常量宣告不會變數提公升,也會出現暫時性死區

if(true);max//輸出報錯

本質和原理

const實際上保證的並不是變數的值不可改動,而是變數指向的內個記憶體位址不可改動。對於基本資料型別,值就儲存在變數指向的記憶體位址中,所以值不可改變,所以等同於常量。但是對於復合型別(引用型別)而言,變數指向的記憶體位址儲存的只是乙個指標,const只能保證這個指標是固定的,至於它指向的資料結構是不是可變的,完全不能控制。

> const emp= emp.name="lisi" emp.name=" zhangsan」

> document.writeln(emp.name) ;//我們可以改物件下的屬性和方法 emp= [ ]

> document.writeln(emp)//但是卻不能把物件變成其他型別值

var ,function,let,const,class,import

ES6學習 let和const命令

1.let命令 所宣告的變數命令所在 塊有效 a referenceerror a is not defined.b 1for迴圈的計數器,就很適合let命令 for let i 0 i arr.length i console.log i referenceerror i is not defin...

ES6 一 let和const命令

在js中是沒有塊級作用域的,var 宣告的變數作用域是整個函式體,而let可以起到這一作用 console.log b 2 console.log a a is not defind 而let可以起到這一作用啊在js中變數和函式的宣告會提公升到當前作用域最頂部執行。這樣就會出現問題。var a 函式...

es6學習筆記 let和const

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