function foo() = { .. do stuff and return value };
$scope.newFunction = function(){
// Set new local variable foo equal to value of foo()
var foo = foo();
}
当我更改本地foo变量名称时,它很好,我对Javascript很新,但对我来说,我认为创建一个具有相同名称的新局部变量就可以了。
答案 0 :(得分:4)
有关变量吊装的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting
你在这里看到的是你的newFunction中变量托管(和阴影)的影响。在提升阶段之后,你可以在逻辑上看起来像这样:
function foo() {} // foo is part of newFunction's outer scope
$scope.newFunction = function(){
var foo; // === undefined
foo = foo(); //<-- foo is undefined, yet is used as a function
}
当你在该范围内声明一个名为foo的变量时(调用newFunction()时创建的范围),它将从外部范围(http://en.wikipedia.org/wiki/Variable_shadowing)
隐藏函数foo。