文章预览
题目 请写出代码执行的结果。 var length = 10 ; function fn () { console .log( this .length); } var obj = { length: 5 , method: function ( fn ) { fn(); arguments [ 0 ](); } }; obj.method(fn, 1 ); 先不要看答案,思考思考。会输出 5 吗? 答案 浏览器环境下: 10 2 node 环境: undefined 2 思考 这段代码十分有趣,是一个 this 作用域的问题。 这里其实是耍了一个小聪明,已经不是单纯的考 this ,在 this 结合了 arguments 后,意图把人迷惑。 arguments[0]() 的打印结果是 2,能猜出 this 指向 arguments 所以输出 arguments.length 。 知识点总结 浏览器中的 this js 中 this 指的是当前对象,如果在全局范围内使用 this,浏览器环境下则指代当前页面 window ;如果在函数中使用 this,则
………………………………