1、let和const -ES6学习笔记

网友投稿 232 2022-11-15

1、let和const -ES6学习笔记

基本概念

//所谓的代码块就是一对花括号,然后再花括号里面写上所需要的代码//例如{ let a = 1; var b = 2; console.log(a); //1 在代码块之内a的值可以正常被打印出来}console.log(a); //显示a未定义console.log(b); //2 可以发现b是可以正常被访问到的//说明了在代码块之外是拿不到代码块内使用let定义的变量a的

console.log(a); //undefinedvar a = 1;

我们发现这个时候是可以访问到这个a的,他的值是undefined, 因为在域解析的时候,它的变量被提升了, 这其实是一种非常不合理的行为

console.log(b); //报错 告诉你这个时候b还未定义let b = 1;

在例如

typeof c;let c = 10;//报错

在例如

在如:

let在for循环中的应用

如要解决这个问题,我们此前的解决的方法是给每个按钮增加一个自定义属性

除了上述以外,我们还可以采用闭包的方式

现在有了let咱们就不用那么麻烦了,我们直接在循环当中直接用let对变量进行初始化

在for循环中如果使用let对变量进行初始化,还会有一个非常特别的地方在循环语句之内是一个父作用域,在循环体之中是一个子作用域

for (var i = 0; i < 3; i++) { let i = 10; console.log(i); //10}console.log(i); //未定义

这个例子说明了,在循环体内的i的值是不会受到循环体的i的影响的,也就是说循环语句的父作用域和循环里的子作用域是分离的, 第二个console.log(1)打印报错,说i未定义; 这就说明了使用let初始化这个变量的时候,只在for循环语句中有用 循环之后就不是到for循环所在的作用域当中的

var a; //正确let b; //正确const c; //报错

const a = 1;a = {}; //报错

const obj = {a:10};obj.a = 20;//这句代码事实上只是修改了对象里面的数据,但是并没有修改常量obj的引用//所以浏览器不报错console.log(obj);我们发现a的值已经被修改成20了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:4.运动 transition:时间 属性 运动形式 延迟时间 - HTML5&CSS3.0基础部分-xyphf
下一篇:微投和TV领域USB接口双通11ac双频蓝牙WiFi二合一模块选型参考
相关文章

 发表评论

暂时没有评论,来抢沙发吧~