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


目录
相关文章
|
23天前
|
JavaScript 前端开发 容器
盘点JavaScript中所有声明变量的方式及特性
本文详细介绍了JavaScript中变量定义的多种方式,包括传统的`var`、`let`和`const`,以及通过`this`、`window`、`top`等对象定义变量的方法。每种方式都有其独特的语法和特性,并附有代码示例说明。推荐使用`let`和`const`以避免作用域和提升问题,谨慎使用`window`和`top`定义全局变量,不建议使用隐式全局变量。掌握这些定义方式有助于编写更健壮的JS代码。
36 11
|
3月前
|
JavaScript 前端开发 安全
JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择
本文深入探讨了JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择。JavaScript以其灵活性和广泛的生态支持著称,而TypeScript通过引入静态类型系统,提高了代码的可靠性和可维护性,特别适合大型项目。文章还讨论了结合使用两种语言的优势,以及如何根据项目需求和技术背景做出最佳选择。
100 4
|
3月前
|
JavaScript 前端开发 安全
ECMAScript 6(以下简称 ES6)的出现为 JavaScript 带来了许多新的特性和改进,其中 let 和 const 是两个非常重要的关键字。
ES6 引入了 `let` 和 `const` 关键字,为 JavaScript 的变量管理带来了革新。`let` 提供了块级作用域和暂存死区特性,避免变量污染,增强代码可读性和安全性;`const` 用于声明不可重新赋值的常量,但允许对象和数组的内部修改。两者在循环、函数内部及复杂项目中广泛应用,有助于实现不可变数据结构,提升代码质量。
47 5
|
3月前
|
自然语言处理 JavaScript 前端开发
ECMAScript 6 的出现为 JavaScript 带来了许多新的特性和改进
这些只是ES6的一些主要特性,它们极大地增强了JavaScript的功能和表现力,使得JavaScript在大型应用开发、前端框架等领域能够更加高效地编写复杂的应用程序。
|
4月前
|
JavaScript 测试技术 API
跟随通义灵码一步步升级vue2(js)项目到vue3版本
Vue 3 相较于 Vue 2 在性能、特性和开发体验上都有显著提升。本文介绍了如何利用通义灵码逐步将 Vue 2 项目升级到 Vue 3,包括备份项目、了解新特性、选择升级方式、升级依赖、迁移组件和全局 API、调整测试代码等步骤,并提供了注意事项和常见问题的解决方案。
206 4
|
4月前
|
JavaScript 前端开发 索引
JavaScript ES6及后续版本:新增的常用特性与亮点解析
JavaScript ES6及后续版本:新增的常用特性与亮点解析
138 4
|
4月前
|
JavaScript 前端开发 编译器
掌握现代化JavaScript:ECMAScript提案与特性
【10月更文挑战第13天】本文介绍了ECMAScript(ES)的最新提案与特性,包括可选链、空值合并运算符、类字段和顶层Await等。通过跟踪TC39提案、使用Babel或TypeScript、测试兼容性以及逐步迁移,开发者可以高效地采用这些新特性,简化代码、提高开发效率并增强应用功能。文章还提供了实战技巧,帮助开发者在现代Web开发中充分利用这些现代化的特性。
|
3月前
|
JavaScript Linux iOS开发
详解如何实现自由切换Node.js版本
不同的项目中需要使用不同版本的 Node.js,有时旧项目需要旧版本,而新项目则可能依赖最新的 Node.js 版本
189 0
|
3月前
|
前端开发 JavaScript
JavaScript新纪元:ES6+特性深度解析与实战应用
【10月更文挑战第29天】本文深入解析ES6+的核心特性,包括箭头函数、模板字符串、解构赋值、Promise、模块化和类等,结合实战应用,展示如何利用这些新特性编写更加高效和优雅的代码。
83 0
|
4月前
|
JavaScript 算法 内存技术
如何降低node.js版本(nvm下载安装与使用)
如何降低node.js版本(nvm下载安装与使用)

热门文章

最新文章