-
Notifications
You must be signed in to change notification settings - Fork 0
Description
let 和 const 命令
-
let声明的变量只在它所在的代码块有效。
-
for循环的计数器,就很合适使用let命令。
3.计数器i只在for循环体内有效,在循环体外引用就会报错。
for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
-
let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。
-
(暂时性死区)只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
-
“暂时性死区”也意味着typeof不再是一个百分之百安全的操作。
7.作为比较,如果一个变量根本没有被声明,使用typeof反而不会报错。
8.ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。
9.(不允许重复声明)let不允许在相同作用域内,重复声明同一个变量。
10.内层作用域可以定义外层作用域的同名变量。
11.ES6 允许块级作用域的任意嵌套。
12.外层作用域无法读取内层作用域的变量。
13.ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。ES6 规定,块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用。
14.ES6 的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括号,就会报错。
15.本质上,块级作用域是一个语句,将多个操作封装在一起,没有返回值。
16.使得块级作用域可以变为表达式,也就是说可以返回值,办法就是在块级作用域之前加上do,使它变为do表达式。
- const 声明一个只读的常量。一旦声明,常量的值就不能改变。
18.对于const来说,只声明不赋值,就会报错。
19.const的作用域与let命令相同:只在声明所在的块级作用域内有效。
- 对象冻结,应该使用Object.freeze方法。
21.声明变量的六种方法:let,const,var,function,import,class
22.顶层对象,在浏览器环境指的是window对象,在Node指的是global对象。ES5之中,顶层对象的属性与全局变量是等价的。