作用域与let、const

作用域与let、const

let命令

1、let命令只在所在的代码块有效
2、存在暂时性死区
3、let命令不允许重复申明
4、let为JavaScript新增了块级作用域.

var命令

变量提升: var声明的变量无论其实际声明位置在何处,都会被是为声明于所在函数(或全局)的顶部。

作用域

变量或函数在起作用的区域。

全局作用域:
  	1、 在所有函数之外定义的变量拥有全局作用域,该变量为全局					      变量。
	2、全局变量可以在当前页面中任何JavaScript代码中访问。
函数作用域:
	1、在函数中声明的变量(包括函数参数)指定在其所声明的函数内被访问。
块作用域 :
	1、由{ }界定的代码区域,let声明的变量具备可访问块作用域。
	2、ES6允许块级作用域任意嵌套,一对{}即为一个块级作用域。
    3、内层作用域可以定义与外层作用域同名变量。
    4、块级作用域的出现使得ES5中惯用的IIFE(立即执行匿名函数)不再必要了。

const命令

基本用法

声明一个只读的常量,一旦声明,其值不能改变且必须立即初始化。
除此之外,与let用法一致。

实质
const foo={
    
    y:10};
foo.x=100;
console.log(foo.x);
foo={
    
    n:1000};

当常量保存的不是一个值,而是一个地址的时候,该常量所引用的对象是可以更改成员的,只是不能更改该常量保存的地址。

顶层对象

1、浏览器的顶层对象为window,Node的为global。
2、var定义的变量会关联到顶层对象中,let和const不会。

var a=100;//undedined
console.log(window.a);//100
let b=100;//undedined
console.log(window.b);//undefined

总结

let和const命令所声明的全局变量不属于顶层对象属性
var和function命令声明的全局变量是顶层对象的属性。

猜你喜欢

转载自blog.csdn.net/outaidered/article/details/115533896