为什么这个javascript/angular代码不起作用

为什么这个javascript/angular代码不起作用,javascript,angularjs,Javascript,Angularjs,当我更改局部foo变量名称时,这很好,我对Javascript非常陌生,但对我来说,创建一个具有相同名称的新局部变量也不错。有关变量名称的更多信息: 这里您看到的是新函数中变量hosting和shadowing的效果。在提升阶段之后,您的CAN逻辑上如下所示: function foo() = { .. do stuff and return value }; $scope.newFunction = function(){ // Set new local variable foo e

当我更改局部foo变量名称时,这很好,我对Javascript非常陌生,但对我来说,创建一个具有相同名称的新局部变量也不错。

有关变量名称的更多信息:

这里您看到的是新函数中变量hosting和shadowing的效果。在提升阶段之后,您的CAN逻辑上如下所示:

function foo() = { .. do stuff and return value };

$scope.newFunction = function(){
   // Set new local variable foo equal to value of foo()
   var foo = foo();
}

当您在调用newFunction时创建的作用域中声明一个名为foo的变量时,它将从外部作用域中隐藏函数foo

为什么要向下投票?这是一个合理的问题,在描述代码时,请确保避免使用“它以任何形式不起作用”这一短语。相反,请准确描述发生了什么事情才有意义,但我认为var foo是一个新的作用域,外界不会看到它,因此我感到困惑。@CatznDogz,那将是$scope.foo。您可能混淆了javascript中的作用域概念和angular的$scope对象。
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
}