为了账号安全,请及时绑定邮箱和手机立即绑定

作用域是函数的作用域,还是说,作用域是变量的作用域?

作用域是函数的作用域,还是说,作用域是变量的作用域?

qq_杀意隆_0 2017-10-30 11:11:27
作用域的主语是?
查看完整描述

4 回答

?
王益达

TA贡献12条经验 获得超14个赞

楼上 @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  都不可被访问。

查看完整回答
1 反对 回复 2017-10-30
点击展开后面2
?
Caballarii

TA贡献1123条经验 获得超629个赞

当然是变量的作用域,指这个变量在哪片范围里有效

查看完整回答
1 反对 回复 2017-10-30
  • 4 回答
  • 0 关注
  • 2573 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信