我对Javascript中变量提升有疑问。Javascript变量提升示例
考虑下面的例子;
var myName = "Richard"; // Variable assignment (initialization)
function myName() {
console.log ("Rich");
}
console.log(typeof myName); // string
其实我困惑,为什么typeof myName
返回为字符串。
根据我的理解,这个例子将按照如下进行;
- 首先,函数声明(
function myName()
)会得到提升到顶部,然后 - JS解释会读取线
var myName = "Richard"
(因为函数声明越过变量声明优先)。但是,由于已经有一个名为“myName”的属性,因此该语句将被忽略。
因此typeof myName
应该得到返回功能(而不是字符串)
请让我知道我的理解是不正确。
您从一个函数声明更改为函数表达式在您的示例中,并且 - 不幸的是 - 它们被JavaScript区别对待:在加载函数声明时扫描文件,函数表达式及其赋值在运行时得到解决。因此,不幸的是你的例子解释了一些事情,但没有解释问题。 – 2014-11-04 10:38:50
@GoloRoden - 我已经解释了为什么'myName'变量的类型是'string'而不是'function',接下来我做了一个例子,其中变量的类型是'function' ;-) – 2014-11-04 13:20:06