令我哭笑不得的 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” 非本人的通常寫法. 導致我用異同的眼光去看它. 

結論: 多接觸接觸別人的代碼, 別人的寫法. 無論好壞對你也是一種提升!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM