成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

初入ES6-let和const以及代碼塊

wwolf / 1407人閱讀

摘要:變量和常量的聲明一般的聲明,不在函數(shù)內(nèi)就是全局變量,值可以是基本和引用值,可以隨時(shí)修改和刪除語法同一個(gè)作用域的聲明,只要有同樣的聲明都會(huì)報(bào)錯(cuò),只能修改值語法,和一樣,但是不能更改值以上兩個(gè)語法都不存在變量提升的效果直接使用的話,直接引用錯(cuò)誤

變量和常量的聲明

var a = 34;            //一般的聲明,不在函數(shù)內(nèi)就是全局變量,值可以是基本和引用值,可以隨時(shí)修改和刪除

let 語法,同一個(gè)作用域的聲明,只要有同樣的聲明都會(huì)報(bào)錯(cuò)(Uncaught SyntaxError),只能修改值

let newa = 34;

const語法,和let一樣,但是不能更改值;

const b = 34;

以上兩個(gè)語法都不存在變量提升的效果;直接使用的話,直接引用錯(cuò)誤;

console.log(newb);        //ReferenceError
let newb = 34;

TDZ 暫時(shí)性死區(qū),只要在同一作用域內(nèi),包括函數(shù)和塊級(jí)全局,let 和const 就會(huì)綁定在這個(gè)區(qū)域,在這之前使用的話,都會(huì)報(bào)錯(cuò),直到聲明過后

使用let和const或者var在塊級(jí)作用域內(nèi),會(huì)把變量限定在代碼塊內(nèi),無法突破;

{
typeof g;        //ReferenceError
typeof v;        //ReferenceError
typeof d;        //undefined
let g = 34;
const v = 3;
var d = 4;
};
typeof g;        //undefined
typeof v;        //undefined
typeof d;        //undefined

需要注意的是const變量的值是引用值的話,引用值的指針不變,就可以添加屬性和方法,但是不能從重新指定對(duì)象引用值

const obj  = [];//聲明一個(gè)常量對(duì)象
obj.name = "obama"; //obama
obj.name = "bush"    //bush;
obj = {}    // typeError

使用大括號(hào){}相當(dāng)于聲明了一個(gè)代碼塊,可以無限制嵌套{{{{ }}}},

全局對(duì)象,在ES5之前,全局屬性和方法是屬于window的屬性和方法,使用,window.valiable,都訪問到,但是在es6的語法里,雖然在在全局聲明的變量和對(duì)象都可以直接訪問,和之前還是有區(qū)別的

var a = 45;
let b = 23;
window.a   ->45;
window.b  ->undefined; 

循環(huán)函數(shù)

for(var i = 0 ;i<10 ;i++){
    console.log(i);
}
//順序輸出0,,,,,9;
//此時(shí)console.log(i) ->10;i為全局變量;
var arr = [];
for(var i = 0 ;i<5 ;i++){
        arr.push(function(){return i})
}
//此時(shí)arr數(shù)組里面有5個(gè)函數(shù)function(){return i };
//修改函數(shù)
for(var i = 0 ;i<5 ;i++){
    arr.push((function(i){return i})(i))
};
//執(zhí)行
var i = 0;
arr.push();//此函數(shù)只會(huì)保存括號(hào)里的值,可以是任何值,函數(shù)也行,不一定是數(shù)值;
(function(){function(){return i})() //IIFE 此時(shí)的i值為0;輸出0,不立即執(zhí)行的話就是普通函數(shù);
arr.push(0);//arr ->[0];
// .
// .
// .
 var i = 4;
arr.push();
(function(){function(){return i})() 
arr.push(4);//arr ->[0,1,2,3,4];
var i = 5;
i <5 //false;   

關(guān)于閉包,

為何let會(huì)保存原來的值??

var arr = [];
for(let i =0;i<5;i++){
    arr.push(function(){console.log(i)})
};

//每次迭代

{ let i = 0; arr[0] = function(){console.log(i)} }    //此時(shí)因?yàn)閘et綁定在塊級(jí)作用域,注意此處的{ };i的值只能訪問到 i = 0;無法突破作用域,得到其他的值,但是確記住了此時(shí)的i值,類似閉包函數(shù),而且不會(huì)改變??!
{ let i =1; arr[1] = function(){console.log(i)} }    
{ let i = 2; arr[2] = function(){console.log(i)} }    
{ let i =3; arr[3] = function(){console.log(i)} }    
{ let i = 4; arr[4] = function(){console.log(i)} }    

//let 這樣的行為,并不會(huì)報(bào)錯(cuò)是因?yàn)镋S6語法針對(duì)for ,for-of for-in 特殊規(guī)范的,在其他地方,對(duì)同一個(gè)let 變量賦值的話,會(huì)報(bào)語法錯(cuò)誤
let i = 0;
let i = 1    //報(bào)錯(cuò)

let和const對(duì)于在循環(huán)中新的綁定不會(huì)報(bào)錯(cuò)對(duì)const修改值會(huì)報(bào)錯(cuò),但綁定不會(huì)

const arr = ["a","b","c"];
const obj = {
    name:"obama",
    age :73
}
for(let i = 0;i

let 和const在函數(shù)使用默認(rèn)值的時(shí)候也有一些行為規(guī)則

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89017.html

相關(guān)文章

  • es6-let const

    摘要:聲明的變量只在命令所在的代碼塊內(nèi)有效使用命令聲明的變量在解析的過程中不會(huì)被預(yù)解析也就是不存在變量提升了使用命令聲明的變量會(huì)存在暫時(shí)性死區(qū)不同于全局變量不再是的屬性了會(huì)報(bào)錯(cuò)出現(xiàn)了暫時(shí)性死區(qū)使用這個(gè)變量不允許再重復(fù)聲明聲明過的變量也不可以再使用 let 1、let聲明的變量只在命令所在的代碼塊內(nèi)有效2、使用let命令聲明的變量在解析的過程中不會(huì)被預(yù)解析(也就是不存在變量提升了)3、使用le...

    xinhaip 評(píng)論0 收藏0
  • 初入ES6-解構(gòu)

    摘要:允許按照一定的模式,從數(shù)組或者對(duì)象中取值,對(duì)變量進(jìn)行賦值數(shù)組解構(gòu)的對(duì)象要具有接口也就是可以遍歷按照對(duì)應(yīng)的關(guān)系進(jìn)行取值如果解構(gòu)不成功變量的值就是如果右側(cè)的數(shù)值不是數(shù)組,就會(huì)報(bào)錯(cuò)注意字符串是可以遍歷的也可以有默認(rèn)值只要被賦值的變量不是嚴(yán)格就是默 ES6允許按照一定的模式,從數(shù)組或者對(duì)象中取值,對(duì)變量進(jìn)行賦值 數(shù)組 var a = 2; var b = [1,2]; var c = this...

    FullStackDeveloper 評(píng)論0 收藏0
  • HTML & CSS之小白初入江湖

    摘要:之小白初入江湖超文本標(biāo)記語言簡(jiǎn)稱是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。描述了一個(gè)網(wǎng)站的結(jié)構(gòu)語義隨著線索的呈現(xiàn),使之成為一種標(biāo)記語言而非編程語言。是塊級(jí)元素,是行內(nèi)元素。層疊樣式表簡(jiǎn)稱是一種用來為結(jié)構(gòu)化文檔如添加樣式的工具。 HTML & CSS之小白初入江湖 1. HTML 超文本標(biāo)記語言(HyperText Markup Language, 簡(jiǎn)稱HTML)是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言...

    fai1017 評(píng)論0 收藏0
  • HTML & CSS之小白初入江湖

    摘要:之小白初入江湖超文本標(biāo)記語言簡(jiǎn)稱是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。描述了一個(gè)網(wǎng)站的結(jié)構(gòu)語義隨著線索的呈現(xiàn),使之成為一種標(biāo)記語言而非編程語言。是塊級(jí)元素,是行內(nèi)元素。層疊樣式表簡(jiǎn)稱是一種用來為結(jié)構(gòu)化文檔如添加樣式的工具。 HTML & CSS之小白初入江湖 1. HTML 超文本標(biāo)記語言(HyperText Markup Language, 簡(jiǎn)稱HTML)是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言...

    crossoverJie 評(píng)論0 收藏0
  • nodejs 初入--learnyounode課程總結(jié)(下)

    摘要:然而,這一次,將有三個(gè)作為前三個(gè)命令行參數(shù)提供。編寫一個(gè)時(shí)間服務(wù)器服務(wù)器監(jiān)聽一個(gè)端口,以獲取一些連接,這個(gè)端口會(huì)經(jīng)由第一個(gè)命令行參數(shù)傳遞給程序。 learnyounode 13課總結(jié)(下) 前斷時(shí)間較為忙碌,所以learnyounode的下半部分總結(jié)一直拖到了現(xiàn)在,罪過罪過。那么今天我就將8-13課的內(nèi)容整理出來,將后半部分的知識(shí)稍微梳理一下。 這里推薦一篇learnyounode...

    shusen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<