为什么80%的码农都做不了架构师?>>>   

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

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

<!-- lang: js -->
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的 逗号运算符 和 改变this指向 的一道题(mv to git)相关推荐

  1. 在c语言中逗号的作用,C语言逗号运算符应用优先级与运算规则理解

    一.逗号运算符介绍 逗号运算符是C语言中常见的数学运算符号儿,多个运算的表达式之间可以用逗号分隔开来,然后用逗号分隔的这几个表达式可以单独进行运算,最后的运算结果取最后一个表达式的值进行返回. 逗号运 ...

  2. JS基础语法(04)-逗号运算符

    1.逗号运算符: , 2.逗号表达式:(表达式1,表达式2,表达式3.............) 通常与小括号一起使用,逗号用于连接算式,逗号 3.运算规则: (1)逗号运算符连接的每一个式子都会执行 ...

  3. JS逗号运算符(,)详解

    逗号运算符是二元运算符,它能够先执行运算符左侧的操作数,然后再执行右侧的操作数,最后返回右侧操作数的值. 逗号运算符可以实现连续运算,如多个变量连续赋值. var a = 1,b = 2,c = 3, ...

  4. JS中的逗号运算符(,)

    逗号运算符 逗号运算符是二元运算符,它能够先执行运算符左侧的操作数,然后再执行右侧的操作数,最后返回右侧操作数的值. 逗号表达式: 一般形式:表达式1,表达式2,表达式3,......表达式n 求解过 ...

  5. JS逗号运算符的用法详解

    一.逗号运算符的特性及作用  逗号运算符的作用是将若干表达式连接起来.它的优先级别在所有运算符中是最低的,结合方向是"自左至右"的. (即:逗号运算符:是按顺序执行表达式,并且获得 ...

  6. js运算符之逗号运算符

    逗号运算符 var re=A,B,C,D,E,F 会把逗号隔开的表达式全部执行 最后一个运行的表达式的结果就是逗号运算符的结果 这里就解释了前面逻辑与哪里的问题 为什么a输出为30 var a=(b= ...

  7. c语言等号 逗号,C语言逗号运算符和逗号表达式

    在C语言中逗号","也是一种运算符,称为逗号运算符. 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式.其一般形式为:表达式1,表达式2 其求值过程是分别求两个表达式的 ...

  8. js 与或运算符 || 妙用

    js 与或运算符 || && 妙用,可用于精简代码,降低程序的可读性. 首先出个题: 如图:  假设对成长速度显示规定如下:  成长速度为5显示1个箭头:  成长速度为10显示2个箭头 ...

  9. 在c语言中逗号的作用,关于c语言中的逗号运算符???

    等下..答错了..还需要理解一下神马是逗号表达式..我前面说的和uuyyhhjj与delta_charlie的意思一样,但其实我们都搞错了.你可以自己把我们的例子都运行一下,看看是不是这样.下面我感觉 ...

最新文章

  1. R语言编写自定义函数计算R方、使用自助法Bootstrapping估计多元回归模型的R方的置信区间、可视化获得的boot对象、估计单个统计量的置信区间、分别使用分位数法和BCa法
  2. LSTM输入输出结构
  3. 【DIY】木质音乐盒,聆听一下治愈之音。How To Make Music box out of nothing at all
  4. 第一阶段冲刺(第七天)
  5. 苹果七绕过基带激活2020_苹果漏洞,可跳过苹果激活锁
  6. 三种属性操作性能比较:PropertyInfo + Expression Tree + Delegate.CreateDelegate
  7. Leetcode 323.无向连通图中的连通分量个数
  8. java arraylist删除元素_java集合类ArrayList操作之删除remove某些元素的案例分析
  9. linux cpp建立文件夹,Linux小知识之CMake创建工程的一般流程
  10. 南阳理工学院计算机acm,南阳理工学院计算机学院ACM队成员获奖情况[荣誉记]
  11. 神策分析 1.17 重磅来袭,四大特性让数据治理更轻松,数据分析更深入
  12. 华为交换机之间静态路由配置实例
  13. 小米 线刷 android,小米10 Android 11 Beta 1线刷包已放出,安卓11/MIUI 12二选一
  14. 中英文标点符号转换-在线工具
  15. 谈谈微信小程序仿网易云音乐有关播放的那些事儿
  16. php本地文件包含 截断,php远程文件包含截断问题
  17. 【大数据技术应用实战】【基础课程一 Linux操作系统】Linux概述
  18. 新网域名添加AAAA记录
  19. 给ubuntu中谷歌配置host
  20. Java容器分类示意图

热门文章

  1. 【Java】程序调试
  2. mongo php 自增,PHP7下MongoDB自增或自减一个字段的值
  3. mqttnet 详解_MQTT协议详解
  4. 金融数据分析余挖掘实战1.9-1.10补充
  5. web前端开发,自学的流程可以怎样?
  6. oracle级联查询 level,ORACLE 数据库的级联查询 一句sql搞定(部门多级)
  7. linux文件类型为目录,在Linux系统中,基本的文件类型分为()文件,目录文件和文件, 所有的I/..._考试资料网...
  8. Java教程:Java字符串替换实例
  9. 魔术方法 python_python所有的魔术方法
  10. python对二维数组统计某一行的去重计数_Python数据分析笔记——Numpy、Pandas库