令我哭笑不得的 coffeeScript 编译 - 费时工作篇

本文通过一个CoffeeScript代码示例,深入探讨了JavaScript中apply和splice方法的高级用法,揭示了非传统写法可能导致的误解,并强调了理解他人代码风格的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   今天上午发生的事情让我哭笑不得, 写下来让大家也乐乐. 

  上午看了 coffeeScript 其中被编译的一段代码让我产生了兴趣:

var numbers, _ref;

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

[].splice.apply(numbers, [3, 4].concat(_ref = [-3, -4, -5, -6])), _ref;

  

result --- >  

  我主要是针对 "[].splice.apply(numbers, [3, 4].concat(_ref = [-3, -4, -5, -6]))" 做了测试. 带着一个疑问 "splice 的第一个怎么可以是 数组?" 带着可能会存在类似 “function serialisation" 的神秘功能, 我做了理深一步的"调查". (哈哈 悲剧开始了...)!

  首先我想知道 V8 是如何处理 splice 的(我主要是使用 chrome 做测试)  

  

  看到 “TO_INTEGER(start)” 的时候我惊讶了, 它是如何操作数组的? deep...

  又看了 V8 功能函数API 上说明 "如果传递给函数的值包含字母数字字符,则返回零。"  我曹 凌乱了....

  心想难到 coffeeScript 上的例子

  

var numbers, _ref;

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

[].splice.apply(numbers, [3, 4].concat(_ref = [-3, -4, -5, -6])), _ref;

  是怎么回事儿 ? 

      FUCK 结果仔细一看  apply 的第二个参数是接受 一个数组类型参数。和 splice JM关系没有. 

  结论

  当代码非通常写法的时候, 可能会有"视觉欺骗".  出现以上 费时工作的主要原因 是因为  “[3,4].concat(_ref = [-3, -4, -5, -6]), _ref” 非本人的通常写法. 导致我用异同的眼光去看它. 

结论: 多接触接触别人的代码, 别人的写法. 无论好坏对你也是一种提升!!!

转载于:https://www.cnblogs.com/enein/archive/2012/12/06/2804996.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值