摘要:變量和常量的聲明一般的聲明,不在函數(shù)內(nèi)就是全局變量,值可以是基本和引用值,可以隨時(shí)修改和刪除語(yǔ)法同一個(gè)作用域的聲明,只要有同樣的聲明都會(huì)報(bào)錯(cuò),只能修改值語(yǔ)法,和一樣,但是不能更改值以上兩個(gè)語(yǔ)法都不存在變量提升的效果直接使用的話,直接引用錯(cuò)誤
變量和常量的聲明
var a = 34; //一般的聲明,不在函數(shù)內(nèi)就是全局變量,值可以是基本和引用值,可以隨時(shí)修改和刪除
let 語(yǔ)法,同一個(gè)作用域的聲明,只要有同樣的聲明都會(huì)報(bào)錯(cuò)(Uncaught SyntaxError),只能修改值
let newa = 34;
const語(yǔ)法,和let一樣,但是不能更改值;
const b = 34;
以上兩個(gè)語(yǔ)法都不存在變量提升的效果;直接使用的話,直接引用錯(cuò)誤;
console.log(newb); //ReferenceError let newb = 34;
TDZ 暫時(shí)性死區(qū),只要在同一作用域內(nèi),包括函數(shù)和塊級(jí)全局,let 和const 就會(huì)綁定在這個(gè)區(qū)域,在這之前使用的話,都會(huì)報(bào)錯(cuò),直到聲明過(guò)后
使用let和const或者var在塊級(jí)作用域內(nèi),會(huì)把變量限定在代碼塊內(nèi),無(wú)法突破;
{ 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è)代碼塊,可以無(wú)限制嵌套{{{{ }}}},
全局對(duì)象,在ES5之前,全局屬性和方法是屬于window的屬性和方法,使用,window.valiable,都訪問(wèn)到,但是在es6的語(yǔ)法里,雖然在在全局聲明的變量和對(duì)象都可以直接訪問(wèn),和之前還是有區(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ì)保存原來(lái)的值??
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的值只能訪問(wèn)到 i = 0;無(wú)法突破作用域,得到其他的值,但是確記住了此時(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語(yǔ)法針對(duì)for ,for-of for-in 特殊規(guī)范的,在其他地方,對(duì)同一個(gè)let 變量賦值的話,會(huì)報(bào)語(yǔ)法錯(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;ilet 和const在函數(shù)使用默認(rèn)值的時(shí)候也有一些行為規(guī)則
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/89017.html
摘要:聲明的變量只在命令所在的代碼塊內(nèi)有效使用命令聲明的變量在解析的過(guò)程中不會(huì)被預(yù)解析也就是不存在變量提升了使用命令聲明的變量會(huì)存在暫時(shí)性死區(qū)不同于全局變量不再是的屬性了會(huì)報(bào)錯(cuò)出現(xiàn)了暫時(shí)性死區(qū)使用這個(gè)變量不允許再重復(fù)聲明聲明過(guò)的變量也不可以再使用 let 1、let聲明的變量只在命令所在的代碼塊內(nèi)有效2、使用let命令聲明的變量在解析的過(guò)程中不會(huì)被預(yù)解析(也就是不存在變量提升了)3、使用le...
摘要:允許按照一定的模式,從數(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...
摘要:之小白初入江湖超文本標(biāo)記語(yǔ)言簡(jiǎn)稱是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。描述了一個(gè)網(wǎng)站的結(jié)構(gòu)語(yǔ)義隨著線索的呈現(xiàn),使之成為一種標(biāo)記語(yǔ)言而非編程語(yǔ)言。是塊級(jí)元素,是行內(nèi)元素。層疊樣式表簡(jiǎn)稱是一種用來(lái)為結(jié)構(gòu)化文檔如添加樣式的工具。 HTML & CSS之小白初入江湖 1. HTML 超文本標(biāo)記語(yǔ)言(HyperText Markup Language, 簡(jiǎn)稱HTML)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言...
摘要:之小白初入江湖超文本標(biāo)記語(yǔ)言簡(jiǎn)稱是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。描述了一個(gè)網(wǎng)站的結(jié)構(gòu)語(yǔ)義隨著線索的呈現(xiàn),使之成為一種標(biāo)記語(yǔ)言而非編程語(yǔ)言。是塊級(jí)元素,是行內(nèi)元素。層疊樣式表簡(jiǎn)稱是一種用來(lái)為結(jié)構(gòu)化文檔如添加樣式的工具。 HTML & CSS之小白初入江湖 1. HTML 超文本標(biāo)記語(yǔ)言(HyperText Markup Language, 簡(jiǎn)稱HTML)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言...
摘要:然而,這一次,將有三個(gè)作為前三個(gè)命令行參數(shù)提供。編寫一個(gè)時(shí)間服務(wù)器服務(wù)器監(jiān)聽(tīng)一個(gè)端口,以獲取一些連接,這個(gè)端口會(huì)經(jīng)由第一個(gè)命令行參數(shù)傳遞給程序。 learnyounode 13課總結(jié)(下) 前斷時(shí)間較為忙碌,所以learnyounode的下半部分總結(jié)一直拖到了現(xiàn)在,罪過(guò)罪過(guò)。那么今天我就將8-13課的內(nèi)容整理出來(lái),將后半部分的知識(shí)稍微梳理一下。 這里推薦一篇learnyounode...
閱讀 2384·2021-11-24 10:33
閱讀 1451·2019-08-30 15:43
閱讀 3339·2019-08-29 17:24
閱讀 3552·2019-08-29 14:21
閱讀 2284·2019-08-29 13:59
閱讀 1791·2019-08-29 11:12
閱讀 2894·2019-08-28 18:00
閱讀 1926·2019-08-26 12:17