ES6 클래스에는 변수 승격이 없습니다. es5에서는 클래스에 변수 승격이 있습니다. 먼저 사용한 다음 클래스를 정의하면 됩니다. es6에서는 클래스 선언을 정의에서 먼저 사용하면 오류가 보고됩니다. 따라서 먼저 사용하고 정의할 수 없습니다. es6 클래스에는 변수 승격이 없습니다.
이 기사의 운영 환경: Windows 10 시스템, Vue 버전 2.9.6, DELL G3 컴퓨터.
클래스에는 변수 승격이 없습니다
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!