搜索
首页web前端js教程JavaScript:世界上最被误解的语言

JavaScript,也叫Mocha,LiveScript,JScript,ECMAScript,是世界上最受欢迎的编程语言之一。事实上,世界上每个人的个人电脑上至少安装了一种JavaScript的解释器,并且被广泛地使用着。JavaScript如此受欢迎的原因在于它在万维网中所扮演的脚本语言的角色。

名字

Java这个前缀的暗示使得人们总会把JavaScript和Java联系起来,认为JavaScript是Java的一个子集或者是一个功能差于Java的一个版本。似乎JavaScript这个名字就是有意造成一种混淆,而这种混淆带来了后来的误解。JavaScript不被解释成Java,Java就是Java。而JavaScript则是另一种不同的编程语言。

JavaScript的语法和Java相类似,这就像Java和C类似一样。但是,JavaScript并不是Java的一个子集就像Java不是C的子集。JavaScript在应用程序方面比Java(Oak)当初所打算的表现地更好。

JavaScript并不是在Java的诞生地——Sun Microsystems公司,被开发出来的,而是在Netscape(网景)被开发出来的。它最初被叫做LiveScript,而这个名字并没有让人们很迷惑。

Script这个后缀的暗示,说明JavaScript不是一种真正的“编程语言”,作为一门脚本语言和编程语言相比,还是有差距的。但是,这的确是一个专业化的问题。和C语言相比,JavaScript通过牺牲性能而换取更加丰富的表达能力和动态性。

披着 C 外衣的 Lisp

JavaScript的类 C 语法,包括花括号和笨重的for语句,使得它看起来更像是一种普通的过程式的语言。这是一种误导,因为和C 或 Java相比,JavaScript 和 函数式语言——比如 Lisp 和 Scheme,有着更多的相似之处。它用数组代替列表,用对象代替属性列表。函数是第一类型,函数可以有闭包。你不需要去平衡所有的这些圆括号,就可以使用匿名函数。

语言类型定型

JavaScript最初的设计是运行在Netscape Navigator上的。它的成功使它事实上成为了所有网页浏览器的标准配置。这就造成了语言类型的定型。可以说,JavaScript就是编程语言中的 George Reeves(注:美国演员,因扮演“超人”出名,导致被定型,而无法接演其他角色)。JavaScript也适用于很多和网页无关的应用程序。

变动的(语言设计)目标

JavaScript的第一个版本相当的弱。它缺少异常处理、内部函数、继承。就它现在的形式而言,它已经是一门完整的面向对象的编程语言了。但是,针对这门语言的很多观点都是基于它不成熟的形式而引发的。
负责管理这门语言的ECMA委员会正在开发扩展,这本是出于好意,但是这也加剧了一个更大的问题:版本变得越来越多。而这造成了更多的困扰。

设计错误

没有任何编程语言是完美的。JavaScript也有它本身设计错误,比如重载表示相加和附带类型转换的串连接两个含义,易错的with语句也应该避免使用。保留字策略过于严格。分号的嵌入也是一个巨大的错误,正则表达式的符号也是一样。这些错误会导致编程错误,同时将语言的设计作为一个整体质疑。幸运地是,这些问题中的很多问题可以用一个非常不错的 Lint 程序来缓和。

这个语言的设计整体上是相当健全的。令人惊讶地是,ECMAScript委员会似乎对于纠正这些错误并不感兴趣。也许,他们对创造一个新的语言更感兴趣吧。(注:这里应该是作者的调侃语)。

糟糕的实现

JavaScript早期的一些实现可谓是错误百出。这一点反映在语言上。更糟糕地是,这些实现被嵌入到了更加错误百出的web浏览器之中。

糟糕的参考书籍

几乎所有关于JavaScript的书籍都相当地糟糕。它们充满了错误,不恰当的例子,和没什么帮助的练习。这门语言中的重要特性被糟糕地解释,或者被完全忽略。我修订过很多关于JavaScript的书籍,但是我只推荐一本:《JavaScript权威指南(第五版)》——作者:David Flanagan。(作者语:如果你写了一本很好的书,请给我邮递一本赠阅本。)

不合格的标准

JavaScript的官方规范是由ECMA出版的。这个官方规范的质量相当的低。而且难以阅读和理解。这是一个造成拙劣书籍问题的一个原因,因为作者们无法使用标准文档来提升他们对语言的理解。ECMA和TC39委员会应该为此感到深深地窘迫和不安。

业余爱好者

很多使用JavaScript的人并不是程序员。他们缺乏专业素质和编写优秀程序的训练。无论如何,JavaScript拥有如此强大的表现力,以致于他们通过使用JavaScript可以做很多有意义的事情。这就让JavaScript背上了一个名声,就是说,JavaScript完全是给业余人员设计的语言,它不适合用于专业编程。其实,事实并非如此。

面向对象

JavaScript是面向对象的吗?它拥有对象,它的对象可以包含数据和处理数据的方法。对象中可以包含其他的对象。它没有类,但是它有构造函数,通过构造函数可以做类似于类的操作,包括充当类变量和方法的容器。它没有面向类的继承,但是它有面向原型的继承。

创建对象体系的两个主要方式分别是通过继承和通过聚合。JavaScript两个方法都有,但是它的动态性使得它可以在聚合的基础上变得更加优秀。

一些争论认为JavaScript不是一门真正的面向对象,因为它不支持(提供)信息的隐藏。也就是说,对象不能拥有私有变量和私有方法:所有的成员都是公共的。

但是又有证明显示,JavaScript中的对象可以有私有变量和私有方法。(注:原文中,作者这里是一个链接,介绍关于对象私有变量和私有方法的文档)当然,很少有人理解这一点,因为JavaScript是世界上最被误解的编程语言。(注:作者这里使用了一种轻松的调侃方式)。

一些争论认为JavaScript不是一门真正的面向对象,因为它不支持继承。但是这又被证明JavaScript不仅能支持传统的继承还能应用其它的代码复用模式。(注:原文这里仍然是一个链接)

版权2001年道格拉斯Crockford。版权所有Wrrrldwide。

【推荐课程:Javascript视频教程

以上是JavaScript:世界上最被误解的语言的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:CSDN。如有侵权,请联系admin@php.cn删除
Python vs. JavaScript:开发人员的比较分析Python vs. JavaScript:开发人员的比较分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

Python vs. JavaScript:选择合适的工具Python vs. JavaScript:选择合适的工具May 08, 2025 am 12:10 AM

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript:了解每个的优势Python和JavaScript:了解每个的优势May 06, 2025 am 12:15 AM

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

JavaScript的核心:它是在C还是C上构建的?JavaScript的核心:它是在C还是C上构建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript应用程序:从前端到后端JavaScript应用程序:从前端到后端May 04, 2025 am 12:12 AM

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

Python vs. JavaScript:您应该学到哪种语言?Python vs. JavaScript:您应该学到哪种语言?May 03, 2025 am 12:10 AM

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架:为现代网络开发提供动力JavaScript框架:为现代网络开发提供动力May 02, 2025 am 12:04 AM

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

JavaScript,C和浏览器之间的关系JavaScript,C和浏览器之间的关系May 01, 2025 am 12:06 AM

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器