首頁 >web前端 >Vue.js >es6的class有沒有變數提升

es6的class有沒有變數提升

WBOY
WBOY原創
2022-04-08 18:43:592241瀏覽

es6的class沒有變數提升。在es5中class存在變數提升,可以先使用再定義類,而在es6中,不會把類的聲明提升到頭部,先使用在定義的話會產生報錯,因此不能先使用再定義,es6的class也就沒有變數提升。

es6的class有沒有變數提升

本文操作環境:windows10系統、Vue2.9.6版,DELL G3電腦。

es6的class有沒有變數提升

class不存在變數提升

因為ES6不會把類別的宣告提升到程式碼頭部,所以需要先定義再使用。

但是ES5就不一樣,ES5存在變數提升,可以先使用,然後再定義。

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

類別不存在變數提升(hoist),這一點與 ES5 完全不同。

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

 上面程式碼中,ES6  Foo類別使用在前,定義在後,這樣會報錯,因為 ES6 不會把類別的宣告提升到程式碼頭部。這種規定的原因與下文要提到的繼承有關,必須確保子類別在父類別之後定義。

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

 上面的程式碼不會報錯,因為Bar繼承Foo的時候,Foo已經有定義了。但是,如果有class的提升,上面程式碼就會報錯,因為class會被提升到程式碼頭部,而let指令是不提升的,所以導致Bar繼承Foo的時候,Foo還沒定義。

【相關推薦:《vue.js教學》】

以上是es6的class有沒有變數提升的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn