let var const

let 與var

1.let 變量不能重復(fù)聲明 ,var可以

let c=1;
let c=2;
console.log(c);

以下代碼重復(fù)對c進行聲明并賦值,新的賦值結(jié)果覆蓋舊的賦值結(jié)果,所以c輸出2

var c=1;
var c=2;
console.log(c);

2.塊級作用域

let定義的變量只在當(dāng)前塊級作用域中生效

<script> 
{
    let a = 1;
 }
 console.log(a);
</script>

var定義的變量可以在代碼塊外訪問到

<script>
 {
    var a = 1;
  }
  console.log(a);
</script>

3.不存在變量提升

<script>
 console.log(b);
 let b=2;
</script>

var存在變量提升,有代碼如下:

<script>
    console.log(b);
    var b=2;
</script>

而由于var的變量提升,實際代碼的執(zhí)行順序如下:

<script>
    var b;
    console.log(b);
    b=2;
</script>

執(zhí)行結(jié)果如下:


4.不影響作用域鏈

函數(shù)f()中輸出變量d的值,在函數(shù)f()作用域下找d的定義,如果找到了,輸出當(dāng)前作用域下的結(jié)果,如果沒有找到,則退至上一級作用域查找d的值,以此類推

<script>
{let d=3;
    function f(){
        console.log(d);
    }
}
 f();
</script>

let 實踐

點擊方塊,切換紅色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .item{
            width: 200px;
            height: 200px;
            border: 1px solid black;
            margin: 0 5px;
            float: left;
        }
    </style>
</head>
<body>
    <div class="container">
        <h2 class="page-header">點擊切換顏色</h2>
        <div class="item"></div>
    </div>
    <script>
        let items=document.getElementsByClassName('item');
        for(var i=0;i<items.length;i++){
            items[i].onclick=function(){
                // this.style.background='red';
                items[i].style.background='red';
            }
        }
    </script>
</body>
</html>

用this.style.background='red';切換成功,但是用items[i].style.background='red';不能生效。原因:循環(huán)體在按順序執(zhí)行,已經(jīng)執(zhí)行完畢,此可i=3,所以找不該對象,可以把循環(huán)體中的i改為let來聲明,i的值只在當(dāng)前代碼塊生效,不影響其他代碼塊。

const

const用于聲明常量

聲明常量要注意以下幾點:

  • 一定要賦初值
  • 一般常量使用大寫(潛規(guī)則)
  • 常量的值不能修改
  • 塊級作用域
  • 對于數(shù)組和對象的元素修改,不算做對常量的修改,不會報錯,因為指向的是地址
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • let基本用法 let所聲明的變量,只在let命令所在的代碼塊內(nèi)有效 for循環(huán)的計數(shù)器,就很合適使用let命令。...
    帶頭大哥orz閱讀 402評論 0 0
  • 前言 let和const命令是ES6新增的命令,用來聲明變量,這兩個變量跟ES5中的var有許多不同,同時let和...
    蛙哇閱讀 286評論 0 2
  • let 、const塊級聲明用于聲明在指定塊的作用域之外無法訪問的變量。let 用于聲明變量, const 用于聲...
    肥羊豬閱讀 252評論 0 1
  • let和var let是ES6中新增的命令,它的用法和var類似。主要有以下區(qū)別:1.作用域不一樣let是塊作用域...
    JackHZG閱讀 262評論 0 0
  • 1.var var 定義變量,沒有塊的概念,可以跨域訪問,不能跨函數(shù)訪問,不初始等于undefined,不會報錯在...
    Zhou_qn閱讀 817評論 0 0

友情鏈接更多精彩內(nèi)容