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视频教程】
Atas ialah kandungan terperinci JavaScript:世界上最被误解的语言. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

JavaScript adalah di tengah -tengah laman web moden kerana ia meningkatkan interaktiviti dan dinamik laman web. 1) Ia membolehkan untuk menukar kandungan tanpa menyegarkan halaman, 2) memanipulasi laman web melalui Domapi, 3) menyokong kesan interaktif kompleks seperti animasi dan drag-and-drop, 4) mengoptimumkan prestasi dan amalan terbaik untuk meningkatkan pengalaman pengguna.

C dan JavaScript mencapai interoperabilitas melalui webassembly. 1) Kod C disusun ke dalam modul WebAssembly dan diperkenalkan ke dalam persekitaran JavaScript untuk meningkatkan kuasa pengkomputeran. 2) Dalam pembangunan permainan, C mengendalikan enjin fizik dan rendering grafik, dan JavaScript bertanggungjawab untuk logik permainan dan antara muka pengguna.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa