今天大帅比丢来一张图。。
大帅比的一张图
看起来很神奇。。查了查资料,感觉算是个黑魔法吧。

以下内容出自:http://www.infoq.com/cn/articles/es6-in-depth-arrow-functions

箭头符号在JavaScript诞生时就已经存在,当初第一个JavaScript教程曾建议在HTML注释内包裹行内脚本,这样可以避免不支持JS的浏览器误将JS代码显示为文本。你会写这样的代码:

    <script language="javascript">
    <!--
      document.bgColor = "brown";  // red
    // -->
    </script>

老式浏览器会将这段代码解析为两个不支持的标签和一条注释,只有新式浏览器才能识别出其中的JS代码。
为了支持这种奇怪的hack方式,浏览器中的JavaScript引擎将<!--这四个字符解析为单行注释的起始部分,我没开玩笑,这自始至终就是语言的一部分,直到现在仍然有效,这种注释符号不仅出现<script>标签后的首行,在JS代码的每个角落你都有可能见到它,甚至在Node中也是如此。

碰巧,这种注释风格首次在ES6中被标准化了,但在新标准中箭头被用来做其它事情。箭头序列-->同样是单行注释的一部分。古怪的是,在HTML中-->之前的字符是注释的一部分,而在JS中-->之后的部分才是注释。

你一定感到陌生的是,只有当箭头在行首时才会注释当前行。这是因为在其它上下文中,-->是一个JS运算符:“趋向于”运算符!

    function countdown(n) {
      while (n --> 0)  // "n goes to zero"
        alert(n);
      blastoff();
    }

上面这段代码可以正常运行,循环会一直重复直到n趋于0,这当然不是ES6中的新特性,它只不过是将两个你早已熟悉的特性通过一些误导性的手段结合在一起。你能理解么?通常来说,类似这种谜团都可以在Stack Overflow上找到答案。

  • <!-- 单行注释

  • --> "趋向于"操作符