为了更好的说明问题,首先引出下面的题目
  1. //请说明下面变量 a-e 的值
  2. var a = [[1][1]];
  3. var b = [['a','b','c'][1]];
  4. var c = [['a','b','c'][1], ['a','b','c']];
  5. var d = [['a','b','c']['length'], ['a','b','c']];
  6. var e = [['a','b','c']['father', 'child', '0'], ['a','b','c']];
首先理解表达式
  1. var a = [[1][1]];

的含义。我们可以将这个语句拆分下

  1. var tmp = [1];
  2. var a = [tmp[1]]; // honker: tmp[1] 就是 [1][1]

就能非常好的理解,实际上 a 中的数组元素取得是 tmp[1] ,它并没有定义,所以值为 undefined (honker:也就是说a.length=1, a[0] = undefined)。那么

  1. var b = [['a','b','c'][1]];

就很容易理解为 ['b'] ,因为数组紧跟的后面是下标表达式。同时,数组也是个对象,它有相应的属性值,并且可以使用关联数组表示,于是

  1. ['a','b','c']['length']

的含义就是

  1. var tmp = ['a','b','c'];
  2. console.info(tmp.length);

(honker: obj['length']意思是访问obj.length的意思)

取的是 ['a','b','c'] 的长度,所以是 3 。而
  1. ['a','b','c']['father', 'child', '0']

后面的 ['father', 'child', '0'] 实质上是表达式(honker:即逗号表达式),而不是数组。所以简化以后就是

  1. ['a','b','c']['0']

那么返回的就是 ['a'] (honker:实际上字符串'0'被转换成了数字0)。这就让我们需要在实际的编码过程中,需要注意数组中的逗号“,”是否已经正确的加上,否则就会得到非期望的结果。

 
原文:http://www.gracecode.com/Archive/Display/2230

转载于:https://www.cnblogs.com/honker/archive/2009/01/11/3774452.html

Javascript 逗号“,”引发的血案相关推荐

  1. 线上 CPU100% 异常案例:一个正则表达式引发的血案

    前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%.通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息. 我们可以看到所 ...

  2. 一个由正则表达式引发的血案

    阿里妹导读:周末快到了,今天为大家送上一篇很有意思的小文章,具有提神醒脑之功效.作者是来自阿里巴巴LAZADA产品技术部的申徒童鞋. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中 ...

  3. 波涛汹涌的黄金甲,一碗中药引发的血案!

    严重声明:网路转载 主要情节: 父王(周润发)说母后(巩利)身体虚寒,需要每天定时服用亲自配置的中药,已服用了几十年.而父王早就知道了母后和太子元祥(刘烨)之间的苟且之事,远征回宫后在其中药中加入一味 ...

  4. mysql backlog_一次优化引发的血案

    前些天一个Nginx+PHP项目上线后遭遇了性能问题,于是打算练练手,因为代码并不是我亲自写的,所以决定从系统层面入手看看能否做一些粗线条的优化. 首先,我发现服务的Backlog设置过小,可以通过s ...

  5. 第三方账号登陆的过程及由此引发的血案

    72agency · 2014/03/19 10:40 0x00 前言 第三方账号登陆也就是当你没有A网站的注册账号时,你可以使用该与A网站合作的第三方账号登陆A,在大多数情况下你会立即拥有与你第三方 ...

  6. 一个普通ERROR 1135 (HY000)错误引发的血案:

    一个普通ERROR 1135 (HY000)错误引发的血案: 今天接到测试人员反应,测试环境前端应用程序无连接mysql数据库,登录mysql服务器,查看错误日志,发现有如下报错: 点击(此处)折叠或 ...

  7. 一次 Druid 连接池泄露引发的血案!

    最近某个应用程序老是卡,需要重启才能解决问题,导致被各种投诉,排查问题是 Druid 连接池泄露引发的血案.. 异常日志如下: ERROR - com.alibaba.druid.pool.GetCo ...

  8. 一场由过滤器Filter引发的血案

    一场由过滤器Filter引发的血案 事件起因 本来应该是下图的登录界面 变成了这样 What's the fuck????? 抓狂 原因 解决方法: 在过滤器中给资源文件开个绿色通道

  9. silverlight Image Source URI : 一个反斜杠引发的血案

    silverlight Image Source URI : 一个反斜杠引发的血案 Silverlight2 现在支持的Image格式有jpg和png,部分png编码也不支持,同时有些png在xaml ...

最新文章

  1. 对于访问IIS元数据库失败的解决方案
  2. 文献记录(part79)--光学影像序列中基于多视角聚类的群组行为分析
  3. 机器学习领域有哪一些值得关注的人
  4. oracle oms可以调用吗,oracle oms
  5. ideal 本地jar依赖_通过 YARN 的资源本地化技术减少 Flink 在 YARN 上的部署时间
  6. UVa 1400 (线段树) Ray, Pass me the dishes!
  7. Skywalking微服务监控分析
  8. 002,jvm启动流程
  9. 剑指offer——面试题20:顺时针打印矩阵
  10. Block code execution after alert view is displayed in iOS
  11. ConnectivityManager
  12. ShellExecuteEx and SHELLEXECUTEINFO and ShellExecute
  13. 【流量池】裂变营销:10种人脉裂变技能,6个裂变核心,8个吸粉人性本能怎样玩粉丝裂变?
  14. 继杭州购房宝典后,Github上的这个程序员买房实用指南火了!
  15. 中奖率的三种常用算法
  16. 移动端H5的js操作
  17. outlook邮箱显示一直启动中_win10outlook邮箱怎么设置开机自动运行 - 卡饭网
  18. php反转图片颜色,PHP 图片处理类(水印、透明度、缩放、相框、锐化、旋转、翻转、剪切、反色)...
  19. 常见html的MIME类型
  20. 泛微ecology 会签与非会签

热门文章

  1. 监控程序崩溃重启_第十四章 Homeassistant服务器安全及状态监控(下)
  2. 计算机软硬件作品构思报告,计算机方面的实训报告
  3. 检测网络耗时_无人机替代桥梁检测车检测桥梁的可行性分析
  4. 【企业管理】人力资源-华为实践
  5. 《系统集成项目管理工程师》必背100个知识点-14项目章程的内容
  6. 笔记-信息化与系统集成技术-物联网
  7. 笔记-项目采购管理-战略合作管理-建立供应商战略合作伙伴关系的意义
  8. MyBatis中动态sql实现传递多个参数并使用if进行参数的判断和实现like模糊搜索以及foreach实现in集合
  9. Winforn中使用SaveFileDialog实现另存为对话框
  10. SpringBoot+Swagger2实现可视化API文档流程