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...