`
muyu
  • 浏览: 218560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ECMAScript 5正式发布

阅读更多

这周ECMAScript 5也即众所周知的JavaScript正式发布了(pdf ),在给基本库带来更新的同时,还引入了更加严格的运行时模型,来帮助定位并移除通常的代码错误。

而早期对于ECMAScript 4 的标准化工作基本就算是失败了;只有Adobe的ActionScript是基于建议的变化的。ECMA甚至都没有发布一个版本4的规范,因为不同的组织对于发展的进度并不满意;就这样,也没有浏览器来支持它了。

在过去的几年,随着JavaScript引擎的大力改善,比如NitroTraceMonkey ,JavaScript已经极具性能,以Google Wave 为代表的在线协作应用可以证明这一点。甚至还有伴随GWT 2.0 发布的Google Chrome 扩展Speed Tracer ,来帮助优化JavaScript应用的性能。

从这点上来讲,ECMAScript 5旨在和当前的ECMAScript 3版本保持向后兼容(以寻求在不同浏览器上更快速的采用),并对开发者提供了更加严格的限制来避免通常的编码陷阱。

严格模式

严格模式的引入,目的在于避免ECMAScript应用中通常的代码问题。这是通过在单元(脚本或函数)上指定一句话来达到的:

"use strict;"

这句话不会对已有的运行时产生什么影响,但版本是5的新运行时就会为整个脚本(如果这句话定义在脚本开头)或者单个函数(如果定义在函数的开头)打开严格模式。这样就允许计划中的既有代码对严格模式和非严格模式的混合使用。那么,严格模式意味着什么呢?

  • 变量在使用前必须声明。换句话说,i=3这下就是个运行时错误了;需要var i=3(如果i在做作用域里面没有定义过)
  • eval变成保留字,而从eval引入的新变量不再有效,因此eval("var i=3"); print(i);现在会抛出错误。
  • 不再使用八进制;所以010就是十,不再是八。
  • 如果configurable被设置成false,delete就不能使用在参数、函数、变量或者其他属性上。
  • 一般会带来错误的with语句,将不再使用,会被认为是语法错误。
  • 函数不再能使用具有相同名称的重复参数。
  • 对象不再能使用具有相同名称的重复属性。
  • arguments和caller变量不再可变。
  • 对全局对象的访问将会是运行时错误。

库扩展

基本库中的其他扩展包括:

  • Date现在可以支持生成ISO8601格式的日期(比如20091209T12:34:56Z ),并可以解析。
  • String现在有内建的trim()方法
  • 新添JSON对象包括parse和stringify方法来支持JSON数据的高效生成;就像eval,但在减少代码时不会带来安全影响。另外,不仅仅可以使用RFC 4627 中的JSONObject和JSONArray,还可以使用JSONValue。(RFC 4627把JSON-Text限制成一个对象或者数组)
  • 新添bind内建方法,就跟Prototype的bind方法 的语义一样。
  • 数组现在可以支持indexOf(),map(),filter()和reduce()。
  • 对象现在有seal()方法(防止添加新的属性和删除既有属性)和freeze()方法(使得所有属性变成只读,同时防止新添属性或删除属性)
  • Object.keys()可以列出所有能列举的对象属性。
  • Object.getOwnPropertyNames()可以列出所有能列举和不能列举的属性。
  • Object.getPrototypeof()可以得到指定对象的prototype属性。

总结

新增的标准JSON对象解析机制和严格模式将会让开发者受益良多,使得转化成Prototype和其他扩展库需要的更小型库成为可能。从JSON流解析出ISO日期现在要变得比以前方便很多,而且看起来会成为将来日期表示事实上的标准。最后,因为这次是向后兼容的,并从Prototype这样既有库获得灵感,开发者和web浏览器很有可能在不久将来会为JavaScript带来新的特性。

 

原文:http://www.infoq.com/cn/news/2009/12/ecmascript5

分享到:
评论

相关推荐

    5分钟快速掌握JS中var、let和const的异同

    2011 年,ECMAScript 5.1 版发布。之前我们大部分人用的也就是ES5 2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。 好了,回归我们的正题。 本文说的这个话题对于一些老鸟来说可能根本算不上疑问,但对于新手...

    es6新特性 学习word版2018最新

    ECMAScript 6 简称 ES6,是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ECMAScript 和 JavaScript 的关系...

    babel_tutorial:babel 教程

    ECMAScript 2015(以下简称 ES2015)将于今年 6 月作为下一个 ECMAScript 正式发布。符合这个 ECMAScript 规范的语言实现是 JavaScript,简而言之,未来的浏览器将能够使用符合这个 ES2015 规范的新 JavaScript。 ...

    JavaScript模式中文[pdf] 百度云

     在正式发布时精简代码  运行JSLint  小结  第3章 字面量和构造函数  对象字面量  自定义构造函数  强制使用new的模式  数组字面量  JSON  正则表达式字面量  基本值类型包装器  错误对象  小结  第4...

    工作中常用到的ES6语法

     ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。Mozilla公司将在这个标准的基础上,推出JavaScript 2.0。  ECMAScript和JavaScript到底是什么关系?很多初学者会感到困惑...

    详解webpack+es6+angular1.x项目构建

    大名ES2015,顾名思义是 ECMAScript 在2015年6月正式发布的一套标准。小名ES6,意为ECMAScript第六次变更。(JavaScript 是 ECMAScript 规范的一种实现)。如今已慢慢替代ES5,成为JS主流的开发规范,新增很多语法糖...

    JavaScript模式 斯托扬·斯特凡洛夫 著

    在正式发布时精简代码 运行JSLint 小结 第3章 字面量和构造函数 对象字面量 自定义构造函数 强制使用new的模式 数组字面量 JSON 正则表达式字面量 基本值类型包装器 错误对象 小结 第4章 函数 背景 回调模式 返回...

    Project-1-LotrOPotterQuiz

    2015 年 6 月 17 日,ECMA International 发布了 ECMAScript 的第六个主要版本,正式名称为 ECMAScript 2015,最初简称为 ECMAScript 6 或 ES6。 CSS CSS 处理网页的外观和感觉部分。 使用 CSS,您可以控制

    ES6标准入门(第二版)完整版

    ES6(又名 ES2105)是 JavaScript 语言的新标准,2015 年 6 月正式发布后,得到了迅速推广,是目前业界超级活跃的计算机语言。《ES6标准入门(第2版)》是国内仅有的一本 ES6 教程,在前版基础上增补了大量内容——...

    手把手教你搭建ES6的开发运行环境

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 其实当ES5还没有完全普及时...

    ES6学习之变量的两种命名方法示例

    众所周知es6是ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 它完善了ES5...

    30分钟快速入门掌握ES6/ES2015的核心内容(上)

    因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。 也就是说,ES6就是ES2015。 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了。所以就算你现在不...

    leetcode重复绑定-javascript-things:javascript的东西

    的ECMAScript 标准, 可以在以下位置找到JSON 标准 intro: history JavaScript首先被称为Mocha ,然后是LiveScript 1995 年 12 月首次公布 1996 年 3 月首次在 Netscape Navigator 2.0 中发布 1996 年 11 月交付给...

    ES6的新特性概览

    早在ES6语言标准发布之前,他就借助像Babel这样的转译器以及最新版本的浏览器在自己的项目中使用ES6特性。他认为,ES6的新特性将极大地改变JavaScript的编写方式。 ES6(ECMAScript 6)是即将到来的新版本JavaScript...

Global site tag (gtag.js) - Google Analytics