JavaScript 1.8은 Gecko 1.9(Firefox 3에 병합될 예정)의 일부로 제공될 예정입니다. 이는 JavaScript 1.7에 비해 작은 업데이트일 뿐이지만 ECMAScript 4/JavaScript 2로의 일부 발전 흔적이 포함되어 있습니다. JavaScript 1.8에는 JavaScript 1.6 및 JavaScript 1.7의 모든 새로운 기능도 포함됩니다.
JavaScript 1.8 사용
JavaScript 1.8의 새로운 기능을 HTML에서 사용하려면 다음과 같이 작성해야 합니다.
<script>JavaScript Shell 및 JavaScript를 사용할 때 XPCOM 구성 요소 또는 XUL <BR> 요소인 경우 최신 JS 버전(Mozilla 1.9에서는 JS1.8)이 자동으로 사용됩니다. <BR>새 키워드 "yield"와 "let"을 사용해야 하는 경우, 작성한 코드에서 이 두 키워드를 변수 이름이나 함수 이름으로 사용할 수 있으므로 버전 1.7 이상을 지정해야 합니다. 새 키워드를 사용하지 않는 경우 JavaScript 버전을 지정할 필요가 없습니다. <STRONG>표현식 종결<BR> <BR>이 새로 추가된 기능은 실제로 간단한 함수를 작성하는 편리한 방법으로, 언어를 일반적인 Lambda 표기법과 더 유사하게 만듭니다. <BR>JavaScript 1.7 및 이전 버전: <BR> function(x) { return x * x; } <BR>JavaScript 1.8: <BR>function(x) x * x <BR>이 구문을 사용하면 중괄호와 'return' 문을 암시적으로 생략할 수 있습니다. 이렇게 쓰면 표면적으로만 짧아 보일 뿐 다른 장점은 없습니다. <BR>예: <STRONG><BR>이벤트 핸들러를 바인딩하는 간단한 방법: <BR>document.addEventListener("click", function() false, true) <BR>이 정의를 JavaScript로 사용 -1.6에서 배열 함수 작성: <BR>elems.some(function(elem) elem.type == "text") <STRONG><BR>생성기 표현식<BR>이 새로운 추가 기능을 사용하면 다음을 수행할 수 있습니다. 생성기를 쉽게 생성할 수 있습니다(JavaScript 1.7에 도입됨). 일반적으로 이전에는 산출량이 포함된 사용자 정의 함수를 생성해야 했지만 이 새로운 기능을 사용하면 배열 개념과 유사한 구문을 사용하여 독립 실행형 생성기 핸들을 생성할 수 있습니다. <BR>JavaScript 1.7에서는 객체에 대한 사용자 정의 생성기를 생성하려면 다음과 같은 코드를 작성해야 할 수도 있습니다. <BR>function add3(obj) { <BR>for ( let i in obj ) <BR>yield i 3 ; <BR>} <BR>let it = add3(someObj); <BR>try { <BR>while(true) { <br>document.write(it.next() "<BR>n "); 🎜>} <BR>} catch(StopIteration 인스턴스에 오류가 있는 경우 오류 발생) { <BR>document.write("End of Record.<br>n") <BR>} <BR><STRONG>at JavaScript 1.8에서는 생성기 함수를 다시 작성하지 않고 대신 생성기 표현식을 사용할 수 있습니다. <BR>let it = (i 3 for (i in someObj)) <BR>try { <BR>while (true) { <BR>document.write(it.next() "<br>n"); <BR>} <BR>} catch(StopIteration 인스턴스에 오류가 있는 경우 오류 발생) { <BR>document.write("기록 끝.<br>n"); <BR>} <BR>생성기 표현식은 숫자와 같은 함수에 전달될 수도 있습니다. 생성기는 유용성을 위해 절대적으로 필요한 경우에만 실행된다는 점은 주목할 가치가 있습니다(일반적인 어레이 개념의 조건으로 사전 구성되지 않음). 이 차이점은 다음 예에서 확인할 수 있습니다. <BR><STRONG>JavaScript 1.7 배열 개념 사용<BR>handleResults([ i for ( i in obj ) if ( i > 3 ) ]) <BR> function handlerResults( 결과 ) { <BR>for ( let i in results ) <BR>// ... <BR>} <BR>JavaScript 1.8 생성기 표현식 사용<BR>handleResults( i for ( i in obj ) if ( i > 3 ) ); <BR>function handlerResults( results ) { <BR>for ( let i in results ) <BR>// ... <BR>} <BR>이 두 예제의 가장 큰 차이점은 다음과 같습니다. 생성기 표현식을 사용할 때 'obj' 구조를 전체적으로 한 번만 반복하면 됩니다. 반면 첫 번째 예에서는 재귀 중에 다시 반복됩니다. <BR>JavaScript 1.8.1 <BR>JavaScript 1.8.1은 Gecko 1.9.1에 포함되어 있습니다(Firefox 3.5에 통합될 예정). 이 버전에는 주로 JIT(Just-In-Time) 컴파일 추적 추가에 초점을 맞춘 몇 가지 업데이트만 있습니다. Tracemonkey JIT(Just-In-Time) 컴파일러를 참조하세요. <BR>물론, 더 중요한 변화는 API에서 콜백 분기를 제거하고 콜백 작업을 대체하는 것입니다. 자세한 내용은 이 뉴스그룹 게시물을 참조하세요. <BR>추가된 부분 <BR>Object.getPrototypeOf() <BR>이 새로운 메서드는 지정된 개체의 프로토타입을 반환합니다. <BR>이 메서드는 지정된 개체의 프로토타입을 반환합니다. <BR>String 개체의 새로운 Trim 메서드 <BR>이제 String 개체에는 Trim(), TrimLeft() 및 TrimRight() 메서드가 있습니다.</script>