js全局环境下的this是window,直接foo()调用时,this是什么,结果undefined,为什么?
直接上代码
<script type="text/javascript">
'use strict';
console.log(this === window); // true
var foo = function() {
console.log(this === window);
console.log('this:',this);
};
foo();
window.foo();
</script>
十六夜・咲夜
9 years, 10 months ago
Answers
和函数的返回值或者console.log的返回值没什么关系;这里是因为有
"use strict"
,在严格模式下,重新规定了执行上下文中的
this
,
禁止函数中this关键字指向全局对象
,直接
foo()
这样的话,函数中this就是undefined。反之,如果不使用严格模式,那么this就是window了。可以参见阮一峰的这篇
http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
78164
answered 9 years, 10 months ago
是
use strict
的问题,严格模式下禁止
this
指向全局变量,参见:
http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
OTKIA
answered 9 years, 10 months ago