写点什么

ECMAScript 5 正式发布

  • 2009-12-12
  • 本文字数:1399 字

    阅读完需:约 5 分钟

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

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

在过去的几年,随着 JavaScript 引擎的大力改善,比如 Nitro TraceMonkey ,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 带来新的特性。

2009-12-12 23:1310289
用户头像

发布了 127 篇内容, 共 43.6 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

成本最高可降40%!揭秘DataWorks资源组的Serverless进化之路

阿里云大数据AI技术

云计算 大数据 Serverless Dataworks

一文把视频审核架构说得明明白白

京东零售技术

架构 视频审核

Mac风扇控制软件 Macs Fan Control Pro

理理

LED租赁屏常用于哪些场合?

Dylan

商业 活动 LED LED display LED显示屏

实践分享:借助Leangoo领歌免费敏捷工具精细化Sprint Backlog管理

顿顿顿

敏捷开发 敏捷项目管理 敏捷工具 scrum工具 敏捷迭代管理

VMware Workstation 17.6 Pro 发布下载,新增功能概览

sysin

vmware Workstation

电商数据驱动决策:京东商品详情API返回值的力量

技术冰糖葫芦

api 网关 API Explorer API 策略 pinduoduo API

GitHub Star 数量前 11 的开源内部工具

NocoBase

GitHub 开源 低代码 无代码 内部工具

京东广告稀疏大模型训练与推理 GPU 优化实践

京东零售技术

广告 GPU算力

YouTube客户端就选Clicker for YouTube Mac版

理理

GreatSQL执行Update失败案例分析

GreatSQL

从申请到调用:一步一步教你使用1688商品列表数据接口

tbapi

1688API 1688商品列表数据接口

VMware Fusion 13.6 发布下载,新增功能概览

sysin

vmware fusion

好玩的mac科幻探险游戏 :无人深空No Man‘s Sky中文版

理理

零基础能做Oracle数据库之间的迁移吗?

NineData

oracle 数据迁移 Oracle ACE NineData 增量迁移

2024年IDEA最新安装破解激活教程,亲测可用

理理

ShareMouse for mac鼠标键盘共享工具 附ShareMouse激活码

理理

2023年央企安全威胁盘点

芯盾时代

身份安全 央国企数字化转型 弱口令

Vision Pro开发实践

京东零售技术

Vision pro

应用开发“取经路”,华为应用市场送出全周期服务“助攻”

脑极体

AI

更懂消费者 火山引擎数据飞轮助力乳企做好雪糕生意

字节跳动数据平台

大数据 数据分析 数据平台 火山引擎 增长营销

Java开发分析JProfiler 14有哪些改进?

理理

好用的终端SSH仿真工具 SecureCRT

理理

【文件比较神器】Beyond Compare 5

理理

2024 年 Web3 融资情况解析:公售项目占比超八成,散户抱团取暖

TechubNews

多模态在京东内容算法上的应用

京东零售技术

算法

火山引擎携手南开大学、中国国航、协和医院,加速各行业AI能力落地

新消费日报

人工智能 | 大语言模型应用框架介绍

测试人

人工智能 软件测试

VMware Fusion Pro 13虚拟机详细功能介绍

理理

生产进度拖延、成本高企,你还愿意继续忍受吗?

天津汇柏科技有限公司

低代码开发平台 软件定制开发 AI人工智能 生产管理

ECMAScript 5正式发布_Java_Alex Blewitt_InfoQ精选文章