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。

本文系作者 @ 原创发布在 徐小鹏的个人分享博客。未经许可,禁止转载。

喜欢()
评论 (0)
14 文章
7 评论
0 喜欢
Top