当我执行以下脚本时,警报语句正在打印函数,为什么会这样?在执行上下文中会发生什么?为什么变量 basicPattern 的未定义值不打印?
function basicPattern(){
var o = 5;
return o;
}
var basicPattern;
console.log(basicPattern);
当我执行以下脚本时,警报语句正在打印函数,为什么会这样?在执行上下文中会发生什么?为什么变量 basicPattern 的未定义值不打印?
function basicPattern(){
var o = 5;
return o;
}
var basicPattern;
console.log(basicPattern);
function basicPattern(){
var o = 5;
return o;
}
var basicPattern;
console.log(basicPattern);
评估与此相同(忽略 IE 错误):
var basicPattern;
basicPattern = function basicPattern(){
var o = 5;
return o;
};
console.log(basicPattern);
由于basicPattern
已经声明,再次声明它不会有任何效果,因为声明被提升和合并。如果你有分配5
它会是这样的:
var basicPattern;
basicPattern = function basicPattern(){
var o = 5;
return o;
};
basicPattern = 5;
console.log(basicPattern);
阅读有关吊装的更多信息:http: //www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting