摘要:變量和常量的聲明一般的聲明,不在函數(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;ilet 和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
摘要:聲明的變量只在命令所在的代碼塊內(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...
摘要:允許按照一定的模式,從數(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)記語言簡(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)記語言...
摘要:之小白初入江湖超文本標(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)記語言...
摘要:然而,這一次,將有三個(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...
閱讀 2370·2021-11-24 10:33
閱讀 1436·2019-08-30 15:43
閱讀 3325·2019-08-29 17:24
閱讀 3532·2019-08-29 14:21
閱讀 2266·2019-08-29 13:59
閱讀 1775·2019-08-29 11:12
閱讀 2878·2019-08-28 18:00
閱讀 1903·2019-08-26 12:17