利用let创建块级作用域

来源:互联网 发布:中国象棋手机版软件 编辑:程序博客网 时间:2024/06/06 02:49

let关键字可以将变量绑定到所在的任意作用域中(通常是{ .. }内部)。换句话说,let为其声明的变量隐式地了所在的块作用域。

var foo = true;if (foo) {let bar = foo * 2;bar = something( bar );console.log( bar );}console.log( bar ); // ReferenceError

用let将变量附加在一个已经存在的块作用域上的行为是隐式的。在开发和修改代码的过程中,如果没有密切关注哪些块作用域中有绑定的变量,并且习惯性地移动这些块或者将其包含在其他的块中,就会导致代码变得混乱。


为块作用域显式地创建块可以部分解决这个问题,使变量的附属关系变得更加清晰。通常来讲,显式的代码优于隐式或一些精巧但不清晰的代码。显式的块作用域风格非常容易书写,并且和其他语言中块作用域的工作原理一致:

var foo = true;   if (foo) {{ // <-- 显式的快let bar = foo * 2;bar = something( bar );console.log( bar );}}console.log( bar ); // ReferenceError

只要声明是有效的,在声明中的任意位置都可以使用{ .. }括号来为let创建一个用于绑定的块。在这个例子中,我们在if声明内部显式地创建了一个块,如果需要对其进行重构,整个块都可以被方便地移动而不会对外部if声明的位置和语义产生任何影响。


原创粉丝点击