李金帅
能将喜欢的东西留在身边,这就是我努力的意义。

JS发展史

2021-02 JS
Word count: 2.6k | Reading time: 9min

js发展历史

网景公司 布兰登.艾奇 10天时间搞出来了JavaScript,以前叫 LiveScript
后来网景公司被Sun公司收购,处于营销方面的考虑,把名字该为JavaScript。

编程语言分为3个历史阶段:

1
2
3
4
5
6
7
8
1. 机器语言:直接使用由“0”和“1”组成的二进制指令控制计算机,二进制是计算机的语言的基础。
用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。

2. 汇编语言:把CPU指令表示为单词或单词的缩写,极大的方便了程序员对各种指令的记忆。一定程度上简化了编程复杂度,减低了学编程语言的成本。
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。

3. 高级语言:第三代编程语言,对CPU指令进行了高度的封装,使用更接近于人类语言的语法规则,编出的程序能在所有机器上通用。使编程复杂度和学习难度进一步降低。高级语言同样不能直接运行,需要使用编译程序将高级语言的源代码编译为汇编语言,然后才能执行。(例如c语言,某台设置只要能够运行c语言的编译器,就能够运行c语言程序)。

高级语言:

  1. 首先,按照运行原理,分为编译型和解释型(脚本型)。
    编译型:在程序执行之前,有一个单独的编译过程,将程序的所有源代码都编译为可执行代码(机器语言),再执行编译之后的可执行代码。(c,c++,java)
    解释型:程序在运行的过程中:一边编译,一边执行(编译一行,执行一行)(javascript,python,php,c#)。
    理论上,编译型语言比解释型语言执行效率高。

  2. 按照数据类型是否强制,可以分为强类型语言和弱类型语言。
    强类型:程序中变量、参数、函数返回值,都必须指明类型,不同类型的变量不能相互赋值。(c,java,c++,c#)
    弱类型:变量、参数、函数返回值不需要指定类型,一个变量的类型是不固定的。(js,vb)

  3. 按照编程范式,可分为面向对象语言和面向过程语言。
    面向过程:将函数作为程序的基本单元,着重程序流程的开发。(c,js,pascal,vb)。
    面向对象:类和对象是程序的基本单元,函数不能独立存在,着重类和对象的开发。(c++,java,objective-C)。
    例题:把大象装进冰箱需要几步
    面向过程:

     1.打开冰箱门。
     2.把大象装进冰箱。
     3.关上冰箱门。
    

    面向对象:

     冰箱有三个功能: 1.打开冰箱门。2.把“某物”装进冰箱。3.关上冰箱门。
     告诉冰箱执行这三个功能,冰箱会自动打开门,然后把大象装进去,最后关门。
    
  4. JavaScript

  • JS是具有函数优先的轻量级脚本语言(是一种弱类型的解释型语言,支持多范式开发“既可以面向过程也可以面向对象”)。
  • JS作为一门脚本语言,没有自己的独立运行环境,只能依附于其他的程序运行“浏览器”。直到nodeJs “js的服务器” 发布后JS才有了自己的独立运行环境,才能够操作系统功能。
  • JS的作用:实现浏览器和用户的交互以及动态样式交互 (交互:一问一答)
  • 在JS眼中国页面上所有的东西都是数据“data”,在JS眼里万物万事都是对象,所以程序员天天面对对象但是找不到对象。
  • JS的兼容性问题:每个浏览器对JS的解析程度不同。
  1. JavaScript的优点和缺点
    优点:
    1.使用JS可以在客户端进行数据验证,节省服务器端的资源。
    2.可以方便的操作各个方面的对象,使页面更加友好。
    3.使多种任务仅在客户端可以完成而不需要网络和服务器的参与,从而支持分布式运算和处理。
    缺点:
    1.兼容性:互联网上有很多浏览器,但是各种浏览器支持JS的程度不一样,所有JS在各个浏览器上运行出来的结果会有一定差距,有时甚至会显示不出来。
    2.JS不能打开:读写和保存用户计算机上的文件。

JavaScript 和 Java 的关系

  1. JavaScript 和 Java是两种不同的语言。他们语法上很类似 但 本质有着很大的区别。Java是比JS更加复杂的程序语言,而JS相对于Java来说很容易上手,但二者之间没有关系。
  2. JS和Java的关系好比“雷锋和雷峰塔的关系”,(1995年,网景公司的布兰登.艾奇“Brendan Eich”开发的LiveScript,在sun公司收购后改名为JavaScript,原因是当时Java语言非常红火,所以借Java的名气来推广JS“但事实上除了语法类似之外没有任何关系”)。

ECMAScript 和 JavaScript 的关系

一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

1
2
3
4
5
6
7
- 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。

- 该标准从一开始就是针对 JavaScript 语言制定的,但是之所以不叫 JavaScript,有两个原因。一是商标,Java 是 Sun 公司的商标,根据授权协议,只有 Netscape 公司可以合法地使用 JavaScript 这个名字,且 JavaScript 本身也已经被 Netscape 公司注册为商标。二是想体现这门语言的制定者是 ECMA,不是 Netscape,这样有利于保证这门语言的开放性和中立性。

- 因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 JScript 和 ActionScript)。日常场合,这两个词是可以互换的。

- JavaScript 在发明之初,仅仅是一个浏览器的脚本语言,本身又很多不合理,不严谨之处。随着JavaScript语言越来越流行,这些问题就更加凸显,ECMA在接手JavaScript之后,持续更新了7个版本,来修正JavaScript中的各种不合理之处。

ECMAScript 的历史

1
2
3
4
5
6
7
8
9
10
11
ECMAScript 1.0 是 1997 年发布
ECMAScript 2.0 是 1998 年 6 月发布
ECMAScript 3.0 是 1999 年 12 月发布。3.0 版是一个巨大的成功,在业界得到广泛支持,成为通行标准,奠定了 JavaScript 语言的基本语法,以后的版本完全继承。直到今天,初学者一开始学习 JavaScript,其实就是在学 3.0 版的语法。
2000 年,ECMAScript 4.0 开始酝酿。这个版本最后没有通过,但是它的大部分内容被 ES6 继承了。因此,ES6 制定的起点其实是 2000 年。
2009 年 12 月,ECMAScript 5.0 版正式发布。
2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。从 2000 年算起,这时已经过去了 15 年。

ES5是使用最广泛的一个版本,但是ES5中还存在很多不严谨之处。后来又发布了ES6版本。
ES6中保留了历史版本所有的特性,并添加了很多新特性。
从 ES6 (ES2015) 开始,JavaScript 版本发布变为年更,即每年发布一个新版本,以年号标识版本,
后续版本 ES7 (ES2016)、ES8 (ES2017)、ES9 (ES2018)、ES10(ES2019)

浏览器分为渲染引擎和js引擎

  1. 渲染引擎(也就是浏览器内核),用来解析html 和 css。
  2. js引擎(解释器)解析js代码。

js的组成

  1. js基础语法
  2. DOM对象模型 /文档对象模型(DOM:Document Object Model)
  3. BOM对象模型 /浏览器对象模型(B:Broswer Object Model)

HTML,CSS 和 JavaScript的关系

  1. HTML决定了页面上的内容(用户看到的内容“标签”)。
  2. CSS决定了页面中内容的样式(对页面的美化)。
  3. JavaScript决定了页面的事务逻辑(添加交互,动态效果)。

Author: 李金帅

Link: https://lijinshuai21.github.io/Li_JinShuai_Blog/2021/02/01/js%E7%AE%80%E4%BB%8B/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
闭包
NextPost >
Cookie内存
CATALOG
  1. 1. js发展历史
  2. 2. 编程语言分为3个历史阶段:
  3. 3. 高级语言:
  4. 4. JavaScript 和 Java 的关系
  5. 5. ECMAScript 和 JavaScript 的关系
    1. 5.0.1. 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?
  6. 5.1. ECMAScript 的历史
  • 6. 浏览器分为渲染引擎和js引擎
  • 7. js的组成
  • 8. HTML,CSS 和 JavaScript的关系