Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么AngularJS记录一个对象,尽管它没有被注入函数中?_Javascript_Angularjs - Fatal编程技术网

Javascript 为什么AngularJS记录一个对象,尽管它没有被注入函数中?

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=新人(“约翰”、“多伊”);

我的AngularJS应用程序出现意外行为

为什么john会被记录,尽管它没有被注入logPerson()函数中

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
时存在,这是有无提升的情况。是的,您是正确的。这比我想的还要简单。