javascript发展过程
JavaScript 因为互联网而生,紧随着浏览器的出现而问世。回顾它的历史,就要从浏览器的历史讲起。
1990年,欧洲的Tim Berners-Lee在互联网基础上发明了万维网,可以在网页上浏览器网页文件。最早的网页只能在操作系统的终端里浏览,也就是只能用命名行的方式,网页在字符窗口里显示,非常的不方便。
1992年,NCSA开始开发一个独立的浏览器,叫做Mosaic。Mosaic:互联网历史上第一个获普遍使用和能够显示图片的网页浏览器
1994年,NCSA的一个程序员联合一家风险投资家,成立了Mosaic通信公司,不久改名为Netscape。这家公司在Mosaic的基础上开发了面向普通用户的新一代浏览器Netscape Navigator。
1994年12月,Navigator发布了1.0版,市场份额一举超过90%。
Netscape 公司很快发现,Navigator浏览器需要一种可以嵌入网页的脚本语言,用来控制浏览器行为。当时,网速很慢而且上网费很贵,有些操作不宜在服务器端完成。比如,如果用户忘记填写“用户名”,就点了“发送”按钮,到服务器再发现这一点就有点太晚了,最好能在用户发出数据之前,就告诉用户“请填写用户名”。这就需要在网页中嵌入小程序,让浏览器检查每一栏是否都填写了。
1995年5月,Brendan Eich只用了10天,就设计完成了这种语言的第一版。它是一个大杂烩,语法有多个来源:借鉴了C语言和java语言。 借鉴了python语言。Perl语言。
Netscape 公司的这种浏览器脚本语言,最初名字叫做 Mocha,1995年9月改为LiveScript。12月,Netscape公司与Sun公司(Java语言的发明者和所有者)达成协议,后者允许将这种语言叫做JavaScript。Netscape公司可以借助Java语言的声势,而Sun公司则将自己的影响力扩展到了浏览器。
1995年12月4日,Netscape 公司与 Sun 公司联合发布了 JavaScript 语言。当时的意图是将 JavaScript 作为 Java 的补充,用来操作网页。
1996年3月,Navigator 2.0 浏览器正式内置了 JavaScript 脚本语言。
1996年8月,微软模仿JavaScript开发了一种相近的语言,取名为JScript(JavaScript是Netscape的注册商标,微软不能用),首先内置于IE 3.0。Netscape公司面临丧失浏览器脚本语言的主导权的局面。
1996年11月,Netscape公司决定将JavaScript提交给国际标准化组织ECMA。希望JavaScript能够成为国际标准,以此抵抗微软。ECMA的39号技术委员会(Technical Committee 39)负责制定和审核这个标准,成员由业内的大公司派出的工程师组成,目前共25个人。该委员会定期开会,所有的邮件讨论和会议记录,都是公开的。
1997年7月,ECMA组织发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。之所以不叫JavaScript,一方面是由于商标的关系,Java是Sun公司的商标,根据一份授权协议,只有Netscape公司可以合法地使用JavaScript这个名字,且JavaScript已经被Netscape公司注册为商标,另一方面也是想体现这门语言的制定者是ECMA,不是Netscape,这样有利于保证这门语言的开放性和中立性。因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的
ECMAScript只用来标准化JavaScript这种语言的基本语法结构,与部署环境相关的标准都由其他标准规定,比如DOM的标准就是由W3C组织(World Wide Web Consortium)制定的
1997年7月,ECMAScript 1.0发布。
1998年6月,ECMAScript 2.0版发布。
1999年12月,ECMAScript 3.0版发布,成为JavaScript的通行标准,得到了广泛支持。
2007年10月,ECMAScript 4.0版草案发布,对3.0版做了大幅升级,预计次年8月发布正式版本。草案发布后,由于4.0版的目标过于激进,各方对于是否通过这个标准,发生了严重分歧。以Yahoo、Microsoft、Google为首的大公司,反对JavaScript的大幅升级,主张小幅改动;以JavaScript创造者Brendan Eich为首的Mozilla公司,则坚持当前的草案。
2008年7月,由于对于下一个版本应该包括哪些功能,各方分歧太大,争论过于激进,ECMA开会决定,中止ECMAScript 4.0的开发(即废除了这个版本),将其中涉及现有功能改善的一小部分,发布为ECMAScript 3.1,而将其他激进的设想扩大范围,放入以后的版本,由于会议的气氛,该版本的项目代号起名为Harmony(和谐)。会后不久,ECMAScript 3.1就改名为ECMAScript 5。
2009年12月,ECMAScript 5.0版正式发布。
2015年6月,ECMAScript 6正式发布,并且更名为“ECMAScript 2015”。
1994年 Netscape公司推出免费版本浏览器 Netscape Navigator(网景浏览器1.0)
1995年微软公司发布 Internet Explorer1.0。
1995年网景公司为适应市场变化,需要开发一门专门在浏览器运行的脚本语言,这个任务交给了布兰登,为了应付公司安排的任务他只用10天时间就提交了工作,并将这门语言命内LiveScript
后来为了蹭sun公司java的热度与sun公司合作定将某时名为 javascript
1996年8月,微软模仿javaScript开发了一种相的语言,取名为 jScript,首先内置于E30
1997年7月,ECMA组织发布 DECMAScript1.0 版本
此后,明争暗斗不断,1998年6月, ECMAScript20版发布,1999年12月, ECMAScript3.0版发布;
2007年10月, ECMAScript4。版草案发布200生月中上 ECMAScript40的开发,并发布3.1版本会后不久, ECMAScript3.1就改名为 ECMAScript5
2011年月, ECMAScript1版发布,现在使用最为厂泛的版本版发布,现在使用最为广泛的版本
2015年6月, ECMAScript6正式发布,并且更名为 ECMAScript2015
随后,ECMA组织决定,每年发布一个升级版本,以年号来代替版本号,如: ECMAScript2016、 ECMAScript2017
五大浏览器内核
主流浏览器:有自己独立研发的内核:
1、IE浏览器内核:Trident内核,也是俗称的IE内核;
2、Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核;
3、Firefox浏览器内核:Gecko内核,俗称Firefox内核;
4、Safari浏览器内核:Webkit内核;
5、Opera浏览器内核:最初是自己的Presto内核,后来加入谷歌大军,从Webkit又到了Blink内核;
ECMAScript
ECMA欧洲计算机联合制造会
ECMAScript是一套标准,定义了一套语言的标准,规定了基本的语法关键字,具体API的设计规范
javascript和HTML、CSS
HTML提供网页的结构
CSS用来样式排版、美化网页
javascript用来控制网页的内容,给网页增加更多动态的效果
javascript能做些什么?
嵌入动态文本于HTML页面。
对浏览器事件做出响应。
读写HTML元素。
在数据被提交到服务器之前验证数据。
检测访客的浏览器信息。
控制cookies,包括创建和修改等。
基于Node.js技术进行服务器端编程。
javascript都学哪些内容呢
1. ECMAScript的核心语法部分很精准简,它只包含两部分:a、基本语法构造 b、标准库(就是一系列具有各种功能的对象比如Array、Date、Math等)
2. 要想实现更复杂的操作和效果,都要依靠宿主环境提供的API。javascript的宿主环境有多种,最常见的环境还是浏览器,也有服务器环境
javascript语言的特点
- 特点
1)解释性
JavaScript不同于一些编译性的程序语言,例如C、C++等,它是一种解释性的程序语言,它的源代码不需要经过编译,而直接在浏览器中运行时被解释。
(2)基于对象
JavaScript是一种基于对象的语言。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。
(3)事件驱动
JavaScript可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的响应,是以事件驱动的方式进行的。所谓事件驱动,就是指在主页中执行了某种操作所产生的动作,此动作称为“事件”。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。
(4)跨平台
JavaScript依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。
(5)安全性
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。这样可有效地防止数据的丢失。
javascript的组成
-
ECMAScript:
ECMAScript 定义的只是这门语言的基础语法和规范
-
文档对象模型(DOM)—对应Document对象
文档对象模型(DOM)——对应Document对象;
DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。
用DOM API 可以轻松地删除、添加和替换节点(getElementById、childNodes、appendChild、 innerHTML)
DOM把一份文档理解为一颗家谱树(节点树),分别为parent(父节点)、child(子节点)、sibling(兄弟节点)
- 浏览器对象模型(BOM)—对应window对象
它提供了很多对象,用于访问浏览器的功能;这些功能与任何网页内容无关;
对浏览器窗口进行访问和操作。例如弹出新的浏览器窗口,移动、改变和关闭浏览器窗口,提供详细的网络浏览器信息(navigator object),详细的页面信息(location object),详细的用户屏幕分辨率的信息(screen object)等等
javascript的四种输出方式
- 使用window.alert()输出警告框
- 使用document.write()方法将内容写到html文档中
- 使用innerHTML写入到HTML元素
- 使用console.log()写入到浏览器的控制台
javascript的语法
-
JS引入方式、书写位置
-
严格区分大小写
-
标识符
-
注释
1. 单行注释: //注释的内容
2. 多行注释: /要注释行内容/ -
运算符
运算符 | 解释 | 符号 | 示例 |
---|---|---|---|
加 | 将两个数字相加,或拼接两个字符串。 | + | 6 + 9;"Hello " + “world!”; |
减、乘、除 | 这些运算符操作与基础算术一致。只是乘法写作星号,除法写作斜杠。 | -, *, / | 9 - 3;8 * 2;9 / 3; |
赋值运算符 | 为变量赋值(你之前已经见过这个符号了) | = | var myVariable = ‘李雷’; |
等于 | 测试两个值是否相等,并返回一个 true/false (布尔)值。 | === | var myVariable = 3; |
不等于 | 和等于运算符相反,测试两个值是否不相等,并返回一个 true/false (布尔)值。 | !== | var myVariable = 3; |
取非 | 返回逻辑相反的值,比如当前值为真,则返回 false。 | ! | 原式为真,但经取非后值为 false: |
- 变量
-
什么是变量
变量是用于存储某种/某些数值的存储器。我们可以把变量看做一个盒子, 为了区分盒子,可以用BOX1,BOX2等名称代表不同盒子,BOX1就是盒子的名字, 也就是变量的名字。 当页面运行时,保留内存的标识,这个标识的值是可以改变的,供以后随时来调用,
-
javascript声明变量有三种方式
1.使用var 关键词声明var 变量名=值 变量名必须符合javascript标识符要求,字符型和数值声明方式不一样,字符型的必须用 引号 如: var uname="王大拿"; var uage=19; //数值型的不需要用引号,可以进行算术运算
2.不使用var
uname="李辰伟" uage=18
3.使用全局window对象的属性来定义变量
window.变量名=值
-
变量的命名
1. 变量必须使用字母、下划线(_)或者美元符( ) 开 始 。 2. 然 后 可 以 使 用 任 意 多 个 英 文 字 母 、 数 字 、 下 划 线 ( ) 或 者 美 元 符 ( )开始。 2. 然后可以使用任意多个英文字母、数字、下划线(_)或者美元符( )开始。2.然后可以使用任意多个英文字母、数字、下划线()或者美元符()组成。
3. 不能使用JavaScript关键词与JavaScript保留字。
4. 小驼峰命名法:除第一个单词之外,其他单词首字母大写(常用于变量) -
变量的注意事项
1. 在JS中区分大小写,如变量mychar与myChar是不一样的,表示是两个变量。 2. 变量虽然也可以不声明,直接使用,但不规范,需要先声明,后使用。
-
- 数据类型
变量 | 解释 | 示例 |
---|---|---|
String | 字符串 | var myVariable = ‘李雷’; |
Number | 数字 | var myVariable = 10; |
Boolean | 布尔 | var myVariable = true; |
Array | 数组 | var myVariable = [1, ‘李雷’, ‘韩梅梅’, 10]; |
Object | 对象 | var myVariable = document.querySelector(‘h1’); |
Undefined | 未定义 | var Str; |
Null | 没有对象 | var myVariable =null; |
基本数据类型转换
1.转换为数值型
var m="17a";
m=parseInt(m)
Int为整数 注意:NaN意思是不是数字
parseFloat()
number()
number() 将布尔类型 的false转为0 ,true 转为1 ,undefined转为NaN,null转为0
new Object()转为NaN,
2.转换为字符
String(数字)转换为字符
toString(数字) 转换对象
3.转换为布尔型
Boolean(mix)
可以把 “” 0 NaN undefined 0转为false
当插入一段动态文本时,会自动显示其每个属性的当前值。当更新属性时,动态文本也将自动更新。
保存地图文档的日期
一系列数据驱动页面”中自动更新的每个页面的页码和名称
当用户单击按钮或者提交表单数据时,就发生一个鼠标单击(onclick)事件,需要浏览器做出处理,返回给用户一个结果。
可读就是只能打开看或者浏览,可写就是可以修改或者可以新建删除的意思
可读不可写就是你只要看的权限没有修改的权限
1、先加载和后加载的区别。
浏览器解析html是从上到下的。如果把javascript放在head里,则先被解析。需要用window.onload起到一个延迟加载的作用。JavaScript脚本写在body里面,也要看具体位置。一般都是写在了body标签的最后面。
2、javascript代码默认是同步执行的,不管是内嵌的还是外部的javascript代码,都会阻塞后续html代码的加载和渲染以及后续javascript的解析。
3、但如果你这有一个javascript文件比较大,而这一部分的功能比较独立,没有他也不会影响页面的显示效果,那就可以考虑把它放在body的最后,即/body之前,这样整个页面载入了,页面完全显示了才开始处理这部分javascript,当然,也可以loadjs 等异步加载方式进行异步加载,这样就不会阻塞其他html和javasscript了。
4、一般情况下最好是单独把javascript放在js文件里,通过head里的链接起来,css则是通过link。这样做的目的是为了让内容-样式-逻辑分离,以便以后能够更好地维护
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的.
计算机不能直接理解高级语言,必须把高级语言翻译成机器语言才能执行高级语言编写的程序。
翻译的方式有两种:编译,解释 (两者只是翻译的时间不同)
解释型语言:不需要编译,程序在运行的时候才翻译成机器语言,执行一次翻译一次。
特点:
一. 效率低
每执行一次都要进行翻译。
二. 非独立性(依赖解释器)
三. 跨平台性好
编译型语言进行移植后要重新编译,相对而言解释型语言跨平台较容易。
同等条件下,编译型语言对系统的条件要求比较低,像开发操作系统,大型应用程序,数据库系统,则用编译型语言。