您的位置:首页> 前端教程> ES6教程
文章导航

JavaScript 块级作用域

2018-8-16 00:23| 作者: admin| 查看: 1966| 评论: 0|来自: 蚂蚁部落

如果掌握C#或者Java标准面向对象的语言,那么此概念非常容易理解,因为几乎完全相同。

在ES2015之前,只有函数作用域和全局作用域,具体参阅JavaScript作用域一章节。

代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
function func() {
  var antzone = "蚂蚁部落";
}
func()
console.log(antzone);

上面的代码会报错,因为变量antzone只在函数作用域中有效。

再来看一段代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
for (var index = 0; index < 5; index++) {
  //code
}
console.log(index);

由于上述代码没有采用块级作用域,那么index的作用域是全局的,打印结果是5。

一.块级作用域概念:

(1).花括号{}和其中代码生成一个块。

(2).在块中,let和const声明的变量和常量对外都是不可见的,称之为块级作用域。

(3).只有使用let和const声明的变量或者常量在块中对外不可见,var声明的变量对外依然可见。

可以这么认为,是let和const创建了块级作用域。

关于let和const可以参阅以下两篇文章:

(1).let可以参阅ES2015 let命令一章节。

(2).const可以参阅ES2015 const命令一章节。

代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
if (true) {
  let address = "青岛市南区";
}
console.log(address);

使用let声明的变量address只在所在块级作用域内有效。

二.语句块和对象直接量的区别:

不要把对象直接量看做是块级作用域,代码如下:

[JavaScript] 纯文本查看 复制代码
var obj = {
  webName: "蚂蚁部落",
  url: "softwhy.com",
  address:"青岛市南区"
}

上面的代码使用大括号创建了一个对象直接量,我们不能认为这是一个语句块。再来看一段代码实例:

[JavaScript] 纯文本查看 复制代码
{
  webName: "蚂蚁部落",
  url: "softwhy.com",
  address:"青岛市南区"
}

代码会报错,因为如果代码最左边为大括号,那么就会被解读为语句,而不是对象直接量。

上面的代码会被解读为标签语句,具体可以参阅JavaScript 标签语句一章节。

只要在外面包裹一个小括号就不会报错了:

[JavaScript] 纯文本查看 复制代码
({
  webName: "蚂蚁部落",
  url: "softwhy.com",
  address:"青岛市南区"
})
2

鲜花
1

握手

雷人

路过

鸡蛋

刚表态过的朋友 (3 人)

最新评论

返回顶部