ES6知识点总结(二)

ES6知识点总结(二)

let、const与作用域

ES6新增两个关键字let和const用于控制作用域

Let命令

基本用法

{
	let a=10; 
}
//Let声明的变量仅在其代码块内有效

for循环的计数器很适合使用let命令

for(let i=0;i<10;i++){
	console.log(i);  //0~9
}
console.log(i);  
//Uncaught ReferenceError: i is not defined
    at <anonymous>:4:13

for循环在设置循环变量的部分是一个父作用域,循环体内部又是一个独立的子作用域。

暂时性死区

区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域
在代码块内,使用let命令声明变量之前,该变量都是不可用的,这个区域被称为“暂时性死区TDZ

var temp=123;
if(true){
temp='abc';
let temp;
}

注意:
不存在变量提升
不允许重复声明
以下三种调用均会报错

function fn(){
let a=10;
let a=1;
}

function fn(){
let a=10;
var a=1;
}

function fn(){
var a=10;
let a=1;
}

const命令

基本用法
声明一个只读的常量,其值不能改变且必须立即初始化。

const PI = 3.1415;
console.log(PI);  
PI = 3;  //报错 只读的
const circle;   //报错,一旦声明,必须立即初始化。

与let相似:
   const命令声明的常量也不提升,同样存在暂时性死区,只能在声明的位置后使用。
   也不可以重复声明。

作用域

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

ES6的三种作用域:
全局作用域:浏览器窗口
函数作用域:在函数中声明的变量(包括函数参数)指定在其所声明的函数内被访问。
块作用域:由{ }界定的代码区域,let声明的变量具备可访问块作用域
• 允许块级作用域任意嵌套
• 内层作用域可以定义与外层作用域同名变量
• 块级作用域的出现使得ES5中惯用的IIFE(立即执行匿名函数)

作用域链

每一段JavaScript代码(全局代码或函数)都有一个与之关联的作用域链
当JavaScript查找变量x,会从当前作用域开始跟随作用域链向上查找,直到找到x变量的声明,若到达全局作用域中仍未找到,则抛出一个引用错误(ReferenceError)异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值