博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅析下关于js的 逗号运算符 和 改变this指向 的一道题(mv to git)
阅读量:5888 次
发布时间:2019-06-19

本文共 667 字,大约阅读时间需要 2 分钟。

  hot3.png

刚刚登陆微博,想看下有什么八卦新闻,突然看到@JS小组 分享的一道题:

微博分享图

@JS小组 是由资深前端工程师维护的一个小微博,既然由他们提出了这个问题,想必还是有点价值的,所以我也研究了下,觉得这个其实也不太难理解,主要牵涉到 逗号运算符 和 改变this 指向,下面分享下我的见解:

foo.bar() // -> 20/** * 这个不用多说了吧,this指向foo,大家都懂的 */(foo.bar)() // -> 20/** * 这个我是这样理解的哈 * 括号里面没有运算符 * js执行时直接引用它的指向 * 相当于foo.bar() * js进入foo对象内执行,属于指向型执行 */ (foo.bar = foo.bar)() // ->10/** * 这个实际上是执行foo.bar = foo.bar的返回值 * 而它的返回值是什么? * 就是foo.bar的function * 把function写出来就是以下代码,this指向window * 这个我把它记为返回值执行 */(function(){ var x = 30; return this.x })();(foo.bar, foo.bar)() // -> 10/** * 逗号运算符,运算过后也返回foo.bar指向的function * 这个也属于返回值执行 */

小小挫见,好像有点勉强,对于底层的原理理解不深。欢迎大神们指教!

转载于:https://my.oschina.net/luozt/blog/269869

你可能感兴趣的文章
联通高管频频出走:通信业已成鸡肋?
查看>>
关于多线程的那些事
查看>>
js 将json字符串转换为json对象的方法解析
查看>>
1. Two Sum
查看>>
让浏览器不再显示 https 页面中的 http 请求警报
查看>>
hdu4893Wow! Such Sequence! (线段树)
查看>>
Android 最简单的SD卡文件遍历程序
查看>>
JavaScript获取DOM元素位置和尺寸大小
查看>>
js-ES6学习笔记-Generator函数
查看>>
1065: 贝贝的加密工作
查看>>
lintcode 单词接龙II
查看>>
Material Design学习之 ProgreesBar
查看>>
WEB版一次选择多个文件进行批量上传(WebUploader)的解决方案
查看>>
Redis之 命令行 操作
查看>>
Jvm(46),指令集----对象创建与访问指令
查看>>
如何直接强制客户端刷新.js文件
查看>>
【C#】窗体动画效果
查看>>
过滤器
查看>>
EL 表达式小结
查看>>
内部排序
查看>>