Nodejs與ES6系列1:變量聲明


1、聲明變量

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

1.1 var變量聲明方式

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

(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.

1.2 let聲明變量方式

在ES6的標准中,新引入了let關鍵字用於聲明變量,let關鍵字與var關鍵字不同在於let為塊作用域。 將1.1.2中代碼定義變為let后,程序則不能執行。

代碼 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);
})();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM