一、JavaScript起源
1、1994年,网景公司(Netscape)发布了Navigator浏览器0.9版
是历史上第一个比较成熟的网络浏览器 , 但这个版本的浏览器只能用来浏览,不具备与访问者互动的能力
2、网景公司当时有两个选择:
允许现有语言直接嵌入网页(推广方便,兼容性差)
发明一种全新语言(推广难,不用考虑兼容性)
3、1995年Sun公司将Oak语言改名为Java,正式向市场推出, 许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere)
4、网景公司与Sun公司联盟 ,雇佣 34岁的系统程序员Brendan Eich
他的设计思路是这样的:
(1)借鉴C语言的基本语法;
(2)借鉴Java语言的数据类型和内存管理;
(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
(4)借鉴Self语言,使用基于原型(prototype)的继承机制。
所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。
二、JavaScript用途
一般用来编写客户端脚本,来为html页面添加交互行为,是前台语言,而不是后台语言(node.js除外)
三、JavaScript的特点
1、解释执行(浏览器就是解释器):事先不编译、逐行执行、无需进行严格的变量声明。
2、简单易用:可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序。
3、基于对象:内置大量现成对象,编写少量程序可以完成目标
四、JavaScript组成
1、ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。
2、文档对象模型(DOM) Document object model:操作网页上的元素的API。比如让盒子移动、变色、轮播图等。
3、浏览器对象模型(BOM) Broswer object model:操作浏览器部分功能的API。比如让浏览器自动滚动。
五、ECMAScript和JavaScript的关系
1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。
该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。而是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。
因此ECMAScript和JavaScript的关系是,前者是后者的标准,后者是前者的一种实现。
六、ECMAScript的历史
年份 | 名称 | 描述 |
1997 | ECMAScript 1 | 第一个版本 |
1998 | ECMAScript 2 | 版本变更 |
1999 | ECMAScript 3 |
添加正则表达式 添加try/catch |
ECMAScript 4 | 没有发布 | |
2009 | ECMAScript 5 |
添加"strict mode"严格模式 添加JSON支持 |
2011 | ECMAScript 5.1 | 版本变更 |
2015 | ECMAScript 6(ES6) | 添加类和模块 |
2016 | ECMAScript 7 |
增加指数运算符(**) 增加Array.prototype.includes |
七、js是弱类型、动态语言
#1、弱类型、强类型 按照计算机语言的类型系统的设计方式,可以分为强类型和弱类型两种。二者之间的区别,就在于计算时是否可以不同类型之间对使用者透明地隐式转换。从使用者的角度来看,如果一个语言可以隐式转换它的所有类型,那么它的变量、表达式等在参与运算时,即使类型不正确,也能通过隐式转换来得到正确地类型,这对使用者而言,就好像所有类型都能进行所有运算一样,这样的语言被称作弱类型 #2、动态语言,静态语言 动态语言:声明变量时无需指定类型 静态语言:声明变量时必先指定类型 #3、JavaScript是一种弱类型、动态语言,弱类型具体表现如下 #2.1、一般规律是,约束越强越不容易出错,但编写程序时也越麻烦。在JavaScript中,因为约束比较弱,所以容易出现这种错误:最简单的例子: var a =200; var b ="1"; var c= a + b; 你可能期望c是201,但实际上它是"2001",这个错误在强类型语言中决不会出现。然而正是因为JavaScript没有这些约束,所以可以很方便地拼接数字和字符串类型。 #2.2、再比如下面这个例子: var a = '11'; a = a - ''; alert(typeof a);// -->number “-”可以是一元运算符(取负),也可以是二元(减法运算) js是弱类型语言