1. 程式人生 > 其它 >js中六種宣告變數的方式

js中六種宣告變數的方式

var 在ES5階段中,使用var具有以下特點: (1)沒有塊的概念,可以跨塊訪問,不能誇函式訪問; (2)存在變數提升,賦值不提升 (undefined)  let 在ES6階段新增,新增出塊的概念,新增塊級作用域,具有以下特點: (1)let宣告的變數只在它所在的程式碼塊有效; (2)let不會出現變數提升,需先聲明後使用,否則會報錯; (3)暫存性死區,在程式碼塊內,使用let使用變數之前,該變數都是不可用的; (4)不允許重複宣告 const 用於宣告一個只讀的常量,具有以下特點: (1)一旦宣告就必須立即初始化; (2)一旦宣告,常量值就不能改變(指的是記憶體地址不能改變,但指向的資料結構不受控制;通過 Object.freeze() 方法,使物件的原始屬性不可變, 但仍然可以更改巢狀物件); (3)塊作用域內有效; (4)不存在變數提升; (5)存在暫時性死區;  function
用於定義一個函式,具有以下特點: (1)函式聲明後 需要呼叫的時候 才能執行; (2)對支援ES5和ES6的瀏覽器環境在塊作用域內有一定區別,所以應避免在塊級作用域內宣告函式。  class ES6引入了class關鍵字,用來定義類。該寫法相比於物件原型的 方式具有以下特點: (1)相比於物件原型的方式寫法更清晰; (2)更像面向物件程式設計的語法(方便) ```JavaScript     class Calculate {     constructor(x, y) {       this.x = x;       this.y = y;     }       add() {       return this.x + this.y;     }   } ```  import
用於載入模組,然後輸出變數,具有以下特點: (1)import 命令接受一對大括號,其裡面的變數名必須與被匯入的模組對外介面的名稱相同; (2)用 as 關鍵字可將輸入的變數名重新命名; (3)import 命令輸入的變數都是隻讀的; (4)import 命令具有提升效果,會提升到整個模組的頭部,首先執行(因為import命令實在編譯階段執行的,在程式碼執行之前); (5)import  是靜態執行,不能使用表示式和變數; (6)import 會執行所載入的模組