关于let变量声明的问题

新手上路,请多包涵

请问为什么全局环境中let声明的inner2在变量对象中找不到,但是outside环境中的let声明的n2能找到。

<script>

debugger;
function outside() {
    debugger;
    var n = 1;
    let b = 2;
    debugger;
}
outside('s');
var inner = 1;
let inner2 = 5; 
debugger;

<script>

全局环境中的outside环境中的

还有最后一个debugger时scope中的script是什么?
图片描述

阅读 1.3k
1 个回答
请问为什么全局环境中let声明的inner2在变量对象中找不到,但是outside环境中的let声明的n2能找到。
  1. Local中只显示当前作用域的变量,所以就算是全剧作用域用var 或者 直接 Window.xx 来声明,也不会在Local中显示。
  2. let不会变量提升,所以你在outside 里即使console 也会报错,var会变量提示,可以自行测试.
还有最后一个debugger时scope中的script是什么?

script 是区别于Local和Global之外的,Local是当前作用域,Global是全剧作用域(window.xx能直接访问的),用let声明的不能被window.xx直接访问,所以放到script中.(好吧,其实这是我猜的,因为我找了资料,chrome tool 官方教程里面也没有说的很明白,而且他是把它分为
Scope 窗格显示在 local、closure 和 global 级别定义的属性。这三个级别.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题