function outer(){
var age = 20;
function inner(){
console.log(this.age);//undefined
}
inner.apply(outer);
}
outer();
请问这里为何会输出undefined呢,另外某个函数内部的函数的this是指向谁,不是说this是指向函数据以执行的作用域吗,在外部函数执行的函数,它的this应该指向外部函数才对啊,为什么是window
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我注意到你的代码,
inner.apply(outer)。你是想让inner指定使用context为outer?的确,我测试过代码是成功的,你绑定了this 为 outer。但是outer此时又不是作为函数在调用,而是一个对象在调用。outer又没有age这个属性,所以结果为undefined。
要执行成功,我稍微修改了下代码
你的
this指向的是outer啊,只是你的outer.age确实是undefined你在
function里面用var定义变量,和this没有半毛钱关系这代码怎么感觉怪怪的
呵呵,this对于初学者来说是有点搞的。懂得不多,说说我的理解,大家共同提高!
首先在调试环境下,例如Chrome F12的Console中看看这个程序的运行结果:
然后再看看以下一些变量的值:
相信就有所体会。
另外,不是所有的JavaScript程序最上层的对象都是window。
1.请问这里为何会输出undefined呢
var age = 20;inside Functionouteris not work. that's special in javascript2.try to use prototype
this way is called closure.
调用了谁this就指向谁
如果不进行原型链接,每个function里的this都会指向这个function,js里每个function都是一个通过new都可以得到对象。
其实其实如果不懂可以多举些例子编写调试自己都会得到结论的