var? let const 區(qū)別
圖1,分別顯示 a輸出10,b輸出?b is not defined,c輸出Assignment to constant variable(變量無(wú)法復(fù)制)缴啡。var就相當(dāng)于一個(gè)全局定義,let相當(dāng)于一個(gè)局部定義,而const相當(dāng)于一個(gè)常量
圖2 a會(huì)輸出undefined ,局部先用局部定義损痰,var a=2相當(dāng)于我在注釋的地方先定義了一個(gè)var a
圖3 a會(huì)輸出 Cannot access 'a' before initialization 在用域中可以理解成{}中如果使用定義的值在作用域中有都是優(yōu)先使用作用域中的
圖4 使用var可以重復(fù)定義,a會(huì)輸出2酒来,而let不可以重復(fù)定義,b會(huì)報(bào)錯(cuò)Identifier 'b' has already been declared不可以重復(fù)定義
圖5 i會(huì)輸出三次aa卢未,其實(shí)()也是作用域中,j只會(huì)輸出一次aa
圖6 const與let 類似區(qū)別主要在于無(wú)法賦值堰汉,但是使用push之類數(shù)組或者對(duì)象辽社,如果不能修改可以使用Object.freeze
圖7 在循環(huán)中使用定時(shí)器,var會(huì)先打印aa翘鸭,后打印5次5滴铅,而let會(huì)先打印bb后打印0,1,2,3,4
?數(shù)組解構(gòu)賦值
? ? ? ? ?let [a,b,c]=[1,2,3]
? ? ? ? ?console.log(a,b,c) //輸入1 2 3
?JSON解構(gòu)賦值
? ? ? let josn={
? ? ? ? ? ?name:'a',
? ? ? ? ? ? ?age:10,
? ? ? ? ? ? job:'b'
? ? ? ? }
? ? ? ? let {name,age,job}=josn
? ? ? ? ?console.log(name,age,job)// 輸出a 10 b
? ? ? ? ????let {name,age,job:d}=josn
? ? ? ? 別名
? ? ? ? ?console.log(name,age,d)// 輸出a 10 b
? ? ? ? 數(shù)組給默認(rèn)值
? ? ? ? ?let [a,b,c='無(wú)數(shù)據(jù)']=['aa','bb']
? ? ? ? ?console.log(a,b,c) //輸出aa bb 無(wú)數(shù)據(jù)
? ? ? ? ?let [a,b,c='無(wú)數(shù)據(jù)']=['aa','bb',undefined]
? ? ? ? ?console.log(a,b,c) //輸出aa bb 無(wú)數(shù)據(jù)
? ? ? ? ?let [a,b,c='無(wú)數(shù)據(jù)']=['aa','bb',null]
? ? ? ? ?console.log(a,b,c) //輸出aa bb null
? ? ? ? ?JSON給默認(rèn)值
? ? ? ? ?let {a,b}={a:'aa',b:'bb'}
? ? ? ? ?console.log(a,b) //輸出 aa bb
? ? ? ? ?let a;
? ? ? ? ?{a}={a:'aa',b:'bb'}
? ? ? ? ?console.log(a) //報(bào)錯(cuò)作用域
? ? ? ? ?解決方式加一層括號(hào)
? ? ? ? ?({a}={a:'aa',b:'bb'})
? ? ? ? ?交換
? ? ? ? ?let a=1;
? ? ? ? ?let b=2;
? ? ? ? ?[a,b]=[b,a]
? ? ? ? ?console.log(a,b)//輸出2 1
? ? ? ? ?function aa({a,b='無(wú)'}){
? ? ? ? ? ? ?console.log(a,b)
? ? ? ? }
? ? ? ? aa({
? ? ? ? ? ?a:1
? ? ? ? })
? ? ? ? ?//輸出1 "無(wú)"
? ? ? ? 字符串模板
? ? ? ? ?let a='a'
? ? ? ? ? let b='b'
? ? ? ? ?let str='第一個(gè)'+a+'第二個(gè)'+b
? ? ? ? ?console.log(str) //輸出第一個(gè)a第二個(gè)b
? ? ? ? ?let str=`第一個(gè)${a}第二個(gè)人$就乓`
? ? ? ? console.log(str)//輸出第一個(gè)a第二個(gè)b
? ? ? ? ?字符串?dāng)?shù)組查找
? ? ? ? ?includes使用
? ? ? ? ?let aa=[1,2,3]
? ? ? ? console.log(aa.includes(1))//輸出true
? ? ? ? ?let aa='aa bb cc'
? ? ? ? ?console.log(aa.includes('aa'))//輸出true
? ? ? ? console.log(aa.includes('a'))//輸出true只會(huì)找回有沒(méi)有
? ? ? ? ?indexOf使用
? ? ? ? ?let aa=[1,2,3]
? ? ? ? ?console.log(aa.indexOf(1))//輸出0
? ? ? ? let aa='aa bb cc'
? ? ? ? ?console.log(aa.indexOf('a'))//輸出0返回下標(biāo)位置
? ? ? ? ?console.log(aa.indexOf('s'))//沒(méi)有找到返回-1
? ? ? ? ?endsWith 已什么結(jié)尾有返回true 沒(méi)有返回false
? ? ? ? ?let str='abc.png'
? ? ? ? ?console.log(str.endsWith('png')) //輸出true
? ? ? ? ?startsWith 已什么開(kāi)始有返回true 沒(méi)有返回false
? ? ? ? ?let str='abc.png'
? ? ? ? ?console.log(str.startsWith('abc')) //輸出true
? ? ? ? ?repeat重復(fù)多少次
? ? ? ? ?let str ='aa'
? ? ? ? console.log(str.repeat(20))//輸出20個(gè)aa
? ? ? ? ?padStart 從前往后字符串填充
? ? ? ? console.log('a'.padStart(2,'b')) //輸出ba? 2為a與b總長(zhǎng)度b為填充的東西
? ? ? ? ?padEnd 從后往前