今天看啥  ›  专栏  ›  大前端艺术家

你不是很懂this吗,做道题试试

大前端艺术家  · 公众号  ·  · 2019-01-09 19:16

文章预览

题目 请写出代码执行的结果。 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,则 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览