Nodejs與ES6系列1:變量聲明

一、聲明變量

在JS當中一個變量的做用域(scope)是程序中定義這個變量的區域。變量分爲兩類,全局(global)的和局部的。其中全局變量的做用域是全局性的,即在JavaScript代碼中,它到處都有定義。而在函數以內聲明的變量,就只在函數體內部有定義。它們是局部變量,做用域是局部性的。函數的參數也是局部變量,它們只在函數體內部有定義。javascript

1.1 var變量聲明方式

在javascript中var關鍵字聲明變量具備兩個特色,第一變量提高(對變量的定義會默認提早至函數開始處),第二變量沒有塊做用域只有函數做用域。java

(function scope() {
    var i = 10;
    (function innerscope() {
        console.log(i);
        var i = 10;
    })();
})();
=====
undefined

代碼1.1.1中,第二個變量i的定義提早至函數innerscope開始位置,所以在console.log(i)的時候i並無賦值,所以輸出結果爲undefined。函數

(function scope() {
    if(true){
        var i =10;
    }
    console.log(i);
})();
=====
10

代碼1.1.2中,在if塊中定義的變量i在if塊外函數內依然能夠使用,所以輸出結果10.code

1.2 let聲明變量方式

在ES6的標準中,新引入了let關鍵字用於聲明變量,let關鍵字與var關鍵字不一樣在於let爲塊做用域。 將1.1.2中代碼定義變爲let後,程序則不能執行。ip

代碼 1.1.2

(function scope() {
    if(true){
        let i =10;
    }
    console.log(i);
})();
=====
i is not defined

1.3 const聲明變量方式

const用來聲明常量,一旦聲明,其值就不能改變,而且const定義的變量爲塊做用域,好比1.3.1和1.3.2這樣編寫代碼是會出錯的。作用域

代碼1.3.1

(function scope() {
    if(true){
        const pi =3.14;
    }
    console.log(pi);
})();

=====
pi is not defined

代碼1.3.2

(function scope() {
    const pi = 3.14;
    pi=3;
    console.log(pi);
})();
相關文章
相關標籤/搜索