es6 let和const

1、let

一、let塊做用域html

if(true){
            var a=1;
            let b=2;
        }
        console.log("a:"+a);//a:1
        console.log("b:"+b);//Uncaught ReferenceError: b is not defined

二、let經常使用於for循環es6

  var a=[];
    for (let i = 0; i < 10; i++) {
        a[i] = function () {
            console.log(i);   //6 //變量i是let聲明的,當前的i只在本輪循環有效。因此每一次循環的i其實都是一個新的變量,因而最後輸出的是6
        };
    }
    a[6]();

三、typeof再也不是一個百分之百安全的操做安全

   console.log(typeof x);//undefined
   console.log(typeof y);//Uncaught ReferenceError: y is not defined
    var x=2;
    let y=3;

typeof運行時y還沒有聲明,因此報錯。babel

四、隱蔽的暫時性死區ide

    //正確
    function bar(x=2, y=x) {
        return [x, y];
    }
    console.log(bar());//[2,2]
//報錯
 function bar(x=y, y=2) {
        return [x, y];
    }
    console.log(bar());//Uncaught ReferenceError: y is not defined

五、不容許重複聲明函數

不能在函數內重複聲明參數學習

function bar(arg) {
        let arg;//Uncaught SyntaxError: Identifier 'arg' has already been declared
    }

 

 

2、const

一、const聲明的變量也是塊做用域,可是不能被屢次修改es5

let a=10;
        const b=20;
        console.log(a);
        console.log(b);
        a=100;
        b=200;//Uncaught TypeError: Assignment to constant variable.

 

二、const 聲明變量時必須賦值spa

const a;//Uncaught SyntaxError: Missing initializer in const declaration

三、const能夠指定爲對象指針

const常亮指向對象的指針不能變,對象自己是能夠改變的

let user={name:"starof",age:25};
        const LOVE_YOU=user;
        console.log(user);
        /*LOVE_YOU=1;//報錯*/
        user.age=18;
        console.log(user);

 

3、babel【update20170605】

下面代碼在es5中輸出inside,在es6中輸出outside。

若是肯定是在es5中仍是在es6中運行?能夠經過babel使其在es6中執行。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="js/browser.js"></script>
</head>
<body>
<script type="text/babel">
    function f() {
        console.log("outside");
    }
    (function () {
        if (true) {
            //重複 聲明f
            function f() {
                console.log("inside"); //babel解析爲es6因此輸出outside
            }
        }
        f();
    }())
</script>

 4、全局變量和全局對象的屬性【update20170605】

es6中規定:

var和function聲明的全局變量,依舊是全局對象的屬性

let,const聲明的全局變量不屬於全局對象的屬性

 

如下代碼輸出什麼結果?

let b=1;
console.log(window.b++);//NaN

 

 

 

 

本文做者starof,因知識自己在變化,做者也在不斷學習成長,文章內容也不定時更新,爲避免誤導讀者,方便追根溯源,請諸位轉載註明出處:http://www.cnblogs.com/starof/p/6919624.html有問題歡迎與我討論,共同進步。

相關文章
相關標籤/搜索