您好,匿名用户

关于javascript静态作用域的问题,实际上运行的结果和书上的并不一样,这是什么原因?

0 投票

书上一个例子:
const x = 3;
function f() {

console.log(x); //会正常运行
console.log(y); //会导致程序崩溃

}
const y = 3;
f();

但是我在浏览器上运行输出的结果为:
3
3
这和书中所写的并不一样,书中解释说:函数f可以访问在函数定义时就已经存在的标识符,而不能访问在函数调用时才存在的标识符。
求助,求助。

用户头像 提问 2019年 5月24日 @ Aquarius 中士 (1,333 威望)
分享到:

1个回答

0 投票
 
最佳答案
const res = {}

{ // 函数定义所在作用域
  const x = 1
  res.fn = function(){
    console.log(x) // 正常
    console.log(y) // 报错
  }
}

{ // 函数调用所在作用域
  const y = 1
  res.fn()
}
用户头像 回复 2019年 5月24日 @ Teemo 中士 (1,233 威望)
选中 2019年 5月12日 @Aquarius

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...