【发布时间】:2014-12-31 00:30:42
【问题描述】:
我对 JavaScript 中的变量提升有疑问。
考虑以下示例:
var myName = "Richard"; // Variable assignment (initialization)
function myName () {
console.log ("Rich");
}
console.log(typeof myName); // string
我真的很困惑为什么typeof myName 被返回为string。
根据我的理解,该示例将按如下方式进行;
- 首先函数声明 (
function myName ()) 将被提升到顶部,然后 - JS 解释器会读取
var myName = "Richard"行(因为函数声明优先于变量声明)。但是,由于已经有一个名为“myName”的属性,因此该语句将被忽略。
因此typeof myName 应该作为函数(而不是字符串)返回。
我的理解哪里不对?
【问题讨论】:
标签: javascript hoisting