var、let 、const的区别
侧边栏壁纸
博主昵称
404

  • 累计撰写 17 篇文章
  • 累计收到 0 条评论
JS ts

var、let 、const的区别

404
404
2022-07-28 / 0 评论 / 3 阅读 / 正在检测是否收录...

😕 let和var用来声明变量,const用来声明常量。

区别1
let和var用来声明变量,const用来声明常量。
变量就是赋值后可以改变它的值,常量就是赋值后就不能改变它的值。
区别2
const不允许只声明不赋值,一旦声明就必须赋值

错误的写法
const num;
----------------
正确的写法
const num = 4;
区别3
var是函数作用域,let和const是块级作用域。
花括号{}就是块级作用域,函数作用域就是函数里面的内容。
对比这两段代码
{
    let num = 4;
}
console.log(num);// num is not defined
----------------------------------------
{
    var num = 4;
}
console.log(num); // 4
区别4
var有提升的功能,let和const没有
console.log(a);  //undefined
var a = 4;

console.log(a); //a is not defined
let a = 4;
区别5
在最外层的作用域,也就是全局作用域,用var声明的变量,会作为window的一个属性
var a = 4;
function foo(){
    var b = 5;
    console.log("b=>"+b) // 5
    console.log("window.b=>"+window.b) // undefined
    console.log("window.a=>"+window.a) // 4
}

foo()
console.log("a=>"+a) // 4
console.log("window.a=>"+window.a) // 4
console.log("window.b=>"+window.b) // undefined
而用let和const声明的变量或常量,并不会作为window的属性

对比下面两段段代码
var a = 4;
function foo(){
    /*
    这里的this采用默认的规则,与window进行了绑定,所以实际上访问的是window.a
    */
    console.log(this.a);// 4  
}

foo()
-----------------------------
let a = 4;
function foo(){
    /*
    在这种情况下,this.a 访问的是window.a,但是let定义的变量,并不会作为window的属性,所以访问不到
    */
    console.log(this.a);// undefined  
}

foo()
0

评论 (0)

取消