如何全面掌握ES6中块级作用域的深入应用与特性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2059个文字,预计阅读时间需要9分钟。
JavaScript中使用`var`声明变量,无论是在全局作用域、函数作用域还是局部作用域,都会被提升到作用域的顶部。这种变量提升现象可能会导致一些令人困惑的结果。
一.var 声明与变量提升机制
在JavaScript中使用var定义一个变量,无论是定义在全局作用域函数函数的局部作用域中,都会被提升到其作用域的顶部,这也是JavaScript定义变量的一个令人困惑的地方。由于es5没有像其它类C语言一样的块级作用域,因此es6增加了let定义变量,用来创建块级作用域。
我们来看一个var定义变量的示例:
function setName(){ if(condition){ var name = 'loho'; console.log(name); }else{ console.log(name); } } var student = 'eveningwater'; setName();
以上代码可以理解成如下:
var student; function setName(){ var name; if(condition){ name = 'loho'; console.log(name);//loho }else{ console.log(name);//undefined } } student = 'eveningwater'; setName();
二.块级声明
块级声明意在指定一个块级作用域,使得块级作用域中所定义的变量无法再全局被访问到,块级作用域也被称为词法作用域。
本文共计2059个文字,预计阅读时间需要9分钟。
JavaScript中使用`var`声明变量,无论是在全局作用域、函数作用域还是局部作用域,都会被提升到作用域的顶部。这种变量提升现象可能会导致一些令人困惑的结果。
一.var 声明与变量提升机制
在JavaScript中使用var定义一个变量,无论是定义在全局作用域函数函数的局部作用域中,都会被提升到其作用域的顶部,这也是JavaScript定义变量的一个令人困惑的地方。由于es5没有像其它类C语言一样的块级作用域,因此es6增加了let定义变量,用来创建块级作用域。
我们来看一个var定义变量的示例:
function setName(){ if(condition){ var name = 'loho'; console.log(name); }else{ console.log(name); } } var student = 'eveningwater'; setName();
以上代码可以理解成如下:
var student; function setName(){ var name; if(condition){ name = 'loho'; console.log(name);//loho }else{ console.log(name);//undefined } } student = 'eveningwater'; setName();
二.块级声明
块级声明意在指定一个块级作用域,使得块级作用域中所定义的变量无法再全局被访问到,块级作用域也被称为词法作用域。

