ES6:什么是块级作用域?

2022-12-23 0 956

在 ES5 多于自上而下返回值和表达式返回值,没块级返回值,这增添许多片面的情景。

他们先上看呵呵下面此种情形:外层表达式可能会全面覆盖外层表达式。

var txt = 外层表达式–>晚安呀; function fn() { console.log(txt); if (false) { var txt = 外层表达式–>hello; } } fn();//undefined

下面标识符的本意是,if标识符块的外部采用外层的 txt 表达式,外部采用外层的 txt 表达式。但,表达式 fn 继续执行后,输入结论为undefined,其原因是表达式提高,引致外层的 txt 表达式全面覆盖了外层的 txt 表达式。

ES6 的块级返回值

let事实上为 JavaScript 追加了块级返回值

let txt = 外层表达式–>晚安呀; function fn() { console.log(txt); if (false) { let txt = 外层表达式–>hello; } } fn();
ES6:什么是块级作用域?

下面的表达式有两个标识符块,都声明了表达式 txt,运行后输入 外层表达式–>晚安呀。这表示外层标识符块不受外层标识符块的影响。

块级返回值与表达式声明

这个这就不多做解释了,因为用到的不是许多,没甚么必要深入了解,这里就简单说呵呵

ES5 规定,表达式只能在顶层返回值和表达式返回值之中声明,不能在块级返回值声明。

而ES6 引入了块级返回值,明确允许在块级返回值之中声明表达式。ES6 规定,块级返回值之中,表达式声明语句的行为类似于let,在块级返回值之外不可引用。

function fn() { console.log(哈哈哈); } (function() { if (false) { // 重复声明一次表达式fn function fn() { console.log(啦啦啦); } } f(); }());

下面这段标识符是 ES6 的写法,但如果在 ES5 中运行也是能出来的

因为浏览器没遵守这个规定,为了兼容以前的旧标识符,还是支持在块级返回值之中声明表达式,因此下面两种情形实际都能运行,不会报错。

ES6:什么是块级作用域?

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务