Javascript 为什么AngularJS记录一个对象,尽管它没有被注入函数中?
我的AngularJS应用程序出现意外行为 为什么john会被记录,尽管它没有被注入logPerson()函数中Javascript 为什么AngularJS记录一个对象,尽管它没有被注入函数中?,javascript,angularjs,Javascript,Angularjs,我的AngularJS应用程序出现意外行为 为什么john会被记录,尽管它没有被注入logPerson()函数中 var angularApp=angular.module('angularApp',[]); var Person=函数(firstname,lastname){ this.firstname=firstname; this.lastname=lastname; } 函数logPerson(){ console.log(约翰); } var john=新人(“约翰”、“多伊”);
var angularApp=angular.module('angularApp',[]);
var Person=函数(firstname,lastname){
this.firstname=firstname;
this.lastname=lastname;
}
函数logPerson(){
console.log(约翰);
}
var john=新人(“约翰”、“多伊”);
logPerson()代码>
AngularJS简介
在调用logPerson()
函数之前,john
变量已经声明、初始化并在范围内。这不是Angular.js特有的,而是JavaScript运行时引擎的工作方式。当您调用logPerson时,john已经在全局范围内JavaScript具有词法范围。函数可以访问其自身和父函数作用域中存在的任何变量john
在logPerson
的父范围中定义。此外,只有在调用函数时才会对函数体进行评估,此时已为john
分配了一个值。我不确定在这方面的相关性如何。重要的是变量在调用logPerson
时存在,这是有无提升的情况。是的,您是正确的。这比我想的还要简单。