es6宣告變數有幾種方法

2022-03-07 19:01:25

es6宣告變數有6種方法:1、用關鍵字var宣告變數;2、用關鍵字function宣告變數;3、用關鍵字const宣告變數;4、用關鍵字let宣告變數;5、用關鍵字class宣告變數;6、用關鍵字import宣告變數。

本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

ES5 只有兩種宣告變數的方法:var命令和function命令。

ES6 除了新增let和const命令,還有兩種宣告變數的方法:import命令和class命令。

所以,ES6 一共有 6 種宣告變數的方法。

1、用關鍵字var宣告變數

var a ;  //undefinedvar b = 1;
  • var定義的變數可以修改,如果不初始化會輸出undefined,不會報錯
  • var 宣告的變數在window上,用let或者const去宣告變數,這個變數不會被放到window上
  • 很多語言中都有塊級作用域,但JS沒有,它使用var宣告變數,以function來劃分作用域,大括號「{}」 卻限定不了var的作用域,因此用var宣告的變數具有變數提升的效果
  • var 宣告的變數作用域是全域性的或者是函數級的

2、用關鍵字function宣告變數

function add(a) {
  var sum = a + 1;
  return sum;
}
  • 宣告了一個名為 add的新變數,併為其分配了一個函數定義
  • {}之間的內容被分配給了 add
  • 函數內部的程式碼不會被執行,只是儲存在變數中以備將來使用

3、用關鍵字const宣告變數

const a;     //報錯,必須初始化const b = 1;
  • const定義的變數不可以修改,而且必須初始化
  • 該變數是個全域性變數,或者是模組內的全域性變數
  • 如果一個變數只有在宣告時才被賦值一次,永遠不會在其它的程式碼行裡被重新賦值,那麼應該使用const,但是該變數的初始值有可能在未來會被調整(常變數)
  • 建立一個唯讀常數,在不同瀏覽器上表現為不可修改;建議申明後不修改;擁有塊級作用域
  • const 代表一個值的常數索引 ,也就是說,變數名字在記憶體中的指標不能夠改變,但是指向這個變數的值可能 改變
  • const定義的變數不可修改,一般在require一個模組的時候用或者定義一些全域性常數
  • 可以在全域性作用域或者函數內宣告常數,但是必須初始化常數

  • 常數不能和它所在作用域內其它變數或者函數擁有相同名稱

4、用關鍵字let宣告變數

let a;  //undefinedlet b = 1; 
function add(b) {
  let sum = b + 1;
  return sum;
}
let c = add(b);
  • 需要」javascript 嚴格模式」:'use strict';
  • 不存在變數提升
  • 不允許重複宣告
  • let宣告的變數作用域是在塊級域中,函數內部使用let定義後,對函數外部無影響(塊級作用域)
  • 可以在宣告變數時為變數賦值,預設值為undefined,也可以稍後在指令碼中給變數賦值,在生命前無法使用(暫時死區)

5、用關鍵字class宣告變數

關於class,後期我會單獨寫一篇文章,詳細的介紹一下,這裡就簡單說一下: 首先通過看ES5中的建構函式,然後再用ES6的class去實現:

// ES5寫法 :
  function fun ( x, y ){
    this.x = x;
    this.y = y;
  };
  fun.prototype.GetHair = function(){
    return `${this.x}掉了兩根頭髮,${this.y}說俺也一樣!`;
  };
  let setHair = new fun('小明','老王');
  console.log(setHair.GetHair()); // 小明掉了兩根頭髮,老王說俺也一樣!

再來看一下ES6的class寫法:

 class Interest {
    constructor( x, y, e, z ){
      this.x = x;
      this.y = y;
      this.e = e;
      this.z = z;
    }
    MyInterest(){
      let arr = [];
      console.log(`我會${[...arr,this.x,this.y,this.e,this.z]}!`);
    }
  }
  let GetInterest = new Interest('唱','跳','rap','籃球');
  console.log(GetInterest.MyInterest());  //我會唱,跳,rap,籃球!

ES6 的class可以看作只是一個語法糖,它的絕大部分功能,ES5 都可以做到,新的class寫法只是讓物件原型的寫法更加清晰、更像物件導向程式設計的語法而已,constructor方法就是構造方法,而this關鍵字則代表範例物件。也就是ES5 的建構函式Point,對應 ES6 的Point類的構造方法。

6、用關鍵字import宣告變數

import用於載入檔案,在大括號接收的是一個或多個變數名,這些變數名需要與你想要匯入的變數名相同。

舉個栗子:你想要匯入action.js檔案中的某一個變數,這個變數裡儲存了一段程式碼塊,所以你要寫成:import { Button } from 'action',這個時候,你就從action.js中獲取到了一個叫 Button 的變數,既然獲取到了,你就可以對Button裡的程式碼猥瑣欲為了

如果想為輸入的變數重新取一個名字,import命令要使用as關鍵字,將輸入的變數重新命名,比如:

import { NewButton as Button } from 'action.js';

上面的程式碼錶示從action.js檔案中,獲取一個變數名稱叫做Button的程式碼段,然後你又宣告了一個變數 NewButton ,將 Button 儲存在 NewButton

【相關推薦:、】

以上就是es6宣告變數有幾種方法的詳細內容,更多請關注TW511.COM其它相關文章!