2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:1310706
用户头像

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

关注

评论

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

项目冷场?用禅道协作白板激活团队的创新思维!

禅道项目管理

如何利用出海舆情监测从用户差评中发现产品改进与增长机会?

沃观Wovision

舆情分析 出海 出海企业 舆情监测 出海舆情

新媒体时代的国外舆情:社交平台舆论特征与监测要点

沃观Wovision

舆情分析 舆情监测 海外舆情 海外舆情监测 国外舆情

盘点十个2026全球最佳舆情监测网站

沃观Wovision

舆情监测 海外舆情监测 舆情监测网站 舆情监控网站 全球舆情监测

剖析绿电直连模式在实际应用中的核心挑战

西格电力

绿色低碳 碳中和碳达峰 电力系统 绿电直连 绿色低碳发展

AI 教育未来发展的方向

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

杨凌美畅用 TDengine 时序数据库,支撑 500 条产线 2 年历史数据追溯

TDengine

tdengine 时序数据库

不仅仅是代码助手:用 Plugins 将 Claude Code 打造成你的专属工具链 - 实战篇(2/4)

Robin Min

plugins 开发实战 vibe coding Claude Code Agent Skills

区块链 NFT 系统的开发

北京木奇移动技术有限公司

NFT 数字藏品 软件外包公司

2026海外舆情风险全景图:关键区域与行业趋势洞察

沃观Wovision

舆情监测 海外舆情 沃观Wovision 海外舆情监测 全球舆情监测

智能微电网如何无缝集成分布式光伏 / 风电?

西格电力

管理系统 智能电网 微电网 电力系统

稀土漩涡

脑极体

AI

出海舆情监测,是成本还是投资?算算这笔品牌安全账

沃观Wovision

舆情分析 出海 出海企业 舆情监测 出海舆情

区块链 Web3 项目的开发

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

冰城码力全开,共赴AI Coding英雄之旅!CEDxCNCC百度文心快码Meetup圆满落幕!

Comate编码助手

1024程序员节 文心快码 AI编程助手

一文读懂可信数据空间,隐语社区的初步实践

隐语SecretFlow

可信数据空间

被动合规不如主动降碳:MyEMS 驱动企业实现 “政策达标” 与 “成本优化” 双赢

开源能源管理系统

开源 能源管理系统

AI 英语学习 App 的开发

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

智驾合规元年的蝴蝶风暴

脑洞汽车

AI

当人人都在谈模型时,拖垮 AI 项目的却是"数据

MatrixOrigin

数据智能 AI数据 企业AI落地

如何了解和分析国外舆情?五个维度与实战技巧

沃观Wovision

舆情分析 舆情监测 海外舆情 海外舆情监测 国外舆情

“能耗责任田” 划分术:MyEMS 帮企业实现 “部门担责、人人节电” 的管理闭环

开源能源管理系统

开源 能源管理系统

区块链 Web3 项目的开发规划

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

CAD测量不用愁!一键测量多边形面积!

在路上

cad cad看图 CAD看图王

百度智能云开源生产级 MTP 代码,实现DeepSeek-V3.2 推理服务吞吐提升超2倍

新消费日报

遨森电商通过 NineData 构建企业级数据管理平台,筑牢跨境电商数据安全底座

NineData

MySQL mongodb NineData 遨森电商 案例解读

GGscore:領先全球的體育數據平台

ggscoreLynne

第五届 HiPM 产品创新力峰会|矩阵起源带您深度解析企业级 Agent 实践

MatrixOrigin

数据治理 企业级应用 AI Agent HiPM峰会

京东商品评论API技术指南

Datafox(数据狐)

京东商品评论API 京东评论API 京东数据接口 京东评论数据采集

构建AI驱动的智能定价解决方案:新能源充电运营的数字化转型实践

亚马逊云科技 (Amazon Web Services)

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