作用域的主语是?
4 回答
王益达
TA贡献12条经验 获得超15个赞
楼上 @onemoo 关于作用域概念的解释完全适用 JS,作用域可以指变量,也可以指函数。这里只做个扩展补充:
在 C 语言中,在变量声明的代码块之外是不可见的,通常称为块级作用域。例如:
#include void main() { int i = 1; i--; if(i == 0) { int j = 1; } printf("%d", j); }
其中,变量 j 定义在 if 代码块中,外部无法访问。
而 JavaScript 中,变量的作用域只有全局作用域和函数作用域,没有 if 、for、while 块级约束,外部可访问,例如:
(function () { var i == 1; i--; if(i == 0) { var j = 1; } console.log(j); })(); console.log(j);
其中,变量 j 在 if 代码块外可以访问,而在 function 代码块外不可访问。
当然,在 ES6 开始,新增了 let 声明变量的方式,用法类似于 var,但是所声明的变量只在 let 所在的代码块内有效。let 实际上为 JavaScript 新增了块级作用域。例如:
{ let i = 1; i--; if(i == 0) { let j = 1; } console.log(j); }; console.log(i);
其中,变量 i 和 变量 j 都不可被访问。
添加回答
举报
0/150
提交
取消