var、const和let

2021-08-10  本文已影响0人  WANG_M

一.var声明的变量会挂载在window上,而const和let变量不会

var a = 100;
console.log(a,window.a);   // 100 100
      
let b = 1;
console.log(b,window.b);   //1 undefined
      
const c = 10;
console.log(c,window.c);   //10 undefined

二.var声明变量存在变量提升,let和const不存在变量提升

console.log(a); // undefined  ------  a已声明还没赋值,默认得到undefined值
var a = 100;

console.log(b); // 报错:b is not defined  ------ 找不到b这个变量
let b = 10;

console.log(c); // 报错:c is not defined  ------ 找不到c这个变量
const c = 10;

三.let和const声明形成块作用域

if(1){
    var a = 100;
    let b = 10;
    const c = 1;
}
console.log(a); // 100
console.log(b)  // 报错:b is not defined ------- 找不到b这个变量
console.log(c)  // 报错:c is not defined ------- 找不到c这个变量

四、同一作用域下var可以声明同名变量,而let和const不能

var a = 100;
console.log(a); // 100

var a = 10;
console.log(a); // 10
let a = 100;
let a = 10;
//  控制台报错:Identifier 'a' has already been declared  ------- 标识符a已经被声明。

let 声明的变量,具有如下几个特点:

(1)let 声明的变量具有块作用域的特征。
(2)在同一个块级作用域,不能重复声明变量
(3)let 声明的变量不存在变量提升,也就是 let 声明存在暂存死区

const声明的变量,除了有let的几个特点外,还有一个声明后不能再修改,也就是常量。

上一篇 下一篇

猜你喜欢

热点阅读