JavaScript 权威 Douglas Crockford 点评 JS 在 2014年的变化

520 查看

在Nordic.js 2014 大会上,Douglas Crockford 分享了一次他心中的 JavaScript 语言中的出色部分,他聊了 ECMAScript6。我做了一个简单总结,大家可了解一下。

伯乐在线注:方便翻墙的朋友,可在 Youtube 观看完整演讲视频

他认为 ES6 中的出色部分:

  • ES6 新引进的尾部调用优化 使 Javascript 真正变为了一个函数式编程的语言
  • ES6引入 rest 运算符(…),用于获取函数的多余参数
  • 模块  —— 为了避免使用全局变量
  • 可以使用 let 语句定义块范围变量 -> “let 是一种新的 var
  •  解构语句 let {a, b} = obj ,相当于ES5中的  var a = obj.a, b = obj.b;
  • WeakMap 有一个糟糕的名字, 没人想使用一个弱类型,而是都喜欢使用强类型

 

ES6 的糟糕部分:

他承认 ES6 中所有的东西都是新的,很难判断他们将成为好的部分还是相反,但有些部分,他现在就感觉将成为糟粕

  • 最糟糕的是class ,  这个关键字是属于Java 开发者的, 它们不想使用Javascript , 是给那些不知道自己有多么可怜的人准备的
  • Generators – 带来的复杂度远超过价值
  • 还有一些他原来认为是出色部分,不过现在他不这么认为了
  • 他不再使用 new关键字, 而是使用 Object.create
  • 他也不再使用 Object.create (尽管这是给他增加的仅有的关键字)
  • 不使用 this,所以这个改变对他没有什么
  • 他不使用 null, 他认为没有任何必要存在两种类型表示未定义 :null 和 undefined
  • 他不再使用  falsiness
  • 他不再使用 for 语句,而是只使用原生数组的方法或者  Object.keys    Object.keys(obj).forEach(function(key) { /* ... */ });

关于下一代 JavaScript 语言的一些感想:

  • 从Dart 和 TypeScript 中没有看到我们需要改变的东西
  • 普及语言是一件很困难的事情,因为程序员是很对这件事很敏感,每一个改变都需要很长时间才能被接受
  • 离开类是一件很好的事情,但是他不再是一个原型继承的支持者
  •  他倡议使用闭包来写对象,从而带来 class-free 的面向对象。像下面这样:
  • 他同时提议下一代语言中需要的一种新的数字类型,称为 DEC64,使用这种新的类型(一种而且是唯一一种),可以解决  0.1 + 0.2 != 0.3 这种问题。(二进制浮点起源于1950年)他还谈到了两种类型的需求,业务与sceintific - 确切说是百分值与近似值。

我认为这是一个很有趣的演讲,Douglas Crockford 有很多关于现代 Javascirpt 的看法, 虽然有些看法很具争议,你对此看法如何,你是否同意他的观点,或者有好的看法,可以在评论中表达出来。