zoukankan      html  css  js  c++  java
  • 令我哭笑不得的 coffeeScript 编译 费时工作篇

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

      上午看了 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” 非本人的通常写法. 导致我用异同的眼光去看它. 

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

  • 相关阅读:
    Jmeter运行原理
    hihoOffer收割练习20题目2
    hihoOffer收割练习20题目1
    STL-map容器
    STL-map容器
    2017多校合练1
    2017多校合练1
    STL之map基础知识
    STL之map基础知识
    DP入门
  • 原文地址:https://www.cnblogs.com/enein/p/2804996.html
Copyright © 2011-2022 走看看