在 ES5 多于自上而下返回值和表达式返回值,没块级返回值,这增添许多片面的情景。
他们先上看呵呵下面此种情形:外层表达式可能会全面覆盖外层表达式。
下面标识符的本意是,if标识符块的外部采用外层的 txt 表达式,外部采用外层的 txt 表达式。但,表达式 fn 继续执行后,输入结论为undefined,其原因是表达式提高,引致外层的 txt 表达式全面覆盖了外层的 txt 表达式。
ES6 的块级返回值
let事实上为 JavaScript 追加了块级返回值
下面的表达式有两个标识符块,都声明了表达式 txt,运行后输入 外层表达式–>晚安呀。这表示外层标识符块不受外层标识符块的影响。
块级返回值与表达式声明
这个这就不多做解释了,因为用到的不是许多,没甚么必要深入了解,这里就简单说呵呵
ES5 规定,表达式只能在顶层返回值和表达式返回值之中声明,不能在块级返回值声明。
而ES6 引入了块级返回值,明确允许在块级返回值之中声明表达式。ES6 规定,块级返回值之中,表达式声明语句的行为类似于let,在块级返回值之外不可引用。
下面这段标识符是 ES6 的写法,但如果在 ES5 中运行也是能出来的
因为浏览器没遵守这个规定,为了兼容以前的旧标识符,还是支持在块级返回值之中声明表达式,因此下面两种情形实际都能运行,不会报错。


