摘要:總結(jié)擴(kuò)展運(yùn)算符該文章是初次涉獵做的筆記剛開(kāi)始簡(jiǎn)單的東西我就掉代碼運(yùn)行環(huán)境運(yùn)行腳手架只需要在寫(xiě)完代碼輸入就可以運(yùn)行關(guān)于的用法關(guān)于運(yùn)算符字符串模板字符串套變量判斷是否包含字符串是否包含開(kāi)頭是否包含結(jié)尾是否包含字符串自身復(fù)制參數(shù)是次數(shù)小數(shù)就取整數(shù)
ES6總結(jié) 擴(kuò)展運(yùn)算符
該文章是初次涉獵ES6做的筆記,剛開(kāi)始簡(jiǎn)單的東西我就pass掉
代碼運(yùn)行環(huán)境(運(yùn)行腳手架只需要在src/index.js寫(xiě)完代碼輸入npm run build就可以運(yùn)行)關(guān)于 ...的用法
let a=[1,2,3] b=[...a] b.push(6) console(b) ==>1,2,3,6關(guān)于rest運(yùn)算符
function a(a,...arg)==>a(1,2,3),arg=[2,3]字符串模板 字符串套變量
let a="china" let b=`i am from ${a},判斷是否包含字符串
and you?`
let searchWorld="am" let a="i am you" //是否包含,開(kāi)頭是否包含,結(jié)尾是否包含 a.include(searchWorld) a.startsWith(searchWorld) a.endsWith(searchWorld) //字符串自身復(fù)制,參數(shù)是次數(shù),小數(shù)就取整 console.log(a.repeat(3))數(shù)字判斷與擴(kuò)展 進(jìn)制(切記不是字符串)
//0B開(kāi)頭是二進(jìn)制標(biāo)志 let a = 0B0011 //打印3 console.log(a) //0o開(kāi)頭是八進(jìn)制標(biāo)志 let a = 0o0011 console.log(a)Number對(duì)象方法
let a = 10/3 //判斷是不是數(shù)字 console.log(Number.isFinite(a))//true //判斷是不是NaN console.log(Number.isNaN(NaN))//true //轉(zhuǎn)換整數(shù)小數(shù) console.log(Number.parseInt(a))//取整 console.log(Number.parseFloat(a)) //判斷是否為整數(shù) console.log(Number.isInteger(a))//false //es6的最大安全值 console.log(Math.pow(2,53)-1) //最大,最小常量數(shù),相當(dāng)于const定義變量 console.log(Number.MIN_SAFE_INTEGER) console.log(Number.MAX_SAFE_INTEGER) //判斷是否安全數(shù)字 console.log(Number.isSafeInteger(a))//trueMath對(duì)象 trunc模塊
//將字符串轉(zhuǎn)為數(shù)字 console.log(Math.trunc("123"))//123 console.log(Math.trunc("12abc"))//NaN console.log(Math.trunc("abc"))//NaNsign模塊
//判斷正負(fù)數(shù) console.log(Math.sign(-123))//-1 console.log(Math.sign(123))//1 console.log(Math.sign(0))//0cbrt模塊
//計(jì)算立方根 console.log(Math.cbrt(8))clz32模塊
//計(jì)算32位二進(jìn)制 console.log(Math.clz32(8))imul模塊
//計(jì)算乘法 console.log(Math.imul(8))//0 console.log(Math.imul(8,2))//16hydop
//計(jì)算乘法 console.log(Math.hypot(1,1,1,1))//return (1^2+1^2+1^2+1^2)的平方根==>2
在github傳了官方pdf,更多方法就在那里查閱數(shù)組實(shí)例與應(yīng)用 from模塊=>json轉(zhuǎn)數(shù)組
let jsonData={ "0":0, "1":1, "2":2, "length":3 } let arr=Array.from(jsonData) console.log(arr)//[0,1,2]of模塊=>文本轉(zhuǎn)數(shù)組
let txt="1,2,3,4,5" let data=Array.of(txt) console.log(data)copyWithin模塊=>第一個(gè)是準(zhǔn)備要替換位置,第二個(gè)是開(kāi)始截取替換位置,第三個(gè)是最后截止位置,函數(shù)執(zhí)行將截取的數(shù)據(jù)從起始位置開(kāi)始覆蓋
let arr=[0,1,2,3,4,5,6,7,8] console.log(arr.copyWithin(1,3,8))//[0,3,4,5,6,7,6,7,8]find模塊=>依次遍歷,遇到條件為true則返回
let arrDemo=[0,1,2,3,4,5,6,1,8] console.log(arrDemo.find((value,index,arr)=>{ return value >5 }))//6fill模塊=>遍歷替代,第一個(gè)參數(shù)表示要替代的值,第二個(gè)是替代開(kāi)始位置,第三個(gè)是替代終止位置
let arrDemo=[0,1,2,3,4,5,6,1,8] console.log(arrDemo.fill("x",2,5)) //[0, 1, "x", "x", "x", 5, 6, 1, 8]of模塊=>遍歷每個(gè)元素
let arrDemo=[0,1,2,3,4,5,6,1,8] for (let i of arrDemo) { console.log(i)//依次打印每個(gè)元素 }in模塊與of一樣
let arrDemo=[0,1,2,3,4,5,6,1,8] for (let i in arrDemo) { console.log(i) }
在有些場(chǎng)景in不好用,例如
let arrDemo=["1","2","3"] for (let [index,val] of arrDemo.entries()) { console.log(index,val) }//能輸出key和value
let arrDemo=["1","2","3"] for (let [index,val] in arrDemo.entries()) { console.log(index,val) }//不能輸出entries
let arrDemo=["a","b","c"] let flag=arrDemo.entries() console.log(flag.next().value) console.log(flag.next().value) console.log(flag.next().value) console.log(flag.next().value) //輸出[0,"a"],[1,"b"],[2,"c"]function模塊 參數(shù)預(yù)設(shè)值 ==>不可以使用嚴(yán)謹(jǐn)模式
function addDemoOne(a,b){ return a+b } function addDemoTwo(a,b=3){ return a+b } console.log(addDemoOne(2,3))//5 console.log(addDemoTwo(2))//5參數(shù)覆蓋
function addDemoTwo(a,b=3){ return a+b } console.log(addDemoTwo(1,2))//3預(yù)設(shè)函數(shù)違法值
function addDemoTwo(a,b=3){ if(a === 1){ throw new Error("值錯(cuò)誤") } return a+b } console.log(addDemoTwo(1))//Uncaught Error: 值錯(cuò)誤計(jì)算函數(shù)幾個(gè)參數(shù)
在這里有個(gè)坑,請(qǐng)看demo2,3
function addDemoOne(a,b,c){ return a+b } console.log(addDemoOne.length)//3 function addDemoTwo(a,b,c=2){ return a+b } console.log(addDemoTwo.length)//2 function addDemoThree(a,b=2,c){ return a+b } console.log(addDemoThree.length)//1function的name模塊
function addDemoOne(a,b,c){ return a+b } console.log(addDemoOne.name)//addDemoOne let addDemoTwo = function addDemoThree(){} console.log(addDemoTwo.name)//addDemoThree箭頭函數(shù)
let demo = (a,b) => a+b//省略 return,如果加return則必須加{} console.log(demo(2,3))//5解構(gòu)對(duì)象
let jsonData={ a:100, b:200 } function addDemoTwo({a,b=3}){ return a+b } console.log(addDemoTwo(jsonData))//300
判斷json存在某屬性
let jsonData={ a:1, b:2 } console.log("a" in jsonData)//true console.log("c" in jsonData)//false
判斷數(shù)組是否為空
let arrOne=[,,,,] let arrTwo=[1,2,3] console.log(0 in arrOne)//false console.log(0 in arrTwo)//true
將對(duì)象合并
var a={a:1} var b={b:2} var c=Object.assign(a,b)//可以合并多個(gè) console.log(c)//{a: 1, b: 2}解構(gòu)數(shù)組
let arr =[1,2,3,4] function addDemoTwo(a,b,c,d){ console.log(a,b,c,d) } addDemoTwo(...arr)//1,2,3,4Symbol類(lèi)型=>獨(dú)一無(wú)二的類(lèi)型
let testData=Symbol("hello") console.log(testData)//Symbol(hello) console.log(typeof testData)//symbolsymbol的應(yīng)用
let demoOne=Symbol("hello") let demoTwo=Symbol("word") let jsonData={ a:"aaa", b:"bbb" } jsonData[demoOne]="ccc" jsonData[demoTwo]="ffffd" for(let i in jsonData){ console.log(jsonData[i])//遍歷不出symbol屬性 } console.log(jsonData);//可以遍歷出Set與WeakSet=>數(shù)據(jù)集合
let demoData=new Set([1,2,3,4,5,5])//不允許重復(fù)元素 console.log(demoData); demoData.add(6) console.log(demoData); demoData.delete(1) console.log(demoData); console.log(demoData.has(1)); console.log(demoData.has(2)); for (let i of demoData){ console.log(i); } demoData.clear() console.log(demoData);
去除數(shù)組中重復(fù)的元素可以這樣
let arr=[1,2,3,3,4] let setOne=new Set(arr) console.log(setOne);Weakset
let demo={a:1,b:2} let setData=new WeakSet() setData.add(demo) console.log(setData);Map
let json={name:"fan",age:18} let m = new Map() m.set(json,"me") m.set("name","fan") console.log(m.get("name"));//fan console.log(m.get(json));//me,根據(jù)對(duì)象搜索Proxy
Proxy本質(zhì)是一個(gè)對(duì)象,當(dāng)對(duì)對(duì)象的屬性進(jìn)行操作可以觸發(fā)一系列操作
let data2=new Proxy({ add:function(val){ return val+1 }, name:"tom" },{ get:function(target,key,property){ console.log("get key--->",key)//name console.log("get target--->",target);//obj console.log("get property--->",property);//proxy obj return target[key] }, set:function(target,key,value,receiver){ console.log("set key--->",key);//name console.log("set value--->",value);//3333 console.log("set target--->",target);//obj console.log("set reeiver--->",receiver);//proxy obj return target[key]=value } }) data2.name=3333//執(zhí)行set console.log(data2.name);//執(zhí)行g(shù)etapply--->執(zhí)行的時(shí)候必須調(diào)用
let target = ()=>{ return "hello world" } let handler = { apply(target,ctx,args){ //不要加鉤子 console.log("6666"); return Reflect.apply(...arguments)//Reflect代碼demo本身 } } let demo=new Proxy(target,handler) demo()//6666Promise
promise就是前一步完成了動(dòng)作就執(zhí)行下一步操作
let flag=200 function one(resolve,reject){ console.log("one"); if(flag==200){ resolve("step1 finish") }else{ reject("step1 erro") } } function two(resolve,reject){ console.log("two"); if(flag==200){ resolve("step2 finish") }else{ reject("step2 erro") } } function three(resolve,reject){ console.log("three"); if(flag==200){ resolve("step3 finish") }else{ reject("step3 erro") } } new Promise(one).then(function(val){ console.log(val); return new Promise(two) }).then(function(val){ console.log(val); return new Promise(three) }).then(function(val){ console.log(val); return val })Class語(yǔ)法糖
class people{ name(val){ // console.log(val); return val } fullname(val){ console.log("Mr"+this.name(val)) } add(){ return this.x+this.y } constructor(x,y){ this.x = x this.y = y } } let p = new people(1,2) console.log(p.add()); class student extends people{ hello(){ console.log("hello"); } } let s= new student(10,20) console.log(s.add());
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/107545.html
摘要:先把當(dāng)成文件,依次查找當(dāng)前目錄下的,找到了,就返回該文件,不再繼續(xù)執(zhí)行。那么關(guān)于正確的結(jié)論是在中使用是跟的效果相同,不會(huì)因?yàn)閱?dòng)腳本的目錄不一樣而改變,在其他情況下跟效果相同,是相對(duì)于啟動(dòng)腳本所在目錄的路徑。 起因 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) ,喜歡的可以關(guān)注最新動(dòng)態(tài),大家一起多交流學(xué)習(xí),共同進(jìn)步,以學(xué)習(xí)者的身份寫(xiě)博...
摘要:先把當(dāng)成文件,依次查找當(dāng)前目錄下的,找到了,就返回該文件,不再繼續(xù)執(zhí)行。那么關(guān)于正確的結(jié)論是在中使用是跟的效果相同,不會(huì)因?yàn)閱?dòng)腳本的目錄不一樣而改變,在其他情況下跟效果相同,是相對(duì)于啟動(dòng)腳本所在目錄的路徑。 起因 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) ,喜歡的可以關(guān)注最新動(dòng)態(tài),大家一起多交流學(xué)習(xí),共同進(jìn)步,以學(xué)習(xí)者的身份寫(xiě)博...
摘要:通過(guò)字面量語(yǔ)法擴(kuò)展新增方法改進(jìn)原型等多種方式加強(qiáng)對(duì)象的使用,并通過(guò)解構(gòu)簡(jiǎn)化對(duì)象的數(shù)據(jù)提取過(guò)程。四解構(gòu)賦值為數(shù)組和對(duì)象字面量提供了新特性解構(gòu),可以簡(jiǎn)化數(shù)據(jù)提取的過(guò)程,減少同質(zhì)化的代碼。 ES6 通過(guò)字面量語(yǔ)法擴(kuò)展、新增方法、改進(jìn)原型等多種方式加強(qiáng)對(duì)象的使用,并通過(guò)解構(gòu)簡(jiǎn)化對(duì)象的數(shù)據(jù)提取過(guò)程。 一、字面量語(yǔ)法擴(kuò)展 在 ES6 模式下使用字面量創(chuàng)建對(duì)象更加簡(jiǎn)潔,對(duì)于對(duì)象屬性來(lái)說(shuō),屬性初始值可...
摘要:現(xiàn)在我們要用的重點(diǎn)就是我們的,這是一個(gè)能讓函數(shù)并行的,可以基于多個(gè)。非常有用啊先上一個(gè)錯(cuò)誤的代碼這時(shí)候我們得到的就是數(shù)字了,而不是一個(gè)數(shù)組,這就是神奇所在。 看過(guò) (一)的同學(xué)一定覺(jué)得這個(gè)Promise很簡(jiǎn)單,好像沒(méi)什么可以用的地方,但是事實(shí)上,它的用處非常大啊,尤其是在nodejs上,愈加重要,雖然已經(jīng)有大量的庫(kù)實(shí)現(xiàn)了對(duì)Promise的封裝了,不過(guò)我還是更傾向用原生的node來(lái)實(shí)現(xiàn)對(duì)...
摘要:現(xiàn)在我們要用的重點(diǎn)就是我們的,這是一個(gè)能讓函數(shù)并行的,可以基于多個(gè)。非常有用啊先上一個(gè)錯(cuò)誤的代碼這時(shí)候我們得到的就是數(shù)字了,而不是一個(gè)數(shù)組,這就是神奇所在。 看過(guò) (一)的同學(xué)一定覺(jué)得這個(gè)Promise很簡(jiǎn)單,好像沒(méi)什么可以用的地方,但是事實(shí)上,它的用處非常大啊,尤其是在nodejs上,愈加重要,雖然已經(jīng)有大量的庫(kù)實(shí)現(xiàn)了對(duì)Promise的封裝了,不過(guò)我還是更傾向用原生的node來(lái)實(shí)現(xiàn)對(duì)...
閱讀 731·2023-04-25 19:28
閱讀 1391·2021-09-10 10:51
閱讀 2390·2019-08-30 15:55
閱讀 3408·2019-08-26 13:55
閱讀 2996·2019-08-26 13:24
閱讀 3325·2019-08-26 11:46
閱讀 2751·2019-08-23 17:10
閱讀 1414·2019-08-23 16:57