关于临时死区与typedof的疑问

深入理解es6里有代码如下


if( condition ){

    console.log(  typeof  value )//引用错误,value is not defined

    let value = "blue"

}

初始化value的语句不会执行,那么为什么我在空白文件中输入

console.log( typeof none )输出的是undefined,我这里没有声明none啊,除非typeof none算是声明none了。然后我输入

console.log( typeof myvalue)//undefined

console.log( myvalue)

发现myvalue is not defined,这说明typeof myvalue并不会声明一个未初始化的全局变量myvalue

typeof 对一个没声明的变量使用输出的为什么是undefined??


下面还有个问题

上面由于let不会发生变量提升,所以myvalue并没有声明,因此输出undefined

那么下面的代码为什么输出的是undefined,是因为let 创建的是块作用域内的value,而typeof value是全局环境下的value,因此输出undefine吗?


console.log( typeof value )//undefined

if( condition ){

    let value = "blue"

}


萧十郎
浏览 411回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript