外面声明的变量不也是用let global variable吗?

Isn't the variable declared outside with let global variable too?

我正在尝试理解新的函数语法。

当我使用 let it 声明变量 'value' 时,出现错误

ReferenceError: value is not defined

但是如果我使用 var 或不使用 var,输出将打印为测试。我假设 'value' 变量是全局变量,因为它是在外部定义的。

但为什么它与 var 一起使用而不是 let ,尽管它们都是全局变量?

let value = "test";
    function getFunc() {
        // value = "test";
    
        let func = new Function('console.log(value)');
    
        return func;
    }
    
    getFunc()();

在顶层,letvar 不同,不会在全局对象上创建 属性。

var foo = "Foo";  // globally scoped
let bar = "Bar"; // not allowed to be globally scoped

console.log(window.foo); // Foo
console.log(window.bar); // undefined

Reference

因此 let 只能在由 {} 表示的封闭块内使用。