W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
7.1:Unicode 格式控制字符在受到處理之前不再從 ECMAScript 源文本中剝離。在第五版中,如果這樣一個字符在字符串字面量或者正則表達式字面量中出現(xiàn),這個字符會被合并到字面量中,而在第三版里,這個字符不會被合并。
7.2:Unicode 字符 <BOM> 現(xiàn)在是作為空格使用,如果它出現(xiàn)在本該是一個標識符的位置的中間,則會產生一個語法錯誤,而在第三版里不會。
7.3:換行符以前是作為轉義字符處理,而現(xiàn)在允許換行符被包含在字符串字面量標記中。這在第三版中會產生一個語法錯誤。
7.8.5:現(xiàn)在的正則表達式字面量在字面量解析執(zhí)行的時候都會返回一個唯一的對象。這個改變可以被任意測試字面量值的對象 ID 或者一些敏感的副作用的程序檢測到。
7.8.5:第五版要求提前拋出任意可能的正則表達式結構錯誤,這些結構錯誤會在將正則表達式字面量轉換成正則表達式對象的時候產生。在第五版之前的實現(xiàn)允許延遲拋出 [TypeError],直到真正執(zhí)行到這個對象。
7.8.5:在第五版中,未轉義的 "/" 字符可以作為 CharacterClass 存在于正則表達式字面量中。在第三版里,這樣的字符是作為字面量的最后一個字符存在。
10.4.2:在第五版中,間接調用 eval 函數會將全局對象作為 執(zhí)行代碼 的變量環(huán)境和 詞法環(huán)境 。在第三版中,[eval] 函數的間接調用者的變量和 詞法環(huán)境 是作為 執(zhí)行代碼 的環(huán)境使用。
15.4.4:在第五版中,所有 Array.prototype 下的方法都是通用的。在第三版中,toString 和 toLocaleString 方法不是通用的,如果被非 Array 實例調用時會拋出一個 TypeError 的異常。
10.6:在第五版中,argument 對象與實際的參數符合,它的數組索引屬性是可枚舉的。在第三版中,這些屬性是不可枚舉的。
10.6:在第五版中,一個 arguments 對象的 Class 內置屬性值是“Arguments”。在第三版中,它是“Object”。當對 argument 對象調用toString 的時候
12.6.4:當 in 表達式執(zhí)行一個 null 或者 undefined 時 ,for-in 語句不再拋出 TypeError。取而代之的是將其作為不包含可枚舉屬性的對象執(zhí)行。
15:在第五版中,下面的新屬性都是在第三種中已存在的內建對象中定義,Object.getPrototypeOf, Object.getOwnPropertyDescriptor, Object.getOwnPropertyNames, Object.create, Object.defineProperty, Object.defineProperties, Object.seal, Object.freeze, Object.preventExtensions, Object.isSealed, Object.isFrozen, Object.isExtensible, Object.keys, Function.prototype.bind, Array.prototype.indexOf, Array.prototype.lastIndexOf, Array.prototype.every, Array.prototype.some, Array.prototype.forEach, Array.prototype.map, Array.prototype.filter, Array.prototype.reduce, Array.prototype.reduceRight, String.prototype.trim, Date.now, Date.prototype.toISOString, Date.prototype.toJSON。
15:實現(xiàn)現(xiàn)在要求忽略內建方法中的額外參數,除非明確指定。在第三版中,并沒有規(guī)定額外參數的處理方式,實現(xiàn)中明確允許拋出一個 TypeErrorBold text 錯誤。
15.1.1:全局對象的值屬性 NaN,Infinity 和 Undefined 改為只讀屬性。
15.1.2.1:實現(xiàn)不再允許約束非直接調用 eval 的方式。另外間接調用 eval 會使用全局對象作為變量環(huán)境,而不是使用調用者的變量環(huán)境作為變量環(huán)境。
15.1.2.2:parseInt 的規(guī)范不再允許實現(xiàn)將 0 開頭的字符串作為 8 進制值。
15.3.4.3:在第三版中,如果傳入 Function.prototype.apply 的第二個參數不是一個數組對象或者一個 arguments 對象,就會拋出一個TypeError。在第五版中,參數也可以是任意類型的含有 length 屬性的類數組對象。
15.3.4.3,15.3.4.4:在第三版中,在 Function.prototype.apply 或者 Function.prototype.call 中傳入 undefined 或者 null 作為第一個參數會導致 全局對象 被作為一個個參數傳入,間接導致目標函數的 [this] 會指向全局變量環(huán)境。如果第一個參數是一個 原始值 ,在 原始值 上調用 ToObject 的結果會作為 this 的值。在第五版中,這些轉換不會出現(xiàn),目標函數的 this 會指向真實傳入的參數。這個不同點一般情況下對已存在的遵循 ECMAScript 第三版的代碼來說不太明顯,因為相應轉換會在目標函數生效之前執(zhí)行。然而,基于不同的實現(xiàn),如果使用 apply 或者 call 調用函數時,這個不同點就會很明顯。另外,用這個方法調用一個標準的內建函數,并使用 null 或者 undefined 作為參數時,很可能會導致第五版標準下的實現(xiàn)與第三版標準下的實現(xiàn)不同。特別是第五版中代表性地規(guī)定了需要將實際調用的傳入的 this值作為對象的內建函數,在傳入 null 或者 undefined 作為 this 值時,會拋出一個 TypeError 異常。
15.3.5.2:在第五版中,函數實例的 prototype 屬性是不可枚舉的。在第三版中,是可以枚舉的。
15.5.5.2:在第五版中,一個字符串對象的 primitiveValue 的單個字符可以作為字符串對象的數組索引屬性訪問。這些屬性是不可泄也不可配置的,并會影響任意名字相同的繼承屬性。在第三版中,這些屬性不會存在,ECMAScript 代碼可以通過這些名字動態(tài)添加和移除可寫的屬性并訪問以這些名字繼承的屬性。
15.9.4.2:Date.parse 方法現(xiàn)在不要求第一個參數首先作為 ISO 格式字符串解析。使用這個格式但是基于特定行為實現(xiàn)(包括未來的一些行為)或許會表現(xiàn)的不太一樣。
15.10.2.12:在第五版中,\s 現(xiàn)在可以匹配 <BOM> 了
15.10.4.1:在第三版中,由 RegExp 構造器創(chuàng)建的對象的 source 字符串的精確形式由實現(xiàn)定義。在第五版中,字符串必須符合確定的指定條件,因此會和第三版標準的實現(xiàn)的結果不一樣。
15.10.6.4:在第三版中,RegExp.prototype.toString 的規(guī)則不需要由 RegExp 對象的 source 屬性決定。在第五版中,結果必須由 source 屬性經由一個指定的規(guī)則,因此會和第三版實現(xiàn)的結果不一樣。
15.11.2.1,15.11.4.3:在第五版中,如果一個錯誤對象的 message 屬性原始值沒有通過 Error 構造器指定,那么這個原始值就是一個空的字符串。在第三版中,這個原始值由實現(xiàn)決定。
15.11.4.4:在第三版中,Error.prototype.toString 的結果是由實現(xiàn)定義的。在第五版中,有完整的規(guī)范指定,因此可能會和第三版的實現(xiàn)不同。
15.12: 在第五版中,JSON 是在全局環(huán)境中定義的。第三版中,測試這個名詞的存在會發(fā)現(xiàn)它是 undefined,除非這個程序或者實現(xiàn)定義了這個名詞。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: