美文网首页
let和const(笔记)

let和const(笔记)

作者: 灰灰_82a6 | 来源:发表于2019-04-11 22:34 被阅读0次

块级作用域

一个{}就能形成一个块级作用域,声明对象{}不会形成块级作用域。

let

let声明变量.
1.只作用在当前作用域下。
2.不能重复被声明。

 let a=1;
 let a=2; //这样会报错

3.let不存在变量提升。

const

const声明一个只读的常量。
1.值不能被改变,一旦声明,就必须立马赋值。

const a; //会报错

2.不能重复被声明
3.没有变量提升
4.只能在当前作用域中使用
5.const声明的数据,保存的是一个内存地址,所以声明对象,只要对象的内存地址不变就行。

const foo = {};
// 为 foo 添加一个属性,可以成功
foo.prop = 123;
// 将 foo 指向另一个对象,就会报错
foo = {}; 

暂存死区

在es6中 ,只要使用let或者const声明变量,那么就会形成一个块级作用域。
在块级作用域中如果声明了一个与上一级作用域同名的变量 ,那么块级作用域中就不会往上查找变量了 ,并且let声明的变量不存在变量提升,所以如下会报错找不到num

let num=1;
{
    console.log(num); 
    let num=2;
}

顶层对象

顶层对象在浏览器环境中指的是window。在js中,全局变量和顶层对象属性是等价的。也就是,声明一个全局变量,可以使用window访问到。这样全局变量和window中属性重名就会被覆盖。

var num=1;
console.log(window.num)//1

在es6中声明的变量,不能通过window来访问了。

let num=1;
console.log(window.num)//不是window的属性,输出undefined

相关文章

网友评论

      本文标题:let和const(笔记)

      本文链接:https://www.haomeiwen.com/subject/vfazwftx.html