웹 프론트엔드 프런트엔드 Q&A es6의 새로운 기능은 무엇입니까?

es6의 새로운 기능은 무엇입니까?

Apr 13, 2022 pm 02:27 PM
es6 새로운 특성

ES6의 새로운 기능: 1. const와 let을 사용하여 변수를 선언합니다. 두 변수 모두 블록 수준 범위입니다. 2. 템플릿 문자열, "`string`" 구문을 사용하면 문자열 연결을 더욱 간결하게 만들 수 있습니다. 이 포인팅 문제를 해결합니다. 4. 확장 연산자, 반복 가능한 객체를 별도의 요소로 확장합니다. 5. 모듈화 등

es6의 새로운 기능은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.

ECMAScript 6(ES6)은 기본적으로 ES5보다 인기가 훨씬 빠릅니다. 주된 이유는 최신 브라우저, 특히 이미 대부분의 ES6 기능을 지원하는 Chrome 및 Firefox 브라우저가 매우 빠르게 지원되기 때문입니다.

다음은 일반적으로 사용되는 새로운 ES6 기능을 하나씩 자세히 설명합니다.

1. 다양한 변수 선언: const 및 let

과거 JS에는 블록 수준 범위가 없었고, const 및 let 이 편의를 채웠습니다. 공백, const 및 let은 모두 블록 수준 범위입니다.

ES6에서는 이전 var에 비해 로컬 변수 선언에 let을 사용할 것을 권장합니다. (어디에 선언해도 함수 상단에 선언된 것으로 간주됩니다.) let과 var 선언의 차이점:

var x = '全局变量';
{
  let x = '局部变量';
  console.log(x); // 局部变量
}
console.log(x); // 全局变量
로그인 후 복사

let은 변수 선언을 의미하고 const는 상수 선언을 의미합니다. 둘 다 const로 선언된 블록 수준 변수이며 상수로 간주됩니다. 즉, 해당 값은 이후에 설정됩니다. 더 이상 수정할 수 없습니다:

const a = 1
a = 0 //报错
로그인 후 복사

const가 객체인 경우 객체에 포함된 값을 수정할 수 있습니다. 추상적으로 말하면, 객체가 가리키는 주소가 변하지 않은 것만으로도 충분합니다:

const student = { name: 'cc' }

student.name = 'yy';// 不报错
student  = { name: 'yy' };// 报错
로그인 후 복사

몇 가지 주의할 점이 있습니다:

  • let 키워드로 선언된 변수에는 변수 호이스팅 기능이 없습니다.
  • let 및 const 선언만 유효합니다. 가장 가까운 블록에서만 유효합니다(중괄호 내).
  • 상수 const 선언을 사용하는 경우 다음과 같은 대문자 변수를 사용하십시오. CAPITAL_CASING
  • const는 선언 시 값을 할당해야 합니다.

2. 템플릿 문자열

ES6 이전에는 종종 다음과 같은 템플릿 문자열을 처리했습니다. "" 및 "+"를 통해 템플릿을 구축하세요.

$("body").html("This demonstrates the output of HTML \
content to the page, including student's\
" + name + ", " + seatNumber + ", " + sex + " and so on.");
로그인 후 복사

그리고 ES6의 경우

  • 기본 문자열 형식입니다. 연결을 위해 문자열에 표현식을 포함합니다. ${}를 사용하여 정의하세요.

  • ES6 백틱(``)은 직접 수행할 수 있습니다.

ES6은 템플릿 문자열을 지원하여 문자열 연결을 더욱 간결하고 직관적으로 만듭니다.

$("body").html(`This demonstrates the output of HTML content to the page, 
including student's ${name}, ${seatNumber}, ${sex} and so on.`);
로그인 후 복사

3. Arrow Functions

이것은 ES6의 가장 흥미로운 기능 중 하나입니다. =>는 키워드 기능의 단축형일 뿐만 아니라 다른 이점도 제공합니다. 화살표 함수는 이를 주변 코드와 동일하게 공유하므로 이 포인팅 문제를 해결하는 데 도움이 될 수 있습니다. 숙련된 JavaScript 개발자는 주변을 참조하는 var self = this; 또는 var that = this와 같은 패턴에 익숙합니다. 그러나 =>를 사용하면 이 패턴이 더 이상 필요하지 않습니다. =>不只是关键字function的简写,它还带来了其它好处。箭头函数与包围它的代码共享同一个this,能帮你很好的解决this的指向问题。有经验的JavaScript开发者都熟悉诸如var self = this;var that = this这种引用外围this的模式。但借助=>,就不需要这种模式了。

箭头函数最直观的三个特点。

  • 不需要 function 关键字来创建函数
  • 省略 return 关键字
  • 继承当前上下文的 this 关键字
// ES5
var add = function (a, b) {
    return a + b;
};
// 使用箭头函数
var add = (a, b) => a + b;

// ES5
[1,2,3].map((function(x){
    return x + 1;
}).bind(this));
    
// 使用箭头函数
[1,2,3].map(x => x + 1);
로그인 후 복사

细节:当你的函数有且仅有一个参数的时候,是可以省略掉括号的。当你函数返回有且仅有一个表达式的时候可以省略{} 和 return;

4. 函数的参数默认值

在ES6之前,我们往往这样定义参数的默认值:

// ES6之前,当未传入参数时,text = 'default';
function printText(text) {
    text = text || 'default';
    console.log(text);
}

// ES6;
function printText(text = 'default') {
    console.log(text);
}

printText('hello'); // hello
printText();// default
로그인 후 복사

5.延展操作符(Spread operator)

延展操作符 … 是ES6中引入的,将可迭代对象展开到其单独的元素中,所谓的可迭代对象就是任何能用for of循环进行遍历的对象,例如:数组、字符串、Map 、Set 、DOM节点等。

延展操作符...

화살표 기능의 가장 직관적인 세 가지 기능입니다.

함수를 생성하는 데는 function 키워드가 필요하지 않습니다

return 키워드를 생략하세요현재 컨텍스트의 this 키워드를 상속하세요

function foo(x,y,z) {
  console.log(x,y,z);
}
 
let arr = [1,2,3];
foo(...arr); // 1 2 3
로그인 후 복사

세부정보: 함수에 매개변수가 하나만 있는 경우, 가능합니다. 괄호를 생략하세요. 함수가 하나의 표현식만 반환하는 경우 {}를 생략하고

4. 함수 매개변수의 기본값

ES6 이전에는 다음과 같은 매개변수의 기본값을 정의하는 경우가 많았습니다.

function foo(...args) {
  console.log(args);
}
foo( 1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
로그인 후 복사
5. 확산 연산자

확산 연산자 …는 ES6에서 도입되었으며, 이는 반복 가능한 객체를 별도의 요소로 확장합니다. 객체는 배열, 문자열, 맵, 세트, ​​DOM 노드 등과 같이 for of 루프를 사용하여 탐색할 수 있는 모든 객체입니다. 확장 연산자...는 함수 호출/배열 구성 중에 구문 수준에서 배열 표현식이나 문자열을 확장할 수 있습니다. 또한 확장 방식으로 객체를 구성할 때 키-값으로 객체 표현식을 확장할 수도 있습니다.

반복자에 사용하면 Spread 연산자:

let oValue = 0o10;
console.log(oValue); // 8
 
let bValue = 0b10; // 二进制使用 `0b` 或者 `0B`
console.log(bValue); // 2
로그인 후 복사
🎜함수 매개변수에 사용하면 Rest 연산자: 함수 매개변수에 사용하면 Rest 연산 기호: 🎜
// 对象
const student = {
    name: 'Sam',
    age: 22,
    sex: '男'
}
// 数组
// const student = ['Sam', 22, '男'];

// ES5;
const name = student.name;
const age = student.age;
const sex = student.sex;
console.log(name + ' --- ' + age + ' --- ' + sex);

// ES6
const { name, age, sex } = student;
console.log(name + ' --- ' + age + ' --- ' + sex);
로그인 후 복사
🎜🎜🎜6. 8진수 리터럴🎜🎜🎜🎜🎜ES6은 숫자 앞에 0o 또는 0O를 추가하여 8진수 값으로 변환할 수 있는 2진수 및 8진수 리터럴을 지원합니다: 🎜🎜
var parent = {
  foo() {
    console.log("Hello from the Parent");
  }
}
 
var child = {
  foo() {
    super.foo();
    console.log("Hello from the Child");
  }
}
 
Object.setPrototypeOf(child, parent);
child.foo(); // Hello from the Parent
             // Hello from the Child
로그인 후 복사
🎜🎜 🎜7.
let letter = ['a', 'b', 'c'];
letter.size = 3;
for (let letter of letters) {
  console.log(letter);
}
// 结果: a, b, c
로그인 후 복사
로그인 후 복사
🎜🎜🎜8. 객체 슈퍼 클래스🎜🎜🎜🎜ES6에서는 🎜
let stu = ['Sam', '22', '男'];
stu.size = 3;
for (let stu in stus) {
  console.log(stu);
}
// 结果: Sam, 22, 男
로그인 후 복사
로그인 후 복사
🎜🎜🎜9 for...of 및 for...in 🎜🎜🎜🎜for...of에서 슈퍼 메소드를 사용할 수 있습니다. 배열과 같은 반복자를 순회하는 데 사용됩니다. 🎜
let letter = ['a', 'b', 'c'];
letter.size = 3;
for (let letter of letters) {
  console.log(letter);
}
// 结果: a, b, c
로그인 후 복사
로그인 후 복사

for...in 用来遍历对象中的属性:

let stu = ['Sam', '22', '男'];
stu.size = 3;
for (let stu in stus) {
  console.log(stu);
}
// 结果: Sam, 22, 男
로그인 후 복사
로그인 후 복사

10.ES6中的类

ES6 中支持 class 语法,不过,ES6的class不是新的对象继承模型,它只是原型链的语法糖表现形式。

函数中使用 static 关键词定义构造函数的的方法和属性:

class Student {
  constructor() {
    console.log("I'm a student.");
  }
 
  study() {
    console.log('study!');
  }
 
  static read() {
    console.log("Reading Now.");
  }
}
 
console.log(typeof Student); // function
let stu = new Student(); // "I'm a student."
stu.study(); // "study!"
stu.read(); // "Reading Now."
로그인 후 복사

类中的继承和超集:

class Phone {
  constructor() {
    console.log("I'm a phone.");
  }
}
 
class MI extends Phone {
  constructor() {
    super();
    console.log("I'm a phone designed by xiaomi");
  }
}
 
let mi8 = new MI();
로그인 후 복사

extends 允许一个子类继承父类,需要注意的是,子类的constructor 函数中需要执行 super() 函数。 当然,你也可以在子类方法中调用父类的方法,如super.parentMethodName()。 在 这里 阅读更多关于类的介绍。

有几点值得注意的是:

  • 类的声明不会提升(hoisting),如果你要使用某个 Class,那你必须在使用之前定义它,否则会抛出一个 ReferenceError 的错误
  • 在类中定义函数不需要使用 function 关键词

11、模块化(Module)

ES5不支持原生的模块化,在ES6中模块作为重要的组成部分被添加进来。模块的功能主要由 export 和 import 组成。每一个模块都有自己单独的作用域,模块之间的相互调用关系是通过 export 来规定模块对外暴露的接口,通过import来引用其它模块提供的接口。同时还为模块创造了命名空间,防止函数的命名冲突。

导出(export)

ES6允许在一个模块中使用export来导出多个变量或函数。

导出变量

//test.js
export var name = 'Rainbow'
로그인 후 복사

心得:ES6不仅支持变量的导出,也支持常量的导出。 export const sqrt = Math.sqrt;//导出常量

ES6将一个文件视为一个模块,上面的模块通过 export 向外输出了一个变量。一个模块也可以同时往外面输出多个变量。

 //test.js
 var name = 'Rainbow';
 var age = '24';
 export {name, age};
로그인 후 복사

导出函数

// myModule.js
export function myModule(someArg) {
  return someArg;
}
로그인 후 복사

导入(import)

定义好模块的输出以后就可以在另外一个模块通过import引用。

import {myModule} from 'myModule';// main.js
import {name,age} from 'test';// test.js
로그인 후 복사

心得:一条import 语句可以同时导入默认函数和其它变量。import defaultMethod, { otherMethod } from 'xxx.js';

【相关推荐:javascript视频教程web前端

위 내용은 es6의 새로운 기능은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

es6 또는 es7에 비동기가 있습니까? es6 또는 es7에 비동기가 있습니까? Jan 29, 2023 pm 05:36 PM

비동기는 es7입니다. async 및 wait는 ES7에 새로 추가된 기능이며 비동기 작업을 위한 솔루션입니다. async/await는 공동 모듈 및 생성기 기능을 위한 구문 설탕이라고 할 수 있으며, 더 명확한 의미로 js 비동기 코드를 해결합니다. 이름에서 알 수 있듯이 async는 "비동기"를 의미합니다. async는 async와 wait 사이에 엄격한 규칙이 있음을 선언하는 데 사용되며, wait는 비동기 함수로만 작성될 수 있습니다.

es5 및 es6에서 배열 중복 제거를 구현하는 방법 es5 및 es6에서 배열 중복 제거를 구현하는 방법 Jan 16, 2023 pm 05:09 PM

es5에서는 for 문과 indexOf() 함수를 사용하여 배열 중복 제거를 수행할 수 있습니다. 구문 "for(i=0;i<array length;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}". es6에서는 스프레드 연산자 Array.from() 및 Set을 사용하여 중복을 제거할 수 있습니다. 먼저 배열을 Set 객체로 변환하여 중복을 제거한 다음 스프레드 연산자 또는 Array.from() 함수를 사용하여 제거해야 합니다. Set 개체를 다시 배열로 변환합니다.

PHP 8.3 출시: 새로운 기능 한눈에 보기 PHP 8.3 출시: 새로운 기능 한눈에 보기 Nov 27, 2023 pm 12:52 PM

PHP8.3 출시: 새로운 기능 개요 기술이 계속 발전하고 변화가 필요함에 따라 프로그래밍 언어는 지속적으로 업데이트되고 개선됩니다. 웹 개발에 널리 사용되는 스크립팅 언어인 PHP는 개발자에게 더욱 강력하고 효율적인 도구를 제공하기 위해 지속적으로 개선되어 왔습니다. 최근 출시된 PHP 8.3 버전에는 오랫동안 기다려온 많은 새로운 기능과 개선 사항이 포함되어 있습니다. 이러한 새로운 기능에 대한 개요를 살펴보겠습니다. null이 아닌 속성의 초기화 이전 버전의 PHP에서는 클래스 속성에 명시적으로 값이 할당되지 않은 경우 해당 값은

es6 가져오기가 변수를 승격시키나요? es6 가져오기가 변수를 승격시키나요? Jan 18, 2023 pm 07:44 PM

ES6 가져오기로 인해 변수 승격이 발생합니다. 변수 호이스팅은 변수 선언을 해당 범위의 시작 부분으로 호이스팅하는 프로세스입니다. Node.js는 컴파일 단계와 실행 단계를 거쳐야 하며, 모든 변수 선언은 미리 수집되고 변수는 선언되지만 다른 명령문은 순서가 변경되지 않습니다. 따라서 컴파일 단계에서 첫 번째 단계는 이미 있습니다. 실행되며, 두 번째 부분은 실행 단계에서 명령문이 실행될 때만 실행됩니다.

PHP8의 새로운 기능을 배우고 최신 기술에 대한 심층적인 이해를 얻을 수 있는 가이드 PHP8의 새로운 기능을 배우고 최신 기술에 대한 심층적인 이해를 얻을 수 있는 가이드 Dec 23, 2023 pm 01:16 PM

최신 기술을 익히는 데 도움이 되는 PHP8의 새로운 기능에 대한 심층 분석입니다. 시간이 지남에 따라 PHP 프로그래밍 언어는 지속적으로 발전하고 개선되었습니다. 최근 출시된 PHP8 버전은 개발자에게 많은 흥미로운 새로운 기능과 개선 사항을 제공하여 개발 작업에 더 많은 편의성과 효율성을 제공합니다. 이 기사에서는 PHP8의 새로운 기능을 심층적으로 분석하고 이러한 최신 기술을 더 잘 익히는 데 도움이 되는 특정 코드 예제를 제공합니다. JIT 컴파일러 PHP8에는 JIT(Just-In-Time) 컴파일이 도입되었습니다.

es6의 배열에 항목 수를 확인하는 방법 es6의 배열에 항목 수를 확인하는 방법 Jan 18, 2023 pm 07:22 PM

ES6에서는 배열 객체의 길이 속성을 사용하여 배열에 있는 항목 수를 확인할 수 있습니다. 즉, 배열의 요소 수를 가져오는 데 이 속성은 배열의 요소 수를 반환할 수 있습니다. "array.length" 문을 사용합니다. 배열 객체의 요소 수, 즉 길이 값을 반환합니다.

es6 콜백 지옥이란 무엇입니까? es6 콜백 지옥이란 무엇입니까? Feb 14, 2023 pm 02:58 PM

es6에서 콜백 지옥은 서로 중첩된 다중 계층 콜백 함수입니다. 즉, 콜백 함수에 중첩된 콜백 함수입니다. 이는 코드의 순차적 실행을 달성하기 위해 발생하는 작업이므로 코드를 매우 가독성이 나쁘고 어렵게 만듭니다. 나중에 유지하기 위해. Promise는 es6에서 콜백 지옥 문제를 해결하기 위해 사용됩니다.

es6에서 문자열을 대문자로 변환하는 방법 es6에서 문자열을 대문자로 변환하는 방법 Feb 15, 2023 am 11:56 AM

변환 방법: 1. toUpperCase() 함수를 사용하여 문자열을 대문자로 변환합니다. 구문은 "string.toUpperCase()"입니다. 2. toLocaleUpperCase() 함수를 사용하여 문자열을 대문자로 변환합니다. 구문은 "string. toLocaleUpperCase()"; 3. , Slice(), toUpperCase(), toLowerCase() 함수와 문자열 접합 문자 "+"를 사용하여 첫 글자를 대문자로 설정합니다.

See all articles