node.js에서 지원되는 Javascript 버전
Node.js를 시작하고 있는데 노드에서 지원하는 JavaScript 버전을 파악하는 데 어려움을 겪고있어 어떤 기능을 사용할 수 있는지 파악하기 어렵습니다. 여기 내가 아는 것이 있습니다.
- 노드 는 V8을 사용합니다.
- V8 은 ECMA-262, 3rd edition에 지정된대로 ECMAScript를 구현합니다.
- ECMA-262, 3 판은 JavaScript 1.5입니다.
이를 감안할 때 노드에서 JavaScript 1.5 호환 코드를 사용할 수 있다고 가정합니다. 그러나 Array.forEach
MDC에 따르면 Javascript 1.6-ECMA-262, 5th edition까지 사용할 수 없지만 다른 구성 중에서.
내가 어디로 잘못 가고 있습니까? 사용 가능한 언어 기능을 자세히 설명하는 문서가 어딘가에 있습니까?
이 매트릭스 (V8은 WebKit 열을 상당히 가깝게 따릅니다)는 "어떤 기능을 사용할 수 있습니까?"라는 질문에 꽤 잘 대답하는 것 같습니다. 그러나 "어떤 버전의 javascript가 지원됩니까?"에 대한 정식 답변을 찾을 수 없습니다. 내가 말할 수있는 한, 가장 좋은 대답은 다음과 같습니다. ECMA-262 3rd 에디션이 지원되지만 5th 에디션의 많은 기능도 지원됩니다.
V8 이이 스레드 에서 WebKit 및 JavaScriptCore 기능을 따르는 이유에 대한 좋은 설명 이 있습니다.
Node javascript 버전은 Node가 사용하는 v8 버전에 따라 다릅니다. 노드 버전 0.5.1 (2011 년 7 월 14 일) 이상은 v8 3.4.10 이상을 사용하며 3 판이 아닌 5 판 ECMA-262입니다. 5th edition은 Javascript 1.8.5와 동일합니다. 아래 이유를 참조하십시오.
2011 년 5 월 21 일부터 2011 년 6 월 15 일 사이에 v8 웹 사이트는 3 판 ECMA-262를 구현하는 것으로 v8을 나열하는 것을 중단하고 5 판을 표시하기 시작했습니다. http://web.archive.org/web/20110521053630/http://code.google.com/p/v8/ http://web.archive.org/web/20110615102350/http://code.google. com / p / v8 /
v8 변경 로그에 따르면 2011 년 6 월 15 일에 v8이 버전 3.4.4로 변경되었습니다. 그래서 그 버전 이상은 5 판입니다.
Node changelog에 따르면 v8 3.4.10은 Node 버전 0.5.1 (2011 년 7 월 14 일)에 있었으므로 버전 이상은 ECMA-26 5 판입니다. 이것은 3.4.10 이전의 v8 버전이 순전히 3 번째 버전이라는 것을 의미하지는 않습니다. 많은 v8 버전을 통해 3 번째에서 5 번째로 꾸준한 전환이 있었기 때문입니다.
어떤 시점에서 node.green 은 다른 Node 버전에 대한 JavaScript 기능 지원을 추적하기 위해 만들어진 것 같습니다.
Javascript 노드가 어떤 버전을 사용하는지 파악하기 위해 두 가지 전략으로 축소 된 것 같습니다.
전략 1 : 어떤 문서가 어딘가에서 말하는 것을 신뢰합니다. 이는 많은 경우에 잘못된 것입니다. ECMAScript 버전을 지원하는 노드 버전의 키-값 쌍을 나타내는 테이블을 찾지 못했습니다.
전략 2 : 추측과 확인.
ES6에서 인용 한 기능을 찾고 다음과 같이 "실패 여부 확인"을 수행합니다.
el@apollo:~/code$ echo "console.log('blue'.includes('blue'))" > a.js
el@apollo:~/code$ cat a.js
console.log('blue'.includes('blue'))
el@apollo:~/code$ node a.js
/home/el/code/javascript/02/a.js:1
ports, require, module, __filename, __dirname) { console.log('blue'.includes('
^
TypeError: undefined is not a function
at Object.<anonymous> (/home/el/code/javascript/02/a.js:1:82)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
el@apollo:~/code$ babel-node a.js
true
여기서 "바벨"은 타 나크에 대한 참조라고 생각합니다. 우리의 노드 버전은 어떤 기능을 지원합니까? 글쎄요, 당신은 그것을 수동으로 테스트해야 할 것입니다. 이것은 거대한 MESS가 될 것입니다. 그리고 더 나쁜 것은 의도적 인 것 같습니다.
참고 URL : https://stackoverflow.com/questions/5139168/what-version-of-javascript-is-supported-in-node-js
'code' 카테고리의 다른 글
Android 스튜디오에는 어떤 JDK 버전 (언어 수준)이 필요합니까? (0) | 2020.10.22 |
---|---|
수은의 모범 사례 : 분기 대 복제, 부분 병합? (0) | 2020.10.22 |
Eclipse 컴파일러 또는 javac의 버그 ( "T의 유형 매개 변수를 결정할 수 없음") (0) | 2020.10.22 |
값으로 전달할 때 "const"가 중복되지 않습니까? (0) | 2020.10.21 |
Go 맵에서 항목을 계산하는 방법은 무엇입니까? (0) | 2020.10.21 |