码迷,mamicode.com
首页 > 其他好文 > 详细

block、块级作用域

时间:2017-03-27 10:50:38      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:输入   访问   代码段   代码   read   包含   bsp   str   erro   

block:语句块 (或其他语言中的 复合语句) 用来组织零个或多条语句. 包含在{ }里面 

通常在流程控制语句 (如 ifforwhile)中使用

块级作用域:通过var声明的变量没有块级作用域. 在语句块(block)里声明的变量作用域是其所在的函数或者 script 标签内, 你可以在语句块外面访问到它. 换句话说, 语句块不会生成一个新的作用域. 尽管单独的语句块是合法的语句, 但在JavaScript中你不会想使用单独的语句块,因为它们不像你想象的C或Java中的语句块那样处理事物. 例如:

var x = 1;
{
  var x = 2;
}
console.log(x); // 输出 2

该代码段会输出2,因为块中的 var x 语句与块前面的var x 语句作用域相同. 没有块级作用域,不然就输出1了

在 C 或 Java中, 这段代码会输出1.  

与 var 不同, 使用 let const 声明的变量是有块级作用域

let x = 1;
{
  let x = 2;
}
console.log(x); // 输出 1

const c = 1;
{
  const c = 2;
}
console.log(c); // 输入1, 而且不会报错

注意块级作用域里的常量声明 const c = 2 并不会报 SyntaxError: Identifier ‘c‘ has already been declared 这样的语法错误, 因为这是一个新的作用域.

block、块级作用域

标签:输入   访问   代码段   代码   read   包含   bsp   str   erro   

原文地址:http://www.cnblogs.com/web5201/p/6625309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!