ES6 let和const

1.let :let声明的变量只在let命令所在的代码块内有效。

if(true){

let a =1;

var b = 2;

}

console.log(a);//ReferenceError: a is not defined

console.log(b);//2

案例:

1)var a = [];

for (var i = 0; i < 10; i++) {

a[i] = function () {

console.log(i);

};

}

a[6](); //10

a[9](); //10

2)var a = [];

for (let i = 0; i < 10; i++) {

a[i] = function () {

console.log(i);

};

}

a[6](); //6

a[9](); //9

3)for循环,设置循环变量的部分是父作用域,循环内部是一个单独的子作用域

for(let i=0;i<3;i++){

let i='abc';

console.log(i);

}// abc// abc// abc

let声明的变量不存在变量提升

暂时性死区:在代码块内,使用let命令声明变量之前,该变量都是不可用的。

let不允许在相同作用域内,重复声明同一个变量。

ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。

function f(){console.log('I am outside!');}

(function(){

if(false){

 // 重复声明一次函数f

function f(){console.log('I am inside!');}

}

f();

}());  //I am outside!     ES5环境中  I am inside!

ES6 的块级作用域必须有大括号

2.const :声明一个只读的常量。一旦声明,常量的值就不能改变。

const a =1;

a  //1

a=2; //报错

const b; //报错

const和let相同,只在声明所在的块级作用域内有效。

const a=[];

a=['1']  //"a" is read-only

3.顶层对象的属性 :在浏览器环境指的是window对象,在 Node 指的是global对象。

let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 4,571评论 0 0
  • ES6 之 let 和 const 命令 1、let 命令 1.1、基本用法 ES6 新增了let命令,用来声明变...
    24KBING阅读 2,532评论 0 0
  • 一、声明变量var、let、const三种;二、let,const与var区别:1、使用let/const声明的变...
    南在南方_3c37阅读 1,724评论 0 0
  • 本文章总结自阮一峰老师ES6入门 let、const和var的使用和区别举个例子 var a = []; fo...
    QDzzzhy阅读 1,567评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,239评论 16 22

友情链接更多精彩内容