在js 中有三种声明变量的方式分别为 var,const ,let 虽然他们都可以用于声明变量,但是他们之前却有着本质的不同
1. var相对于let与const
var 声明的是全局变量,全局变量就意味着,会挂载到window对象上面去,而let和const声明的变量去不会出现这样的情况。
var a=33;
console.log(a,window.a);
let b=22;
console.log(b,window.b)
const c=11;
console.log(c,window.c)
打印结果为:
var声明的变量还可以向声明在赋值,如果声明后没有赋值就打印 则会打印出undefined, 而let 变量和const 变量 声明后未进行赋值 打印则会直接报错。
console.log('var变量:'+a); //打印undefine
var a=33;
console.log('let变量'+b) //报错
let b=22;
console.log('const变量'+c) //报错
const c=11;
打印结果未:
作用域上面 var是全局的 let和const则是块级作用域的
if (1){
var a=33;
let b=22;
const c=11;
console.log('代码块内 var'+a)
console.log('代码块内 let'+b)
console.log('代码块内 const'+c)
}
console.log('代码块外 var'+a)
console.log('代码块外 let'+b) // 报错
console.log('代码块外 const'+c) //报错
打印结果为:
在同一作用域下var可以声明同名变量,而let和const则不能
var a=33;
console.log(a)
var a=3;
console.log(a)
// 正常打印 33 3
let b=22;
console.log(b)
let b=2;
console.log(b)
// 直接报错
const c=11;
console.log(c)
const c=1;
console.log(c)
//直接报错
const声明的变量 必须赋值 且赋值后也不能更改