ES6 lesson3 – const和let的区及使用场景2
今天按时看完啦视频,分享时间到啦。
let、const在之前我们已经知道,他们属于块级作用域。
首先,我们尝试定义一个变量name
const name = '徐小鹏';
此时,我们在浏览器打印name的值,一切正常。但是,其实这个name是属于window对象的,而window对象自身是有一个name属性的。所以我们这样子做,其实是会污染全局变量的,所以我们可以增加一个大括号:
{ const name = '徐小鹏'; }
还有个自己琢磨出来的知识点,大括号中的const常量有块级作用域的局限,所以我们可以在模块化编程时多用const。
例如以下,便是属于两个不同的值。
{ const name = '徐小鹏'; } { const name = 'Fea'; }
这个在内存中,是占用不同的内存地址的。
最后来一个let的举例:
我们经常看到一个面试题如下
for (var i = 0; i < 10; i++) { console.log(i); setTimeout(function () { console.log(`i value is: ${i}`); }, 500); } // 问 i的值是多少,输出之后是0-9 和10个10,因为延迟执行,执行之setTimeout的时候,i已经等于10了;
例如上面的例子,如果我们使用let而不是var,则可以正确的输出0-10,因为变量属于块级作用域,不会影响上一次的变量值。
上面的例子还有一个特点就是,十次的i值,均占用不同的内存地址。
好啦,今天就是这些啦,see you。
本文系作者 @feacx 原创发布在 。未经许可,禁止转载。