请给出以下这段js代码的输出结果
function fun() {
console.log(this.length);
}
var arr = [fun, 1, 2, 3, 5, 5];
arr[0]();
答案放在最后,以下给出分析
-
定义一个函数fun,在函数内打印this.length
-
定义数组arr,数组元素包含fun函数和数字
-
执行arr[0](),相当于执行第一个元素fun函数
-
在数组环境中,fun函数内this指向当前数组arr对象
-
数组arr的length属性值为它的长度,即6
-
所以fun函数内打印this.length,就是打印数组arr的长度6
正确的输出结果应该是6, 不是依照全局window对象去解释, 而是根据数组环境中的this指向数组对象本身。