es2017은 es8입니다. es의 정식 명칭은 "ECMAScript"이며, ECMA-262 표준에 따라 구현된 범용 스크립트 언어입니다. 2017년 6월에 정식 출시된 버전은 ECMAScript의 8번째 버전이기 때문에 정식 명칭은 ECMAScript2017입니다. es8이라고 할 수 있습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
"es" 소개
es(전체 이름은 "ECMAScript")는 ECMA-262 표준에 따라 구현된 범용 스크립트 언어입니다. ECMA-262 표준은 주로 구문, 유형, 이 언어의 명령문 및 키워드, 예약어, 연산자, 객체 및 기타 부분. ES 뒤에 숫자가 표시될 때마다 ECMAScript의 다른 버전입니다.
es8/ ES2017
es8은 ECMAScript8(ECMAScript의 8번째 버전)을 의미하며 2017년 6월에 공식적으로 출시된 JavaScript 언어의 표준입니다. 공식적으로는 ECMAScript 2017(ES2017)이라고 합니다.
ES6에 비해 ES8은 더 작은 JavaScript 버전이지만 여전히 매우 유용한 기능을 도입합니다.
문자열 패딩(padStart 및 padEnd)
Object.values
-
Object.
Object.getOwnPropertyDescriptors() - 함수 인수 목록 및 호출의 후행 쉼표
- 비동기 함수
- 공유 메모리 및 원자학
The 문자열 패딩의 목적은 문자열에 문자를 추가
하여 문자열이 지정된 길이에 도달하도록 하는 것입니다.ES2017에는 padStart()
및 padEnd()
라는 두 가지 String
메서드가 도입되었습니다.
padStart(targetLength [, padString]) padEnd(targetLength [, padString])
String
方法:padStart()
和 padEnd()
。
const person = { name: 'Fred', age: 87 } Object.values(person) // ['Fred', 87]
简单的使用:
Object.values()
这个方法返回一个包含所有对象自身属性值的数组。
使用:
const people = ['Fred', 'Tony'] Object.values(people) // ['Fred', 'Tony']
Object.values()
也适用于数组:
const person = { name: 'Fred', age: 87 } Object.entries(person) // [['name', 'Fred'], ['age', 87]]
Object.entries()
这个方法返回一个包含所有对象自身属性的数组,作为 [key,value]
对的数组。
使用:
const people = ['Fred', 'Tony'] Object.entries(people) // [['0', 'Fred'], ['1', 'Tony']]
Object.entries()
也适用于数组:
const person1 = { set name(newName) { console.log(newName) } }
Object.getOwnPropertyDescriptors()
此方法返回对象的所有自有(非继承的)属性描述符。
JavaScript 中的任何对象都有一组属性,每个属性都有一个描述符。
描述符是属性(property) 的一组特性(attributes),它由以下的子集组成:
- value:属性的值
-
writable:
true
表示改属性可以被修改 - get:属性的 getter 函数,在读取属性时调用
- set:属性的 setter 函数,在属性设置值时调用
-
configurable:如果为
false
,则不能删除属性,也不能更改任何属性,但值除外 -
enumerable:如果属性是可枚举的,则为
true
Object.getOwnPropertyDescriptors(obj)
接受一个对象,并返回一个带有描述符集的对象。
这个方法有什么用?
ES2015 给我们带来了 Object.assign()
方法,它从一个或多个对象复制所有可枚举的属性,并返回一个新对象。
但是存在问题,它无法正确复制具有非默认特性(attribute) 的属性 (property)(getter,setter,不可写属性,等)。
如果一个对象只有一个 setter ,则无法使用 Object.assign()
사용하기 쉬움:
Object.values()
이 메서드는 객체의 모든 속성 값을 포함하는 배열을 반환합니다.
JavaScript 코드:
const person2 = {} Object.assign(person2, person1)
Object.values()
배열에서도 작동:const person3 = {} Object.defineProperties(person3, Object.getOwnPropertyDescriptors(person1))🎜🎜🎜Object.entries()🎜🎜🎜🎜이 메서드 객체의 모든 속성을 포함하는 배열을
[key, value]
쌍의 배열로 반환합니다. 🎜🎜용도:🎜🎜JavaScript 코드:🎜person1.name = 'x' "x" person2.name = 'x' person3.name = 'x' "x"🎜
Object.entries()
배열에서도 작동:🎜🎜JavaScript 코드:🎜const doSomething = (var1, var2,) => { //... } doSomething('test2', 'test2',)🎜🎜🎜Object.getOwnPropertyDescriptors()🎜🎜🎜🎜이 메서드 객체 자체의 (상속되지 않은) 속성 설명자를 모두 반환합니다. 🎜🎜JavaScript의 모든 개체에는 속성 집합이 있으며 각 속성에는 설명자가 있습니다. 🎜🎜설명자는 다음 하위 집합으로 구성된 속성의 속성 집합입니다. 🎜
- 🎜🎜value🎜: 속성의 값 🎜🎜🎜writable🎜:
true
는 다음을 나타냅니다. 속성을 수정할 수 있습니다. 🎜🎜🎜get🎜: 속성을 읽을 때 호출되는 속성의 getter 함수 🎜🎜🎜set🎜: 속성의 값을 설정할 때 호출되는 속성의 setter 함수 🎜🎜 🎜configurable🎜: false
인 경우 속성을 삭제할 수 없으며 🎜🎜🎜enumerable🎜 값을 제외하고 어떤 속성도 변경할 수 없습니다.: true
🎜🎜🎜Object.getOwnPropertyDescriptors(obj) 객체를 승인하고 설명자 세트와 함께 객체를 반환합니다. 🎜🎜🎜이 방법의 용도는 무엇입니까? 🎜🎜🎜ES2015에서는 하나 이상의 객체에서 열거 가능한 모든 속성을 복사하고 새 객체를 반환하는 Object.sign()
메서드를 도입했습니다. 🎜🎜하지만 기본이 아닌 속성(getter, setter, 쓰기 불가능한 속성 등)이 있는 속성을 올바르게 복사할 수 없다는 문제가 있습니다. 🎜🎜객체에 setter가 하나만 있는 경우 Object.sign()
을 사용하여 새 객체에 올바르게 복사할 수 없습니다. 🎜🎜예:🎜🎜JavaScript 코드:🎜function doSomethingAsync() { return new Promise((resolve) => { setTimeout(() => resolve('I did something'), 3000) }) } async function doSomething() { console.log(await doSomethingAsync()) } console.log('Before') doSomething() console.log('After')🎜다음 코드는 작동하지 않습니다.🎜🎜JavaScript 코드:🎜
Before After I did something //after 3s🎜그러나 다음 코드는 작동합니다.🎜🎜JavaScript 코드:🎜
function promiseToDoSomething() { return new Promise((resolve)=>{ setTimeout(() => resolve('I did something'), 10000) }) } async function watchOverSomeoneDoingSomething() { const something = await promiseToDoSomething() return something + ' and I watched' } async function watchOverSomeoneWatchingSomeoneDoingSomething() { const something = await watchOverSomeoneDoingSomething() return something + ' and I watched as well' } watchOverSomeoneWatchingSomeoneDoingSomething().then((res) => { console.log(res) })🎜간단한 방법으로 이 작업을 수행할 수 있습니다. 콘솔 테스트를 수행하면 다음이 표시됩니다. 🎜🎜JavaScript 코드: 🎜
person1.name = 'x' "x" person2.name = 'x' person3.name = 'x' "x"
person2
丢失了 setter ,因为它没有复制过来。
使用 Object.create()
对浅拷贝对象也有同样的限制。
函数参数列表和调用中的尾随逗号
此功能允许在函数声明和函数调用中使用尾随逗号:
const doSomething = (var1, var2,) => { //... } doSomething('test2', 'test2',)
这一变化将鼓励开发人员停止丑陋的“行以逗号开头”的习惯。
Async Functions (异步函数)
ES2017 引入了 Async Functions (异步函数) 的概念,这是 ECMAScript 版本中引入的最重要的变化。
Async Functions (异步函数) 是 promises 和 generators(生成器) 的组合,以简化 promises 调用,提过代码的可读性,但是不打破 promises 链式调用的限制。
为什么有用
这是对 promises 更高层次的抽象。
当 Promise 在 ES2015 中引入时,它们的目的是解决异步代码的问题,并且他们做到了。但在 ES2015 和 ES2017 相间隔的两年时间里,很明显, Promise 并不是最终的解决方案。
引入 Promise 是为了解决著名的 回调地狱 问题,但它们引入了自己的复杂性和语法复杂性。它们是良好的原语,可以向开发人员公开更好的语法:那就是Async Functions (异步函数)。
一个简单的例子
使用异步函数的代码可以写成:
function doSomethingAsync() { return new Promise((resolve) => { setTimeout(() => resolve('I did something'), 3000) }) } async function doSomething() { console.log(await doSomethingAsync()) } console.log('Before') doSomething() console.log('After')
上面的代码将在浏览器控制台中打印以下内容:
Before After I did something //after 3s
链式调用多个异步函数
异步函数可以非常容易地链式调用,并且语法比简单的 Promise 更具可读性:
function promiseToDoSomething() { return new Promise((resolve)=>{ setTimeout(() => resolve('I did something'), 10000) }) } async function watchOverSomeoneDoingSomething() { const something = await promiseToDoSomething() return something + ' and I watched' } async function watchOverSomeoneWatchingSomeoneDoingSomething() { const something = await watchOverSomeoneDoingSomething() return something + ' and I watched as well' } watchOverSomeoneWatchingSomeoneDoingSomething().then((res) => { console.log(res) })
共享内存 和 Atomics
WebWorkers 用于在浏览器中创建多线程程序。
他们通过事件提供消息传递协议。 从ES2017开始,您可以使用 SharedArrayBuffer
在 Web worker 及其创建者之间创建共享内存数组。
由于我们不知道向共享内存部分写入要花费多少时间来传播,因此 Atomics 是一种在读取值时执行该操作的方法,并且完成了任何类型的写入操作。
【相关推荐:javascript视频教程、编程视频】
위 내용은 es2017은 es6입니까, es8입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

React의 장점은 유연성과 효율성이며, 이는 다음과 같이 반영됩니다. 1) 구성 요소 기반 설계는 코드 재사용 성을 향상시킵니다. 2) 가상 DOM 기술은 특히 다량의 데이터 업데이트를 처리 할 때 성능을 최적화합니다. 3) 풍부한 생태계는 많은 타사 라이브러리와 도구를 제공합니다. React가 어떻게 작동하고 사용하는지 이해함으로써 핵심 개념과 모범 사례를 마스터하여 효율적이고 유지 관리 가능한 사용자 인터페이스를 구축 할 수 있습니다.

React는 크고 복잡한 응용 프로그램에 적합한 사용자 인터페이스를 구축하기위한 JavaScript 라이브러리입니다. 1. React의 핵심은 구성 요소화 및 가상 DOM으로 UI 렌더링 성능을 향상시킵니다. 2. VUE와 비교할 때 React는 더 유연하지만 가파른 학습 곡선이있어 대규모 프로젝트에 적합합니다. 3. Angular와 비교하여 React는 더 가볍고 지역 사회 생태에 의존하며 유연성이 필요한 프로젝트에 적합합니다.

React는 Virtual Dom을 통해 HTML에서 작동합니다. 1) REACT는 JSX 구문을 사용하여 HTML 유사 구조를 작성합니다. 2) 가상 DOM 관리 UI 업데이트, 확산 알고리즘을 통한 효율적인 렌더링. 3) reftdom.render ()를 사용하여 구성 요소를 실제 DOM으로 렌더링하십시오. 4) 최적화 및 모범 사례에는 성능 및 유지 관리 가능성을 향상시키기 위해 React.Memo 및 구성 요소 분할 사용이 포함됩니다.

React는 전자 상거래, 소셜 미디어 및 데이터 시각화에 널리 사용됩니다. 1) 전자 상거래 플랫폼은 React를 사용하여 쇼핑 카트 구성 요소를 구축하고, usestate를 사용하여 상태를 관리하고, 이벤트를 처리하기 위해 ONCLICK 및 MAP 기능을 렌더링합니다. 2) 소셜 미디어 응용 프로그램은 사용률을 통해 API와 상호 작용하여 동적 컨텐츠를 표시합니다. 3) 데이터 시각화는 React-Chartjs-2 라이브러리를 사용하여 차트 렌더링을 사용하며 구성 요소 설계는 응용 프로그램을 쉽게 포함시킬 수 있습니다.

React 프론트 엔드 아키텍처를위한 모범 사례에는 다음이 포함됩니다. 1. 구성 요소 설계 및 재사용 : 단일 책임, 이해하기 쉬운 및 테스트 구성 요소를 설계하여 높은 재사용을 달성합니다. 2. State Management : usestate, usestate, usereducer, contextapi 또는 redux/mobx를 사용하여 상태를 관리하여 과도한 복잡성을 피하십시오. 3. 성능 최적화 : react.memo, Usecallback, Usememo 및 기타 방법을 통해 성능을 최적화하여 밸런스 포인트를 찾습니다. 4. 코드 조직 및 모듈성 : 기능 모듈에 따라 코드를 구성하여 관리 가능성과 유지 관리를 향상시킵니다. 5. 테스트 및 품질 보증 : 코드의 품질과 신뢰성을 보장하기 위해 Jest 및 ReactTestingLibrary로 테스트

반응을 HTML에 통합하려면 다음 단계를 따르십시오. 1. HTML 파일에 React 및 Reactdom을 소개하십시오. 2. 반응 구성 요소를 정의합니다. 3. 반응을 사용하여 구성 요소를 HTML 요소로 렌더링합니다. 이러한 단계를 통해 정적 HTML 페이지를 역동적이고 대화식 경험으로 변환 할 수 있습니다.

React의 인기에는 성능 최적화, 구성 요소 재사용 및 풍부한 생태계가 포함됩니다. 1. 성능 최적화는 가상 DOM 및 Diffing 메커니즘을 통해 효율적인 업데이트를 달성합니다. 2. 구성 요소 재사용은 재사용 가능한 구성 요소에 의해 중복 코드를 줄입니다. 3. 풍부한 생태계와 일원 데이터 흐름은 개발 경험을 향상시킵니다.

React는 동적 및 대화식 사용자 인터페이스를 구축하기위한 선택 도구입니다. 1) 구성 요소화 및 JSX는 UI 분할 및 재사용을 간단하게 만듭니다. 2) State Management는 Usestate 후크를 통해 구현되어 UI 업데이트를 트리거합니다. 3) 이벤트 처리 메커니즘은 사용자 상호 작용에 응답하고 사용자 경험을 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
