在javascript中了解“ this”的问题

KishB87

我有以下功能。我正在阅读的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.athis指向该window对象),但是由于该变量不是全局变量,因此无法在其中找到它。

如果选择No wrap - in <head>No wrap - in <body>将代码放置在何处,则将获得2as输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章