ECMA 推出 JavaScript 5
作者: its
|
發布: 2009/12/11 (上午 11:28)
|
閱讀: 28495
|
評論: 0
|
靜態地址
|
內容源碼
ECMA 本周推出了 JavaScript 5(PDF),除了增強基礎函數庫之外,還引入了嚴格運行時模式(Strict Runtime Modes)以避免代碼中的常見錯誤。ECMA ECMAScript 4 的努力曾以失敗告終,ECMA 甚至沒有發布 ECMAScript 4 細則。
過去幾年,諸如 Nitro,TraceMonkey 一類的 JavaScript 引擎發展迅猛,JavaScript 成了 Google Wave 一類應用的新寵。鑒于此,ECMAScript 5 在兼容目前廣泛使用的 ECMAScript 3 的同時,提供了嚴格模式,以防止開發者犯錯。
嚴格模式
嚴格模式可用以下語句聲明:
"use strict;"
該語句對以往的代碼沒有影響,但 JavaScript 5 的新運行時會進入嚴格模式,嚴格模式主要包含以下改變:
- 變量必須聲明后才可以使用
- Eval 成為保留詞,同時,不可以再使用 Eval 聲明變量,如
eval("var i=3"); print(i); 之類的語句會報錯
- 8進制數字表示被禁止,
010 代表 10 而不是 8
參數中不再允許使用 delete
with 語句曾是萬錯之源,現被禁用。
- 函數中不可以再出現重名參數。
- 對象中不可以再出現重名屬性。
arguments 和 caller 變量現在是 immutable 變量
- 訪問全局對象會報錯。
函數擴展
在基本函數庫,也有一些變化:
- Date 現在支持 ISO8601 日期格式
- String 內置了 trim() 方法
- 引入備受歡迎的 JSON 對象
- 內置了 bind 操作
- Array 對象內置了一些標準函數,如 indexOf(), map(), filter(), reduce()
- Object 內置了
seal() 函數,防止被加入新屬性,同時內置 freeze() 函數使對象變成只讀狀態
Object.keys() 會列出對象中所有可以枚舉的屬性
Object.getOwnPropertyNames() 會列出對象中所有可枚舉以及不可枚舉的屬性
Object.getPrototypeof() 返回給定對象的原型
編譯
劉清濤(35公里),CSDN特約記者,Web開發與設計師,COMSHARP CMS 開發成員,熱衷 Web 技術,長期譯介海外最新 Web 相關的技術文章與資訊,在 CSDN 開有專家博客。
|