1

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

 function basicPattern(){
    var o = 5;

    return o;
 }

 var basicPattern;
 console.log(basicPattern);
4

1 回答 1

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

于 2012-07-01T13:04:47.493 回答