javascript

位置:IT落伍者 >> javascript >> 浏览文章

JavaScript:世界上误解最深的语言[2]


发布日期:2022年06月17日
 
JavaScript:世界上误解最深的语言[2]

The ECMA committee that has stewardship over the language is developing extensions which while well intentioned will aggravate one of the languages biggest problems: There are already too many versions This creates confusion

ECMA委员会这门语言的管家正在对它进行扩展也在蓄意恶化它最大的问题有太多的版本这是混乱的根源

Design Errors

设计上的错误

No programming language is perfect JavaScript has its share of design errors such as the overloading of + to mean both addition and concatenation with type coercion and the errorprone with statement should be avoided The reserved word policies are much too strict Semicolon insertion was a huge mistake as was the notation for literal regular expressions These mistakes have led to programming errors and called the design of the language as a whole into question Fortunately many of these problems can be mitigated with a good lint program

没有什么编程语言是完美的JavaScript也有它设计上的错误比如重载的+号随着类型的不同既表示相加又表示连接和本该避免的有错误倾向的 with 语句它的保留字策略过于严格分号的插入是一个巨大的错误比如作为字面正则表达式的符号时这些失误已直接导致编程中的错误也使这门语言的整体设计遭人质疑还好这些问题中有许多都可以在良好的 lint 程序中得以缓解

The design of the language on the whole is quite sound Surprisingly the ECMAScript committee does not appear to be interested in correcting these problems Perhaps they are more interested in making new ones

这门语言的整体设计(上的问题)是相当明显的奇怪的是ECMAScript委员会并没有对修正其中存在的问题表现出太大的兴趣也许他们更热衷于制造新的问题

Lousy Implementations

糟糕的实现

Some of the earlier implementations of JavaScript were quite buggy This reflected badly on the language Compounding that those implementations were embedded in horribly buggy web browsers

JavaScript的一些早期实现有许多bug这反过来对语言本身产生了很坏的影响更糟糕的是这些满是bug的实现是嵌入在满是bug的web浏览器中的

Bad Books

糟糕的书

Nearly all of the books about JavaScript are quite awful They contain errors poor examples and promote bad practices Important features of the language are often explained poorly or left out entirely I have reviewed dozens of JavaScript books and I can only recommend one: JavaScript: The Definitive Guide (th Edition) by David Flanagan (Attention authors: If you have written a good one please send me a review copy)

几乎所有的JavaScript书都是相当可怕的它们包含错误包含不好的例子并鼓励不好的做法JavaScript语言的一些重要特性它们要么没有解释清楚要么根本就没有提及我看过很多JavaScript的书但我只能推荐一本David Flanagan着的 JavaScript: The Definitive Guide (th Edition) (《JavaScript权威指南 第四版》)(作者们请注意如果你们写出了好书请发给我一份副本我给你们校对

Substandard Standard

准标准的标准

The official specification for the language is published by ECMA The specification is of extremely poor quality It is difficult to read and very difficult to understand This has been a contributor to the Bad Book problem because authors have been unable to use the standard document to improve their own understanding of the language ECMA and the TC committee should be deeply embarrassed

ECMA公布的官方语言规范的质量极其的差不仅难读而且极其难懂它可为那些糟糕的书做出了不小的贡献因为那些作者无法通过这个标准文档来更深地理解这门语言ECMA和TC应该为此感到非常尴尬

Amateurs业余者

Most of the people writing in JavaScript are not programmers They lack the training and discipline to write good programs JavaScript has so much expressive power that they are able to do useful things in it anyway This has given JavaScript a reputation of being strictly for the amateurs that it is not suitable for professional programming This is simply not the case

使用JavaScript的人大多不是程序员他们缺少写良好程序的培训和训练JavaScript有非常强大的表现力不管怎样他们也能使用它做有用的事情这给了JavaScript一个全然适合业余爱好者而不适合专业程序员的名声这很明显是一个错误

ObjectOriented面向对象

Is JavaScript objectoriented? It has objects which can contain data and methods that act upon that data Objects can contain other objects It does not have classes but it does have constructors which do what classes do including acting as containers for class variables and methods It does not have classoriented inheritance but it does have prototypeoriented inheritance

JavaScript是面向对象的吗?它有对象它的对象可以包含数据以及对数据进行操作的方法对象也可以包含其他的对象它没有类但是它有构造函数来做类的事情包括声明类的变量和方法它没有面向类的继承但是他有面向原型的继承

The two main ways of building up object systems are by inheritance (isa) and by aggregation (hasa) JavaScript does both but its dynamic nature allows it to excel at aggregation

构建对象系统的两大主要方法是继承(isa)和聚合(hasa)这两者JavaScript都有但是它的动态天性允许有比聚合更好的实现方式

Some argue that JavaScript is not truly object oriented because it does not provide information hiding That is objects cannot have private variables and private methods: All members are public

一些关于JavaScript不是真的面向对象的争论其理由是它没有提供信息隐藏也就是说JavaScript的对象没有私有变量和私有方法它的所有成员都是公开的

But it turns out that JavaScript objects canhave private variables and private methods (Click here now to find out how) Of course few understand this because JavaScript is the worlds most misunderstood programming language

但是事实是JavaScript 的对象可以有私有变量和私有方法(点击这里来看如何实现)当然之所以很少有人知道这个是因为JavaScript是世界上误解最深的语言嘛

Some argue that JavaScript is not truly object oriented because it does not provide inheritance But it turns out that JavaScript supports not only classical inheritance but other code reuse patterns as well

另一些关于JavaScript不是真的面向对象的争论其理由是它没有提供继承但是事实是JavaScript不但支持经典的继承而且支持其他一些代码重用的模式

Copyright Douglas Crockford All Rights Reserved Wrrrldwide

[] []

               

上一篇:应用最广的十大Javascript框架

下一篇:JavaScript:世界上误解最深的语言[1]