2017-12-02 130 views
0

示例1:结果是我所期望的。带“let”关键字的块范围

如果我们声明let块内部,它不应该从外部访问 范围。

{ 
    let privateScope = 1; 
    function thing() { 
    privateScope = 2 
    } 
} 
console.log(typeof privateScope); //undefined 

实施例2:变量可以外部范围来访问!

{ 
    let privateScope = 1; 
} 
console.log(typeof privateScope); // number 

为什么可以privateScope可以在实施例2从块外部访问?

+0

对我来说代码#2返回“undefined”。什么是执行环境? – skyboyer

+3

在这里没有这样做 - 无论如何,'typeof'肯定不会返回'1',所以也许在你的代码中有其他事情正在发生。 – Eevee

+0

对于我来说,它也会返回undefined。你是console.logging别的可能是 – itsundefined

回答

3

{ 
 
    let privateScope = 1; 
 
} 
 
console.log(typeof privateScope);

这是你的例子在SO与ES2015片断检查。正如您在运行时看到的那样,privateScope未定义。我只能假设StackBlitz在编译代码时做了一些奇怪的事情,或者它是一个配置错误。