我有以下功能。我正在阅读的javascript教程说它应该输出2,但是我在文本编辑器(JS Fiddle)中变得未定义。
可能是什么原因?这与严格模式与非严格模式有关吗?
function foo(){
console.log( this.a );
}
var a = 2;
foo(); //should output "2" but I'm getting undefined. Why?
那是因为您正在JSFiddle创建的函数包装器中运行代码。默认值为onLoad
将代码放入在load事件上运行的函数中。
这使得a
变量在该函数中是局部变量,而不是全局变量。当您尝试使用this.a
它访问它时,它将在中查找变量window.a
(this
指向该window
对象),但是由于该变量不是全局变量,因此无法在其中找到它。
如果选择No wrap - in <head>
或No wrap - in <body>
将代码放置在何处,则将获得2
as输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句