1. 程式人生 > >ECMAScript 2015官方文件翻譯(二)

ECMAScript 2015官方文件翻譯(二)

宣告:
  1.翻譯文章旨在輔助理解,沒有講究語言方面的信達雅,英文原版傳送門:http://www.ecma-international.org/ecma-262/6.0/
  2.有的地方翻譯的很拗口,因為官方文件用詞句法都很嚴謹,本人也是菜鳥一個不敢隨意新增拙見,如果覺得讀不通可以移步英文原版,自己讀應該會有不一樣的感受。

ECMAScript 2015 語言規範

正文:
     

1 Scope(範圍)

  
  本標準定義了ECMAScript 2015通用程式語言。
  

2 Conformance(一致性)

  
  一個符合ECMAScript標準的實現必須提供和支援所有該規範中描述的型別、值,物件,性質,功能,程式語法和語義。
  符合標準的ECMAScript實現必須解釋符合Unicode標準,5.1.0或更高版本和ISO/IEC 10646的源文字輸入。如果採用ISO/IEC 10646 - 1子集沒有特別規定,則預設是Unicode集,10646集。
  符合標準的ECMAScript的實現提供了一個應用程式程式設計介面,這個介面支援需要適應不同人類語言使用的語言和文化習俗的程式,各國必須實現與該規範相容的最新版本的ecma - 402版本定義的介面。
  符合標準的ECMAScript的實現可以提供除本規範描述以外的附加型別,值,物件,屬性和功能。特別地,符合ECMAScript的實現可以提供本規範中未描述的屬性以及用於這些屬性和本規範中描述的物件的值。
  符合標準的ECMAScript的實現可能支援本規範中未描述的程式和正則表示式語法。特別地,符合ECMAScript的實現可能支援使用本規範第11.6.2.2條列出的“未來保留字”的程式語法。
  符合標準的ECMAScript的實現不得實施第16.1節中被列為禁止擴充套件的任何擴充套件。
  

3 Normative references(規範性引用)

  
  以下引用的文件對於本文件的應用是必不可少的。對於注日期的引用檔案,只有引用的版本適用。對於未註明日期的引用檔案,引用檔案的最新版本(包括任何修訂)適用。
  ISO / IEC 10646:2003:資訊科技 - 通用多位元組編碼字符集(UCS)加修正案1:2005,修正2:2006,修訂3:2008和修訂4:2008,以及附加的修訂和更正或後繼
  ECMA-402,ECMAScript 2015國際化API規範。
http://www.ecma-international.org/publications/standards/Ecma-402.htm


  ECMA-404,JSON資料交換格式。
http://www.ecma-international.org/publications/standards/Ecma-404.htm
  

4 Overview(概述)

  
  本節包含ECMAScript語言的非規範概述。
  ECMAScript是一種面向物件的程式語言,用於在主機環境中執行計算和操縱計算物件。這裡定義的ECMAScript不是計算自給自足的; 實際上,在本規範中沒有規定外部資料的輸入或計算結果的輸出。相反,預期ECMAScript程式的計算環境不僅將提供本規範中描述的物件和其他設施,還將提供特定的環境特定物件,其描述和行為超出了本規範的範圍,除了指出它們可以提供可以訪問的某些屬性和可以從ECMAScript程式呼叫的某些功能。
  ECMAScript最初被設計為用作指令碼語言,但已被廣泛用作通用程式語言。一個指令碼語言是用來操作,自定義和自動化現有系統設施的程式語言。在這樣的系統中,通過使用者介面已經可以使用有用的功能,並且指令碼語言是將該功能暴露給程式控制的機制。以這種方式,現有系統被稱為提供物件和設施的主機環境,從而完成了指令碼語言的功能。指令碼語言專門用於專業程式設計師和非專業程式設計師。
  ECMAScript最初設計為Web指令碼語言,提供了一種在瀏覽器中啟用Web頁面的機制,並將其作為基於Web的客戶端 - 伺服器架構的一部分執行伺服器計算。ECMAScript現在用於為各種主機環境提供核心指令碼功能。因此,除了任何特定的主機環境之外,本文件還規定了核心語言。
  ECMAScript使用已經超出了簡單的指令碼,現在它已經用於許多不同環境和規模的全方位的程式設計任務。隨著ECMAScript的使用不斷擴大,其功能和設施也得到了擴充套件。ECMAScript現在是一個功能齊全的通用建議程式語言。
  ECMAScript的一些設施類似於其他程式語言中使用的工具; 特別是C,Java™,Self和Scheme,如下所述:
  ISO/IEC 9899:1996,程式語言- C。
  Gosling, James, Bill Joy and Guy Steele。Java ™語言規範。Addison Wesley 出版社,1996年。
  Ungar,David和Smith,Randall B. Self:簡單的力量。《OOPSLA的87個會議程式》,第227 - 241頁,Orlando,FL,1987年10月。
  
  4.1Web指令碼


  Web瀏覽器為客戶端計算提供ECMAScript主機環境,包括例如表示視窗,選單,彈出視窗,對話方塊,文字區域,錨點,框架,歷史記錄,Cookies和輸入/輸出的物件。此外,主機環境提供了一種將指令碼程式碼附加到諸如焦點改變,頁面和影象載入,解除安裝,錯誤和中止,選擇,表單提交和滑鼠動作等事件的手段。指令碼程式碼出現在HTML中,顯示的頁面是使用者介面元素和固定和計算的文字和影象的組合。指令碼程式碼對使用者互動無反應,不需要主程式。
  Web伺服器為伺服器端計算提供了不同的主機環境,包括表示請求,客戶端和檔案的物件; 以及鎖和共享資料的機制。通過一起使用瀏覽器端和伺服器端指令碼,可以在客戶機和伺服器之間分配計算機,同時為基於Web的應用程式提供定製的使用者介面。
  
  4.2ECMAScript概述
  以下是ECMAScript的非正式概述 - 不是描述所有的語言部分。這個概述不是標準的一部分。
  ECMAScript是基於物件的:基本語言和主機設施由物件提供,ECMAScript程式是一組通訊物件。在ECMAScript中,物件是零個或多個 properties的集合,每個attributes確定每個property可以如何被使用– 例如,當property的Writable屬性設定為false時,任何執行ECMAScript程式碼來為property分配不同的值的嘗試都會失敗。Properties 是容納其他物件,原始值或 函式的容器。原始值是以下內建型別之一的成員:Undefined, Null, Boolean, Number, String,和 Symbol;一個object是內建型別Object的成員 ; 函式是一個可呼叫物件。通過property與物件關聯的函式稱為 方法。
  ECMAScript定義了一個內建物件的集合,其中包含ECMAScript實體的定義。這些內建物件包括全域性物件; 物件是語言執行時語義的基礎,包括Object, Function, Boolean, Symbol,和各種Error物件; 表示和運算元值的物件,包括Math, Number和Date ; 文字處理物件 String和RegExp; 表示索引值的集合的物件包括Array和九種不同型別的型別陣列,其元素都具有特定的數字資料表示; 鍵集合包括Map 和Set物件; 支援結構化資料的物件包括JSON物件,ArrayBuffer和DataView ; 支援控制抽象的物件,包括生成器(generator)函式和Promise物件; 以及反射物件,包括Proxy和Reflect。
  ECMAScript還定義了一組內建運算子。ECMAScript運算子包括各種一元運算,乘法運算子,加法運算子,按位移位運算子,關係運算符,等式運算子,二進位制運算子,二進位制邏輯運算子,賦值運算子和逗號運算子。
  modules支援大型ECMAScript程式,這些程式允許將程式分成多個語句和宣告序列。每個模組(module)明確地標識它所使用的宣告,這些宣告需要由其他模組提供,哪些宣告可供其他模組使用。
ECMAScript語法有意地類似於Java語法。ECMAScript語法鬆散,這使其成為易於使用的指令碼語言。例如,一個變數不需要宣告其型別,也不需要與屬性關聯的型別,並且定義的函式在呼叫之前不需要以文字方式顯示它們的宣告。
  
  4.2.1物件
  即使ECMAScript包含類定義的語法,ECMAScript物件也不是基於類的,例如C ++,Smalltalk或Java。相反,物件可以以各種方式建立,包括通過文字元號或通過 構造器(constructors)構造器建立物件,然後執行通過將初始值分配給其屬性來初始化其全部或部分的程式碼。每個建構函式都是一個具有“prototype”屬性的函式,”prototype”用於實現基於原型的繼承和共享屬性。通過使用new表示式中的建構函式建立物件; 例如,new Date(2009,11)建立一個新的Date物件。呼叫建構函式而不使用new會導致依賴於建構函式的後果。例如, Date()生成當前日期和時間的字串表示,而不是一個物件。
  由建構函式建立的每個物件都有一個隱式引用(稱為物件的原型)到其建構函式的”prototype”屬性值。此外,原型可能有一個非空隱含引用到它的原型,等等; 這被稱為原型鏈。當引用物件中的屬性時,該引用是指原型鏈中包含該名稱的屬性的第一個物件中該名稱的屬性。換句話說,首先對直接提到的物件進行檢查,如果該物件包含命名的屬性,那就是引用引用的屬性; (這段翻譯的有點懵,附上原文:if that object contains the named property, that is the property to which the reference refers;)如果該物件不包含named屬性,那麼將檢查該物件的原型; 等等。
圖1 - 物件/原型關係
  在基於類的面嚮物件語言中,一般來說,狀態由例項承載,方法由類承載,繼承的只是結構和行為。在ECMAScript中,狀態和方法由物件承載,而結構,行為和狀態都是繼承的。
  所有的物件不直接包含一個的特定屬性,該屬性的原型包含共享該屬性和值。圖1說明了這一點:
  CF是一個建構函式(也是一個物件)。通過使用new表示式建立了五個物件: cf1,cf2,cf3,cf4和cf5。每個物件包含名為q1和q2的屬性。虛線代表隱含的原型關係; 所以,例如,cf3的原型是CFp。建構函式 CF本身有兩個屬性,叫做P1和P2,這對CFp,cf1,cf2,cf3,cf4或cf5是不可見的。CFp中名為CFP1的屬性是由cf1,cf2,cf3,cf4,和cf5(而不是CF)所共享的,因為在CF p的隱式原型鏈發現的任何屬性沒有名為q1,q2,或CFP1。請注意, CF和CFp之間不存在隱式原型連結。
  與大多數基於類的物件語言不同,屬性可以通過為物件動態分配值來新增到物件中。也就是說,建構函式不需要為所有或任何構造的物件的屬性命名或賦值。在上圖中,可以通過為CFp中的屬性分配一個新值, 為cf1,cf2, cf3,cf4和cf5新增一個新的共享屬性。
  
  4.2.2ECMAScript的嚴格變體
  ECMAScript語言認識到一種可能性,就是該語言的某些使用者可能希望限制他們使用該語言中某些可用的特性(features)。為了安全起見,他們這樣做的原因是:避免他們認為容易出錯的特性,加強錯誤檢查,他們也可能有其他原因選擇這樣做。為了支援這種可能性,ECMAScript定義了語言的嚴格變體。該語言的嚴格變體排除了常規ECMAScript語言的一些特定句法和語義特徵,並修改了某些特性的詳細語義。嚴格變體還指定了額外的錯誤條件,必須通過丟擲錯誤異常的情況來報告,而不是以非嚴格的語言形式指定為錯誤。
  ECMAScript的嚴格變體通常被稱為語言的嚴格模式。ECMAScript的嚴格模式選擇和使用嚴格模式語法和語義明確地在單個ECMAScript源文字單元的級別。因為在一個語法源文字單元的級別選擇了嚴格模式,嚴格模式只會在這樣的源文字單元中施加具有區域性效果的限制。嚴格模式不會限制或修改必須在多個源文字單元上一致操作的ECMAScript語義的任何方面。完整的ECMAScript程式可能由嚴格模式和非嚴格模式的ECMAScript源文字單元組成。在這種情況下,嚴格模式只適用於在嚴格的模式源文字單元中實際執行的程式碼。
  為了符合本規範,ECMAScript實現必須實現完全無約束的ECMAScript語言和本規範定義的ECMAScript語言的嚴格變體。此外,一個實現必須支援將無限制和嚴格模式源文字單元組合到單個複合程式中。
    
  4.3術語和定義
  為了本文件的目的,以下術語和定義適用。
  
  4.3.1 型別
  本規範第6條定義的一組資料值的集
  4.3.2 原始值
  Undefined,Null,Boolean,Number,Symbol或String型別之一的成員,如第6節所定義
  注意:原始值是直接在語言實現的最低級別表示的基準。
  4.3.3 物件
  Object型別的成員
  注意:物件是屬性的集合,並且具有單個原型物件。原型可能是空值。
  4.3.4 建構函式
  建立和初始化物件的函式物件
  注意:建構函式的prototype屬性的值是用於實現繼承和共享屬性的原型物件。
  4.3.5 原型
  為其他物件提供共享屬性的物件
  注意:當建構函式建立一個物件時,該物件隱式引用建構函式的prototype屬性以便解析屬性引用。建構函式的prototype屬性可以由程式表示式constructor.prototype引用 ,新增到物件的原型中的屬性通過繼承被所有共享原型的物件共享。或者,可以通過使用內建函式Object.create顯式指定的原型建立一個新物件。
  4.3.6 普通物件
  具有所有物件必須支援的基本內部方法的預設行為的物件。
  4.3.7 獨特物件
  獨特物件不具有所有物件必須支援的一個或多個必需內部方法的預設行為
  注意:任何不是普通物件的物件都是獨特的物件。
  4.3.8 標準物件
  其語義由本規範定義的物件
  4.3.9 內建物件
  由ECMAScript實現指定和提供的物件
  注意:本標準內建物件在本規範中定義。ECMAScript實現可以指定和提供其他種類的內建物件。一個內建的建構函式是一個內建物件,也是一個建構函式。
  4.3.10 undefined值
  當變數未被賦值時使用的原始值。
  4.3.11 Undefined型別
  其唯一值是undefined的型別。
  4.3.12 空值
  表示有意不存在任何物件值的原始值
  4.3.13 Null型別
  其唯一值為null值的型別
  4.3.14 布林值
  布林型別的成員
  注意:只有兩個布林值:true和false
  4.3.15 Boolean型別
  由原始值true和false組成的型別
  4.3.16 Boolean物件
  Object型別的成員,它是標準內建Boolean建構函式的例項
  注意:通過在new表示式中使用Boolean 建構函式建立布林物件,提供一個布林值作為一個引數。生成的物件具有一個內部插槽,其值為布林值。一個布林物件可以被強制為布林值。
  4.3.17字串值
  原始值是零個或多個16位無符號整數的有限序列
  注意:字串值是String型別的成員。序列中的每個整數值通常表示UTF-16文字的單個16位單元。但是,ECMAScript對值不作任何限制或要求,除了它們必須是16位無符號整數。
  4.3.18 String型別
  所有可能的字串值的集合
  4.3.19 String物件
  Object型別的成員,它是標準內建String建構函式的例項
  注意:通過在new表示式中使用String建構函式建立字串物件,並將字串值作為引數。生成的物件具有一個內部插槽,其值為字串值。通過呼叫String建構函式作為函式,可以將String物件強制轉換為String值(21.1.1.1)。
  4.3.20 數值
  原始值對應於雙精度64位二進位制格式IEEE 754-2008值
  注意:數字值是Number型別的成員,是數字的直接表示形式。
  4.3.21 Number型別
  所有可能的數字值的集合,包括特殊的“非數字”(NaN)值,正無窮大和負無窮大
  4.3.22 Number物件
  Object型別的成員,它是標準內建Number建構函式的例項
  注意:通過在new表示式中使用Number建構函式建立Number物件,並將數值作為引數提供。生成的物件具有一個內部插槽,其值是數字值。通過呼叫Number建構函式作為函式,可以將Number物件強制轉換為數值(20.1.1.1)。
  4.3.23 Infinity
  數值是正無窮值
  4.3.24 NaN
  數字值是IEEE 754-2008“Not-a-Number”值
  4.3.25 符號值
  表示一個獨特的、非字串物件屬性鍵的原始值
  4.3.26 Symbol型別
  所有可能的符號值的集合
  4.3.27 Symbol物件
  Object型別的成員,它是標準內建Symbol建構函式的例項
  4.3.28 函式
  Object型別的成員,可以作為子例程呼叫
  注意:除了其properties之外,函式還包含可執行程式碼和狀態,以確定在呼叫時的行為。函式的程式碼可能在ECMAScript中編寫,也可能不是。
  4.3.29 內建函式
  內建的物件是一個函式
  注意:內建函式的示例包括parseInt和Math.exp。一個ECMAScript實現可以提供在本規範中未描述的內建函式以實現相關功能。
  4.3.30 property
  一個物件的一部分,它將一個鍵(一個字串值或符號值)和一個值關聯起來
  注意:根據property的形式,該值可以直接表示為資料值(原始值,物件或函式物件),也可以由一對訪問函式間接表示。
  4.3.31 方法
  property的值是函式
  注意:當一個函式被呼叫作為物件的方法,所述物件被傳遞給函式作為其該值。
  4.3.32 內建方法
  方法是內建函式
  注意:本規範中定義了標準的內建方法,ECMAScript實現可以指定並提供其他額外的內建方法。
  4.3.33 屬性(attribute)
  定義特性(property)的某些特徵的內部值
  4.3.34 自有特性(own property)
  由其物件直接包含的特性
  4.3.35 繼承特性(inherited property)
  物件的特性不是自己的特性,而是物件的原型的特性(自己的或繼承的)
  
  4.4本規範的結構
  本規範的其餘部分結構如下:
  第5條定義了整個規範中使用的符號約定。
  第6-9條定義ECMAScript程式執行的執行環境。
  第10-16條定義了實際的ECMAScript程式語言,包括其語法編碼和所有語言特徵的執行語義。
  第17-26條定義了ECMAScript標準庫。它包括ECMAScript程式執行時可以使用的所有標準物件的定義。

相關推薦

ECMAScript 2015官方翻譯

宣告:   1.翻譯文章旨在輔助理解,沒有講究語言方面的信達雅,英文原版傳送門:http://www.ecma-international.org/ecma-262/6.0/   2.有的地方翻譯的很拗口,因為官方文件用詞句法都很嚴謹,本人也是

Pilosa翻譯入門指南

目錄 開始 Pilosa 簡單專案 建立架構(Create the Schema) 從CVS檔案匯入資料 做一些查詢(Queries) 接下來做什麼? Pilosa支援預設使用JSON的HTTP介面。 任何HTTP工具都可用於與Pilosa伺服器進行互動。 本文件中的示例將使

Hyperledger Fabric 1.3 官方翻譯關鍵概念 (Key Concepts)

身份(Identity) 什麼是身份(What is an Identity)? The different actors in a blockchain network include peers, orderers, client applications,

Hyperledger Fabric 1.3 官方翻譯教程 (Tutorials)

構建你的第一個網路(Building Your First Network) These instructions have been verified to work against the latest stable Docker images and t

演算法工程師修仙之路:python3官方筆記

本筆記來自於python手冊的中文版 使用 Python 直譯器 呼叫 Python 直譯器 通常你可以在主視窗輸入一個檔案結束符(Unix系統是Control-D,Windows系統是Control-Z)讓直譯器以 0 狀態碼退出。如果那沒有作用,你可以通過輸入

PureMVC 官方翻譯

    最近在學習PureMVC框架,感覺最權威的還是閱讀官方文件,順便翻譯了下全當記筆記了。 PureMVC概覽     這篇文件他討論PureMVC框架的類和介面,使用UML來闡述它們的角色、職責和協作。     PureMVC框架有一個非常細小的目標一一就是幫助你把應用程式編碼之間的關聯分離成明確

Autofac官方翻譯——Getting Started

立即開始 將Autofac整合到你的應用的基本模式如下: 按照控制反轉(IoC)的思想構建你的應用程式 新增Autofac引用 在application啟動程式碼裡… 建立ContainerBuilder物件 註冊元件 Build容器並且儲存以備用 在程式

Kafka官方翻譯產品概述

流平臺的三要素: 1、提供釋出/訂閱記錄流的能力,類似於訊息佇列; 2、對記錄流的儲存有容錯能力; 3、可以即時處理記錄流。kafka可用於兩大類應用: 1、建立實時流資料管道,在系統或應用之間進行可靠傳輸; 2、建立基於實時流的應用,可以傳輸或處理資料流。先知概念: *k

V4L2翻譯

視訊標準 視訊裝置通常支援一種或多種不同的視訊標準或更多的標準衍生體。每一個視訊輸入和輸出支援一組標準。這項設定由VIDIOC_ENUMINPUT和VIDIOC_ENUMOUTPUT ioctl返回的v4l2_input和v4l2_output結構體中的std成員體現。

Django 2.0 之Models(模型) 官方翻譯

以下翻譯是自己學習的時候順便記下的,如果有不對的地方還請指正。 模型是關於你的資料的唯一、確定的資料來源。它包含你所儲存的資料的基本欄位和行為。通常,每個模型對映到一個數據庫表。 基礎知識: 每一個模型都是一個Python類,它是 django.db.models.Mo

Spark官方調優翻譯轉載

Spark調優 由於大部分Spark計算都是在記憶體中完成的,所以Spark程式的瓶頸可能由叢集中任意一種資源導致,如:CPU、網路頻寬、或者記憶體等。最常見的情況是,資料能裝進記憶體,而瓶頸是網路頻寬;當然,有時候我們也需要做一些優化調整來減少記憶體佔用,例如將RDD以序列化格式儲存(storing RD

組複製官方翻譯組複製原理

Group Replication Background(組複製技術原理) 建立容錯系統的最常見方法是使元件冗餘,換句話說,部分元件可以刪除,系統應該繼續按預期執行。這產生了一系列挑戰,將這種系統的複雜性提高到一個完全不同的水平。具體來說,複製的資料庫必須處理這樣的情況,即

Spring官方翻譯1~6章

Spring框架是一個輕量級的解決方案,可以一站式地構建企業級應用。Spring是模組化的,所以可以只使用其中需要的部分。可以在任何web框架上使用控制反轉(IoC),也可以只使用Hibernate整合程式碼或JDBC抽象層。它支援宣告式事務管理、通

操作

創建 nbsp pan spa read pen 強制 列表 color 1、f.tell()和f.seek(0): 1 f=open(‘my_heart_will_go_on‘,‘r‘,encoding=‘utf-8‘)#f 是文件句柄,默認是只讀模式r,w是寫模式—

Apache Kafka官方翻譯原創

存儲 api 生產 instance rup 根據 distrib pos part Apache Kafka是一個分布式流平臺。準確的說是什麽意思呢?我們認為流平臺具有三種關鍵能力: 1、讓你對數據流進行發布訂閱。因此他很像一個消息隊列和企業級消息系統。 2、讓你以高容錯

Spark官方翻譯~Overview

安裝 pre mac os home 翻譯 size ber uri ems Spark官方文檔翻譯,有問題請及時指正,謝謝。 Overview頁 http://spark.apache.org/docs/latest/index.html Spark概述 Apac

linux管理

sbin txt ber vmw head nologin 刪除 創建目錄 per linux文件管理(二) 1.創建文件 :[root@dong ~]# touch /home/{file1,file2} 同時在home 下創建[root@dong ~]# ls /

/proc系統:/proc/<pid>/stat

cat 分享 shell read exec .html dst exit 2.6 0. 前言 /proc 文件系統是一個偽文件系統,它只存在內存當中,而不占用外存空間。 它以文件系統的方式為內核與進程提供通信的接口。用戶和應用程序可以通過/proc得到系統的信息,並可

Pilosa翻譯示例

目錄 傳輸Transportation 簡單說明 Introduction 資料模型 Data Model 對映Mapping 原文地址 傳輸Transportation 簡單說明 Introduction 紐約市釋出了一個非

Vue-Analgtics 使用者翻譯部分

本部落格旨在個人筆記記錄。 一.1.開始 安裝      npm install vue-analytics --save    2.開始使用你的Vue應用程式,在main.js中加入以下程式碼      import Vue from 'vue'      import