js里的const和let,js construct

本文目錄一覽:

JavaScript ES6中var,let,const分別什麼時候使用

如果在條件循環語句里用var申明的變數在循環外也可以引用,let 則不行,希望變數是局部變數時使用let最好,var一不小心就申明了全局變數了,const用來聲明靜態變數的 ,變數值不會改變的變數

var、let、const三者之間的區別和聯繫有哪些?

var 是es5之前當然之後也可以這麼寫的寫法!

es5之後又細分出了let(變數)const(常量)這兩種類型。

但是const的出現也表示js腳本開始走向類如java,c#那種重型語言的編寫方式,明確細分了常量和變數。

然後let對比var都是變數(var沒有變數常量一說,但ES5之後其行為與let類似),但是,var和let有很大區別,簡單理解就是作用域變了,如果你學過後端語言的話,你會知道,使用變數需要先聲明在賦值後使用的流程,let繼承了這種流程,而var沒有,在代碼里的體現就是,let只在定義它的上一個大括弧內及其所有子方法體起作用,比如方法中定義let則出了這個方法就沒法使用到這個let,同級別的兩個方法,可以各自定義一個同名let變數。

其實說起來,你可能沒有感覺,因為你用var的時候可能也是這麼用的,但是let是被嚴格約束可以這麼用,而var其實是無約束的,在某些時候是亂竄。也就是你看到的是你想看的,但它裡面的運行不是你所想的!簡單來說,var的作用域是混亂的,同父子作用域下var可以被多次定義。而let不能!

const也是繼承了後端的常量思想,一旦定義,無法被修改,也不能被修改,也不應該被修改,如果你想改變以上3條中的任何一條,都不要使用const!所以const一般用於存儲固定不變的內容,比如系統信息里的名字啊,系統風格啊,審批號啊之類的,不是不能變,而是應該通過人為干預手寫的方式來改變其值,不能不應通過代碼的方式來賦值(初值除外)!

let和const的引入會對js編程帶來哪些改變

1. let 命令

① 在js中是沒有塊級作用域的,var 聲明的變數作用域是整個函數體,而let可以起到這一作用

{ let a = 1; var b = 2; } console.log(b); // 2 console.log(a); // a is not defind

② 而let可以起到這一作用啊在js中變數和函數的聲明會提升到當前作用域最頂部執行。這樣就會出現問題。

var a = []; //函數和變數i會最先進行聲明,同時全局變數i經過for循環賦值為10 for (var i = 0; i 10; i++) { a[i] = function () { console.log(i); }; } console.log(i);//10 a[6]();//10

而使用let就解決了這個問題

for (let i = 0; i 10; i++) { a[i] = function () { console.log(i); }; } a[6](); //6

③ let不像var那樣,會發生「變數提升」現象

console.log(a); // a is not defined let a = 1;

④ let不允許在相同塊級作用域內,重複聲明同一個變數

// 報錯 { let a = 10; var a = 1; } // 報錯 { let a = 10; let a = 1; }

2. const 命令

① const也用來聲明變數,但是聲明的是常量。一旦聲明,常量的值就不能改變。

② 與let相同也不能在相同塊級作用域內重複聲明同一個變數。

③ const的作用域與let命令相同:只在聲明所在的塊級作用域內有效。

const PI = 3.1415; console.log(PI); // 3.1415 //PI = 3; // Assignment to constant variable.(不能給常量賦值) //const PI = 3.1;// Identifier ‘PI’ has already been declared

var、function、let、const變數提升

我是從這兩篇文章的閱讀中,做出了自己的總結,如果不明白的話可以看看這兩篇文章:

變數提升情況:

變數提升概念:

js引擎在執行過程中變數的生命周期分為三個階段: 註冊、初始化、賦值

var、funciton、let、const的生命周期:

var 在註冊階段初始化是一起的,會被賦值為 undefined ,所以變數提升,列印出的是 undefined

function 在註冊階段初始化、執行都一起了,所以函數不管寫在哪裡都可以直接調用

let 在註冊階段和初始化是解耦的,只是創建了但是並未初始化,所以出現了暫時性死區,列印出的是 ‘x is not defined’

const 的生命周期與let一樣,只不過沒有賦值階段

js const定義函數?

const用來定義常量的,初始化之後不能修改,let定義變數的,初始化之後還可以被修改

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/195415.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 20:34
下一篇 2024-12-02 20:34

相關推薦

發表回復

登錄後才能評論