JS初始介绍

js发展历史

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

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

一.机器语言

二.汇编语言

三.高级语言

     一. 机器语言:直接使用由“0”和“1”组成的二进制指令控制计算机,二进制是计算机的语言的基础。

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

      二. 汇编语言:把CPU指令表示为单词或单词的缩写,极大的方便了程序员对各种指令的记忆。一定程度上简化了编程复杂度,减低了学编程语言的成本。

       为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。

       汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。

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

       高级语言:

                   1.首先,按照运行原理,分为 编译型解释型(脚本型)

                      编译型:在程序执行之前,有一个单独的编译过程,将程序的所有源代码都编译为可执行代码(机器语言),再执行编译之后的可执行代码。(c,c++,Java)

                      解释型:程序在运行的过程中,一边编译,一边执行“编译一行,执行一行”。(JavaScript, python, PHP)

                   2. 按照数据类型是否强制,分为 强类型弱类型 语言。

                      强类型:程序中变量,参数,函数的返回值,都必须指明数据类型,不同类型的变量不能互相赋值。(c,c++,Java)

                      弱类型:变量,参数,函数的返回值不需要指定类型,一个变量的类型是不固定的。(JavaScript)

                    3. 按照编程范式,可分为 面向对象面向过程 语言。

                        面向对象:类和对象是程序的基本单元,函数不能独立存在,着重类和对象的开发。(c,c++,Java)

                        面向过程:将函数作为程序的基本单元,着重程序的过程的开发。(JavaSript, python)

                  注意:JavaScript 既可以面向对象也可以面向过程,可 多范式开发。

                         4. JavaScript

                             JavaScript是一种弱类型解释型语言(轻量级脚本语言),支持多范式开发(既可以面向对象也可以面向过程)。

                             JavaScript作为一门脚本语言,没有自己独立的运行环境,只能依附于其他的程序运行(浏览器),直到nodejs发布,js才有了独立的运行环境,才能够调用操作系统功能。

                             JavaScript作用:实现浏览器和用户的交互,以及动态样式的交互(交互:一问一答),在js眼中页面上所有的东西都是数据"data", 在JS眼中万物皆对象。JS存在兼容性问题“因为每个浏览器对JS的解析程度不同”。

                         5. JavaScript的优缺点

                              优点: 1. 使用JS可在客户端进行数据验证,节省服务器的资源。

                                          2. 可以方便操作各个方面的对象,使页面更加的友好。

                                          3. 使多种任务仅在客户端可以完成而不需要网络和服务器参与,从而支持分布式的运算和处理。

                               缺点:1. 兼容性:因为每个浏览器对JS的解析程度不同,js运行的结果会有一定的偏差,甚至显示不出来。

                                          2. JS不能打开,读写和保存用户计算机上的文件。

                           6. 分清 Java 和 JavaScript 的关系。

                               JavaScript 和 Java是两种不同的语言。他们语法上很类似 但 本质有着很大的区别。Java是比JS更加复杂的程序语言,而JS相对于Java来说很容易上手,但二者之间没有关系。

                               JS和Java的关系好比“雷锋和雷峰塔的关系”,(1995年,网景公司的布兰登.艾奇“Brendan Eich”开发的LiveScript,在sun公司收购后改名为JavaScript,原因是当时Java语言非常红火,所以借Java的名气来推广JS“但事实上除了语法类似之外没有任何关系”)。

                            7. HTML ,CSS 和 JS 之间的关系。

                                 HTML决定了页面上的内容(用户看到的内容,标签)

                                 CSS决定了页面的样式(对页面的内容的布局和美化)

                                 JS决定了页面的事务逻辑(添加交互,事件,动态效果)

ECMAScript 和 JavaScript 的关系

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

       要讲清楚这个问题,需要回顾历史。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 的历史

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)