【JavaScript23】使用let声明变量

发布时间 2023-08-07 22:55:07作者: Tony_xiao

前言

  • ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。
    • let 声明的变量只在 let 命令所在的代码块内有效。
    • const 声明一个只读的常量,一旦声明,常量的值就不能改变。
  • 在 ES6 之前,JavaScript 使用var声明变量只有两种作用域: 全局变量 与 函数内的局部变量。

let 声明变量作用域

  • 使用let声明的变量,首先具有块级作用域的概念,在块级代码声明的变量,外面无法引用
  • 什么是块级作用域?
    • 比如if 后面大括号的内容,for 循环大括号里面的循环体,都是块级。
    a = 10;
    if (a>0){
        let x = 'hello';  // let 声明块级变量
        console.log(x);
    }
    console.log(x);   // x is not defined

    //如果块级代码外面也有同一个名称变量,使用let互不影响
    a = 10;
    let x = 'world'
    if (a>0){
        let x = 'hello';  // let 声明块级变量
        console.log(x); // hello
    }
    console.log(x);   // world

let 和 var 不一样的地方

// 1、var 可以对同一个变量重复声明,但是let不能重复声明
// 使用 var
var x = 'hello';
var x = 'world';   
console.log(x);   // world

// 使用let
let y = 'world';
let y = 'world'; // 报错

//2、变量提升,let 声明的变量没有提升
console.log(x)  // undefined
var x = 'hello'

console.log(y)  // 报错
let y = 'world';

//3、全局作用域
//使用 var 关键字声明的全局作用域变量属于 window 对象:
//使用 let 关键字声明的全局作用域变量不属于 window 对象:
var x = "hello";
// 可以使用 window.x 访问变量

let y= "world";
// 不能使用 window.y访问变量