1.let 与 const

原地址

1.let

1.let只是在代码块内有效

{
let a =1;
var b =2;
}
a//报错
b//2

2.for循环用let比较好,var会造成外部作用域污染

var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10  把var改成let才能输出6

3.for循环的()为{}的父作用域

for (let i = 0; i < 3; i++) {
  let i = 'abc';
  console.log(i);
}
// abc
// abc
// abc

for (let i = 0; i < 3; i++) {
  console.log(i);
}
// 0
// 1
// 2

2.块级作用域

1.任意嵌套,内层作用域可以定义外层作用域的同名变量

function f1(){let i=1;{let i =2;return i} return i}
f1()
//2

2.避免在块级作用域内声明函数,如果确实需要,也应该写成函数表达式,而不是函数声明语句。

// 块级作用域内部,优先使用函数表达式
{
  let a = 'secret';
  let f = function () {
    return a;
  };
}

3.const

const声明一个只读的常量。一旦声明,常量的值就不能改变。
将一个对象声明为常量必须非常小心

const foo = {};

// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123

// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only

4.顶层对象的属性

var a = 1;
// 如果在 Node 的 REPL 环境,可以写成 global.a
// 或者采用通用方法,写成 this.a
window.a // 1

let b = 1;
window.b // undefined
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • let与const声明变量和var声明变量的区别: 1.let和const声明的变量不会进行预解析,只能够先声明后...
    墨箫忆阅读 1,014评论 0 1
  • 原文地址其他参考资料 let:声明变量 const:声明只读常量 二者共同点: 只在代码块内有效,并且在用let或...
    没人能救你呀吼阅读 851评论 0 0
  • 回到目录 前言 ES 2015 之后新增了一种作用域---块级作用域下面用到的 let const 都是在块级作用...
    毛贵军阅读 2,985评论 1 2
  • let let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。 例子: 输出结果: let不可重...
    Coldhands阅读 1,742评论 0 0
  • 1.let命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在le...
    angelwgh阅读 1,937评论 0 0