2016-11-12 35 views
4

我發現Node使用Chrome的V8 JavaScript引擎。有一些關於ES6支持的信息herehere。使用Node時甚至有V8選項的開關:是否可以在Node中設置ECMAScript版本?

node --v8-options 

但是沒有一個選項似乎允許選擇ECMAScript版本。

此外here我發現幾年前Node支持ES3的信息,但後來隨着V8的發展它切換到了ES5。

是否有可能強制Node使用版本高於5的ECMAScript?目前是否使用V8引擎支持ES版本選擇?

回答

3

EcmaScript的所有版本都向後兼容以前的版本。

ES3功能可以在ES5中使用,而ES5功能可以在ES2015中使用,所以不應該在ES3環境中專門運行代碼,因爲ES3代碼在ES5和ES2015中應該可以正常工作。

一般來說,在EcmaScript的新版本中沒有任何重大更改,即使在ES5中,當他們決定嘗試清理語言時,他們決定添加use strict,以免破壞任何內容ES3中運行的舊代碼。

Javascript引擎通常不會有運行不同版本的EcmaScript的選項,因爲它不應該被需要,最新版本應該與該標準的所有先前版本兼容。

+0

確實如此,但是我想運行ES3來測試舊版本。特別是我想在現場演示中展示TypeScript可以在ES3上運行的實時演示(目標是'es3','es5','es6','es2015'),因此即使在非常古老的瀏覽器中,我們也可以獲得現代化的功能。我也想看看TS編譯器是否會正確地修改像ES5中引入的Object.create()這樣的操作,以便在ES3中運行。 – Landeeyo

+1

然後我認爲你唯一的選擇是嘗試找到一個足夠老的引擎,它只支持ES3,這不會是Node,你必須在Node發佈之前回溯到Netscape Navigator 1.0和1995年或大約那個時候。 – adeneo

+0

@adeneo,JS中的'重複的屬性名稱'呢?在嚴格模式下的ES5中,它們被視爲語法錯誤。但在ES2015中,他們消除了由於「計算屬性名稱」可能發生衝突而導致的錯誤。 那麼,如果我想啓用該語法錯誤呢? –

2

由於實現者沒有實現規範的所有功能,所以供應商實現的功能集彼此不一致,所以JS引擎不再符合規範的版本。這是一個短暫的夢想。

爲了在ES3上進行演示,您需要運行IE6 - 8. ...這有其自身的問題,因爲IE有一些讓人難以接受但奇怪可行的怪癖。

相關問題