最近在Chrome中我在调试angularjs应用程序时做了这个观察。
console.log(scope.myObj.someProperty)
> undefined
然而当我输入
时scope.myObj
我将scope.myObj
的可折叠树表示与someProperty
明确地作为对象上的键使用,其值为"hello world"
。它不是__proto__
的成员,但显然是scope.myObj
的关键。
这怎么可能?
换句话说:当scope.myObj.someProperty
作为参数传递给console.log
并且在Chrome创建可折叠树时可用于解析时,如何将console.log
定义为未定义?
编辑:第二个语句在第一个语句之后立即执行,并且2个命令重复约3次以验证输出。我很难复制这个以在这里提供更多代码,这就是缺乏上下文的原因。我宁愿不发布所有指令的完整源代码以及角度应用程序中的诸如此类的东西。我做的唯一的理智检查是与几位同事一起检查,以确认我没有完全遗漏某些东西,我不是。
第二次编辑:此问题已被标记为AngularJS - Simple $scope console.log() returns undefined的副本。我不认为这是重复的,因为我的问题不是"为什么我的范围值未定义"。我的问题是"为什么在使用{{1}}打印时我的范围值未定义,但在浏览范围对象的Chrome的可折叠树视图时可在范围内使用?`。