《献给你,我深爱的ECMAScript》开篇

发布于 小春

本系列之个人初衷:

从有这个想法到真正一点一点开始写,再到这个beta版本上线,其实有很多心酸。 基本都是挤出的大部分的私人时间(有晚上的7-10点,有周六日和几个北京暴热的夏夜通宵等等),能够坚持下来,我自己很开心也很欣慰。

也声明: 本文中代码均个人手敲,发布前也大致校正了一版,但是难免会有问题,希望大家可以在评论区留言,会第一时间修复。

也承诺: 考虑到ECMAScript本身的特殊性,本文中列举的部分ECMAScript6标准还没有定稿,会一直保持更新状况。

也欢迎: 欢迎对此感兴趣的同学加入进来,对系列内容进行补充。

其实和我2012-09-20发布的 《个人呕心沥血之作-----js大脑图beta01版正式发布》,当然有心的人能看出那个大脑图不是市面上的一些简单地罗列原生属性和方法的图,

而是有一定关系分布的“大脑图”-- 包含区分底层原生js和一些二次封装的业务api, 它的背后是我博客里面当时大概过700篇的技术小点实现的细节,也是大概当时想呈现的脑袋里面的关于js的一个思维布局。

当然,过了那么久,有很多的优化和提升的空间。

当时其实还有一个简单的想法是:

博客日志到1000的时候,我要写一个关于ES系列相关主题。

为什么叫《献给你,我深爱的ECMAScript》?

这个题目是我自己坐车的时候,一瞬间决定的。

也是正好在七夕这一天发布,希望每一个来到这里的同学,真心祝福七夕快乐

因为爱,才会有很多的思考和积累,对于我个人来讲,远远大于只是工作本身。

同样,我也以此献给那些热爱前端的同学。

正文:

还记得很早之前有一篇文章《The World's Most Misunderstood Programming Language》,它的作者就是Douglas Crockford。

如果你是一个js开发工程师,但是没有听过Douglas Crockford,那你就out啦,简单说说吧。

他是:

1. 以前Yahoo!资深的js架构师,现PayPal高级js架构师

2.《JavaScript语言精粹》的作者

3. JSON、JSLint和JSMin的创造者

当然他还有一个身份和今天的主题有关: ECMA技术委员会的委员(专业名称:TC39)

神秘的TC39?

TC39其实有5个讨论组:

1. TC39-TG1 --- 动态脚本语言 现在这个组的website会自动跳到TC39 - ECMAScript

2. TC39-TG2 --- C#

3. TC39-TG3 --- 通用语言架构(CLI)

4. TC39-TG4 --- Eiffel

5. TC39-TG5 --- CLI 的C++ binding 想了解更多相关的可以点击:这里

那为啥是ECMAScript?

不知道有没有同学和我一样,那会很认真地听过爱民老师的《谈javascript发展》,其实有很多的同学在有一定的js编写能力后,都会相对关注一点语言本身的东西,比如语言本身的历史、草案的制定演变过程等等.

javascript实际上是ECMAScript-262标准的实现和扩展。

特别是javascript本身的特殊性,理清楚原生方法和属性,大到在你设计一些底层类库的时候,小到处理一些包装底层函数的业务api,都是有一定的必要的。

当然我个人也觉得,这也是你作为js高级工程师的必备技能之一吧。

ECMAScript与javascript的区别?

Javascript有三个部分组成:

1.ECMAScript

2.DOM

3.BOM

再提一提ECMAScript5

ECMAScript第5版本的说明书在09年12月被批准为ECMA标准. 很多同学应该看过github上的那个 ECMAScript5 compatibility table ,现在我们再回顾的时候,基本大部分都是绿色了,而不是刚开始的一篇红。

而且后面我们在对比各大前端框架和一些类库在具体实现的时候也部分加入了这个版本的兼容分支。

举一个有简单而有意义的例子?

//还有人记得这道题目的答案吗?
["zhangyaochun","w3cplus","fe",].length;

//第一类答案:我知道,这肯定有兼容问题,但是具体说就说不出来

//第二类答案:应该IE和非IE的是不一样的,估计是IE6这种”低级“浏览器不一样

//第三类答案:IE6-8会返回4,但是其他高级浏览器都是3,至于原理--有的是实践的出来的,有的是搜索引擎出来的~    

下面原文来自:

Standard ECMA-262 3 Edition 1999 12月

11.1.4 Array Initialiser:

Array elements may be elided at the beginning, middle or end of the element list.

Whenever a comma in the element list is not preceded by an AssignmentExpression (i.e., a comma at the beginning or after another comma), the missing array element contributes to the length of the Array and increases the index of subsequent elements.

Elided array elements are not defined.

 

再看看Standard ECMA-262 5 Edition

多了一句

If an element is elided at the end of an array, that element does not contribute to the length of the Array.。

数组尾部的,不会计入数组的长度。

本文的主要内涵?

会基本分布在ECMAScript5和6之间,对比目前流行的国内外前端框架和类库,探一探源码实现细节对ES的支持情况。

目前加入的一些库如下:

  prototype

  underscore

  kissy

  tangram

  qwrap

  JX

在此真心感谢这些开源者。也希望借这个专题,让更多地人关注这些。

扩展阅读:

如需转载,烦请注明出处:https://www.fedev.cn/js/ecmascript-lesson-1.html

jordan shoes for sale outlet custom