>  기사  >  웹 프론트엔드  >  es6 클래스에 변수 승격이 있나요?

es6 클래스에 변수 승격이 있나요?

WBOY
WBOY원래의
2022-04-08 18:43:592177검색

ES6 클래스에는 변수 승격이 없습니다. es5에서는 클래스에 변수 승격이 있습니다. 먼저 사용한 다음 클래스를 정의하면 됩니다. es6에서는 클래스 선언을 정의에서 먼저 사용하면 오류가 보고됩니다. 따라서 먼저 사용하고 정의할 수 없습니다. es6 클래스에는 변수 승격이 없습니다.

es6 클래스에 변수 승격이 있나요?

이 기사의 운영 환경: Windows 10 시스템, Vue 버전 2.9.6, DELL G3 컴퓨터.

ES6 클래스에는 변수 승격이 있나요?

클래스에는 변수 승격이 없습니다

ES6는 클래스 선언을 코드 선두로 승격시키지 않기 때문에 먼저 정의한 후 사용해야 합니다.

하지만 ES5는 다릅니다. ES5에는 먼저 사용하고 정의할 수 있는 변수 승격이 있습니다.

// ES5可以先使用再定义,存在变量提升
new A();
function A(){
}
// ES6不能先使用再定义,不存在变量提升 会报错
new B(); // B is not defined
class B{
}

클래스에는 ES5와 완전히 다른 변수 호이스트(호이스트)가 없습니다.

new Foo(); // ReferenceError
class Foo {}

위 코드에서는 ES6 Foo 클래스가 먼저 사용되고 나중에 정의됩니다. ES6에서는 클래스 선언을 코드 헤드로 승격시키지 않기 때문에 오류가 발생합니다. 이 규정을 적용한 이유는 아래에 언급된 상속과 관련이 있습니다. 하위 클래스가 상위 클래스 다음에 정의되는지 확인해야 합니다.

{
  let Foo = class {};
  class Bar extends Foo {
  }
}

Bar가 Foo를 상속할 때 Foo가 이미 정의되어 있으므로 위 코드는 오류를 보고하지 않습니다. 그러나 클래스 승격이 있는 경우 위 코드는 오류를 보고합니다. 클래스는 코드의 선두로 승격되지만 let 명령은 승격되지 않으므로 Bar가 Foo를 상속할 때 Foo가 정의되지 않았기 때문입니다.

【관련 추천: "vue.js tutorial"】

위 내용은 es6 클래스에 변수 승격이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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