2012-07-01 28 views
1

当我执行以下脚本时,alert语句正在打印函数为什么会这样呢? 执行上下文中会发生什么?为什么变量basicPattern的未定义值不打印?执行此脚本时执行上下文中会发生什么

function basicPattern(){ 
    var o = 5; 

    return o; 
} 

var basicPattern; 
console.log(basicPattern); 
+0

不知道我在下面 - 你希望'VAR basicPattern;'将其设置为'undefined' ? – pimvdb

+0

@pimvdb:编辑了问题 – karthick

+3

您编辑的代码为我打印'5'。 – pimvdb

回答

2
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

+0

谢谢老大.... – karthick

相关问题