JavaScript 各版本介绍和特性

简介: JavaScript 1.1Netscape Navigator 3.0在1996年8月19发布,是支持JavaScript的浏览器的第二个主要的版本。

JavaScript 1.1



Netscape Navigator 3.0在1996年8月19发布,是支持JavaScript的浏览器的第二个主要的版本。


1.1 新特性



新增的对象






新增的属性







新增的方法





  • Array.prototype.split()


新增的操作符




其他新特性




1.1修改的功能


  • “对象删除”:你可通过以设置对象的引用为null来删除一个对象。


  • 增加了对象的构造函数和原型属性


  • eval() 现在是每一个对象的方法(之前是一个内置函数),它能够在指定对象的上下文执行一个JavaScript代码的字符串。



  • toString():新增了基数作为参数,用于指定表示数值时的进制。


  • isNaN() 现在能在所有平台上工作。 (不再是只能在Unix下工作)


  • parseFloat()parseint()指定的字符串(参数)的第一个字符无法转换为数字时,在所有平台都会返回NaN。(在这之前发布的版本里,在Solaris和Irix下它们会返回NaN,而在其他平台会返回0)


JavaScript 1.2


Netscape Navigator 4.0在1997年6月11日发布,它是是支持JavaScript的浏览器的第三个主要的版本。


1.2 新特性



新增的对象


  • 可以使用简明的字面记号来创建对象。(灵感来自Python 1.x的dictionary的简明语法)


  • 数字也可以使用简明的字面记号来创建。(灵感来自Python 1.x的字list的简明语法)



新增的属性



新增的方法












新增的操作符




新增的语句







其他新特性




1.2 修改的功能


  • 现在你可以在函数内部嵌套函数。


  • Number现在可以将指定的对象转换为数字。


  • 如果x是一个不包含格式良好的数字字面的字符串,Number将会生成一个NaN而不是一个错误。


  • Stirng现在可以将指定的对象转换为字符串。


  • Array.prototype.sort() 现在能在所有平台上工作。它不会再将未定义的元素转换为null并且排序到数组最大的位置。



  • 它即可以带一个确定的字符串参数去分割目标字符串,也可以带一个正则表达式参数。


  • 它可以带一个限制的数量,这样可以让最终的结果数组不再包含在这之后的空元素。



  • toString(): 现在可以把对象或者数组转换为文字。


  • breakcontinue 语句现在可以在带标签的语句中使用。


JavaScript 1.3



Netscape Navigator 4.5是在1998年10月19日发布的。


1.3 新特性



新增的全局变量





新增的方法

























其他新特性



  • 支持Unicode


  • 介绍了一种JavaScript的控制台


JavaScript 1.3 修改的功能


  • 修改 Date 使之符合 ECMA-262


  • 新的构造函数: Date(year, month, day, [,hours [, minutes [, seconds [, milliseconds ]]]])


  • 附加的方法参数


  • setMonth(month[, date])


  • setHours(hours[, min[, sec[, ms]]])


  • setMinutes(min[, sec[, ms]])


  • setSeconds(sec[, ms])


  • 数组的长度(属性的长度)现在类型为32位 unsigned 整型。


  • Array.prototype.push(): 在JavaScript 1.2中, push 方法返回最后一个被添加到数组的元素。在JavaScript 1.3下, push 返回数组新的长度。


  • Array.prototype.slice(): 在JavaScript 1.2中, 如果只有一个元素被移除(howMany 参数为1,splice方法返回被移除的元素。而在JavaScript 1.3,splice方法通常返回一个包含被删除的元素的数组。如果只有一个元素被移除,则返回一个只包含一个元素的数组。





JavaScript 1.4的新特性



下面是 JavaScript 1.4 的更新记录,它只可用于 1999 年发布的 Netscape 服务端 JavaScript。 旧的 Netscape 文档可在 archive.org 找到。



  • in 运算符



JavaScript 1.4的功能改动



  • eval() 的改动 (不能被间接唤起,也不再是Object的一个方法)





JavaScript 1.5 新特性



以下为JavaScript 1.5 的更新日志。该版本包含在发行于2000年11月14日的Netscape Navigator 6.0中,也在后续的的Netscape Navigator版本和Firefox 1.0中使用。你可以拿JavaScript 1.5 和JScript version 5.5,Internet Explorer 5.5进行比较,后者发行于2000年7月。相应的ECMA 标准是 ECMA-262 Edition 3版 (自1999年12月)。







  • JavaScript 开发者可以为对象添加getter和setter


JavaScript 1.5 功能变化


  • 运行时错误现在作为异常报告。


  • 正则表达式变化:


  • 数量修饰符 — +, *, ? 和 {} — 现在可以跟在 ? 后强行使其变为非贪婪模式。


  • "非捕获括号 "(?:x) 可以用来代替“捕获括号” (x)。当使用非捕获括号的时候反向引用不可用。


  • 支持正负向零宽断言。它们都会根据紧跟着字符串的内容进行断言。


  • 添加m标记说明正则表达式可以匹配多行。


  • 函数可以在if语句中声明。


  • 函数可以在表达式中声明。


JavaScript 1.6新特性



以下是JavaScript 1.6的更新日志。JavaScript 1.6已经被包含在2005年11月发布的Firefox 1.5 (Gecko 1.8)中。JavaScript 1.6相对应的ECMA标准是ECMA-262第3版和ECMAScript for XML (E4X),这让它拥有了一些额外的特性 。引入了一些新特性:E4X,几个新的数组方法,还有数组和字符串的通用接口(generics)。


JavaScript 1.6新特性


  • 使用JavaScript创建和处理XML内容的ECMAScript for XML (E4X) 的支持文档已经添加。 更多详情:使用E4X处理XML。












JavaScript 1.6功能变化



  • 产生了一个bug,当形参或实参的数量已经固定了,若 arguments[n] 中的n大于这个数量,就不能被设置。


JavaScript 1.7是一个引出了一些新特性的语言更新,尤其是generator,iterator,数组推导式, let 表达式和解构赋值。


为了使用 JavaScript 1.7的一些新特性,你需要明确指出你希望使用 JavaScript 1.7。在HTML 或XUL code中,使用:



JavaScript 1.7的新特性



以下是javaScript 1.7版本的更新日志,这个版本被包括在 Firefox 2 (2006年10月)。


JavaScript 1.7是一个引出了一些新特性的语言更新,尤其是generator,iterator,数组推导式, let 表达式和解构赋值。


以下JavaScript 1.7的新特性目前还不是ECMA-262标准的一部分。在最近的Firefox版本中会根据ECMAScipt6中的描述来实现这些功能。具体内容见这些参考页面。







JavaScript 1.8新特性



  • 生成器表达式。生成器表达式可以让你方便地创建生成器(在JavaScript1.7中引入)。通常你需要创建一个内含yield的自定义函数来得到一个生成器,而生成器表达式可以让你使用类似数组的语法来达到同样的目的。




JavaScript 1.8功能更新


对for..in解构的修改


JavaScript1.8中的一个修改是对JavaScript1.7中引入的数组键值结构相关的bug修复。之前可以用for ( var [key, value] in array )的方式来解构一个数组的键值。但是,这也让对数组的数组的键值解构变得不可能(比如一个迭代器返回一个当前键值对的数组)。现在这个问题可以用for ( var [key, value] in Iterator(array))来解决([bug 366941](https://bugzilla.mozilla.org/show_bug.cgi?id=366941 "FIXED: Get rid of the "for([key, value] in obj)" form so that normal array destructuring works in for..in"))。

JavaScript 1.8.1 新特性








JavaScript 1.8.1 功能更新



对象和数组初始化器中的属性隐式设置不再在 JavaScript 中执行 setter。 这使得设置属性值的行为更具可预测性。


JavaScript 1.8.5的新特性


新函数


Function    Description


Object.create() 使用指定的原型对象和属性. bug 492840


Object.defineProperty() 为对象添加给定的描述信息的属性名.


Object.defineProperties()   为对象添加多个给定的描述信息的属性名.


Object.getOwnPropertyDescriptor()   返回对象的指定属性名的描述信息. bug 505587


Object.keys()   返回由对象的所有可枚举属性组成的数组. bug 307791


Object.getOwnPropertyNames()    返回由对象的所有可枚举和不可枚举属性组成的数

组. bug 518663


Object.preventExtensions()  防止对象进行


任意的扩展. bug 492849


Object.isExtensible()   判断对象是否可以扩展. bug 492849


Object.seal()   防止其他代码删除对象的属性. bug 492845


Object.isSealed()   判断对象是否是密封(即禁止删除属性)的. bug 492845


Object.freeze() 冻结一个对象: 其他代码不能删除或修改任何属性. bug 492844


Object.isFrozen()   判断对象是否是冻结的. bug 492844


Array.isArray() 判断变量是否是数组. bug 510537


Date.prototype.toJSON() 返回一个Date对象用JSON格式化的字符串.


Function.prototype.bind()   创建一个新函数,当这个函数被调用时,函数会使用提供的上下文环境(给定的字符序列) bug 429507


ECMAScript5新特性



  • Function.apply() 能接受任意的类数组的对象作为参数列表,而不是只支持真正数组.




JavaScript 1.8.5中功能变化


  • ISO 8601 在Date中支持: Date 对象的 parse() 方法现在支持简单的ISO 8601 格式化时间字符串.


  • 全局对象变为只读: 按照ECMAScript 5 标准,NaN, Infinity, 和 undefined 全局对象变为只读.




其他


ECMAScript 5的支持情况


5.1,JavaScript 基于的标准的一个旧版本,在2011年6月被批准。


http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf


ES2015


6 th Edition /  June 2015


https://www.ecma-international.org/publications/standards/Ecma-262.htm


https://www.ecma-international.org/ecma-262/6.0/index.html


ES2016


7 th Edition / June 2016


https://www.ecma-international.org/publications/standards/Ecma-262.htm


https://www.ecma-international.org/ecma-262/7.0/index.html


参考



JavaScript更新


https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/New_in_JavaScript


目录
相关文章
|
4月前
|
XML 存储 JSON
CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?
CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?
|
4月前
Auto.js 各版本之间的区别
Auto.js 各版本之间的区别
135 0
|
4月前
|
敏捷开发 JavaScript 前端开发
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
|
4天前
|
JavaScript 前端开发 Linux
JavaScript 的跨平台特性
【4月更文挑战第22天】JavaScript 的跨平台特性
19 8
|
23天前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性
|
29天前
|
JavaScript 前端开发 Web App开发
JavaScript基础语法(codewhy版本)(一)
JavaScript基础语法(codewhy版本)
88 1
JavaScript基础语法(codewhy版本)(一)
|
29天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(六)
JavaScript高级笔记-coderwhy版本
74 0
|
29天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(一)
JavaScript高级笔记-coderwhy版本
34 0
JavaScript高级笔记-coderwhy版本(一)
|
1月前
|
前端开发 JavaScript Java
除了变量提升,JavaScript还有哪些特性?
【2月更文挑战第20天】【2月更文挑战第61篇】除了变量提升,JavaScript还有哪些特性?
|
1月前
|
JSON JavaScript 前端开发
javascript语言ES5版本详解(一)
javascript语言ES5版本详解(一)