8 19 學習日誌

2021-09-26 07:39:33 字數 4815 閱讀 1489

用於es6,主要是有塊級作用域,用let修飾的變數只存在於塊級作用域,用const修飾的變數只能在宣告的時候完成初始化,後續不能被修改

1.不能先使用在宣告

2.不能重複宣告

3.有塊級作用域

console.log(b)			//30

console.log(a) //報錯

var 修飾的變數相當於在全域性中宣告,但是let修飾的變數只存在於當前作用域,所以無法訪問到.

var arr = [, , ]

for (var i = 0; i < arr.length; i++) (i)

})(i)

}

做出函式來遍歷陣列裡面的變數,因為for中的i是用var來修飾的,所以只能做成閉包的形式,如果不這樣,在函式外部訪問就訪問不到裡面的i,但是如果使用let,就可以很好的解決這個情況

for (let i = 0; i < arr.length; i++) (i)

}

用let修飾的變數很像函式的變數,裡面**塊能夠訪問到外面**塊的變數,但是外面訪問不到裡面變數的值

const a =20;

a=100;

console.log(a);

這樣會報錯,因為a是由const修飾的,所以是不能修改的,他和之前的直接修改object的__proto__屬性不同,後者不會報錯,但是沒有用,用const直接就會報錯

var flag=true

if(flag)

console.log(a) //20

console.log(b) //報錯

const也是有塊級作用域的,他只在宣告直接的作用域有效,很好的避免的全域性變數被汙染的情況(使用塊級作用域後),但是雖然說不能被改變,但是如果他是乙個陣列,乙個物件,可以新增屬性進去,只是位址不被改變,裡面的屬性是可以改變的

const a=

a.push(100)

console.log(a)

const obj={}

obj.age=18

console.log(obj)

拷貝的區別:深拷貝和淺拷貝

深拷貝相當於重新開拓一塊空間,在這空間裡面講要拷貝的資料原模原樣的新增進去,淺拷貝只是申明乙個變數,讓這個變數的指標指向這塊空間

var a=

var b=a

b[100]=100

console.log(a)

深var a=[1900,200,3004]

var b=//[...a]

a.foreach(function(el) )

b.push(999)

console.log(a,b)

var  = 

console.log(name1)

列印出來的結果是name1所帶的值karen

var arr=

var =arr;

console.log(b); //10

將要解構的物件放在等號後面,將要取的值放在前面,屬性名必須要對,要去的值用變數表示,列印這個變數就是列印出來這個值

var arr=[,] } ]

let=arr

]=its

console.log(name)

}console.log(name)

要想學好這個,就去網上拿乙個大資料,將裡面的屬性全部解構出來,

var arr = [100, 20]

var m1 = new map()

m1.set(999,arr )

console.log(m1)

set方法,將括號裡面的arr set進去,然後如果需要訪問他,他的keys是999

get方法,將set進去的值取出來

m1.set("name","karen")

console.log(m1.get("name")) //karen

for ([k,v] of m1)
這段**就是將解構和map結合在一起,map中有乙個屬性[[entries]],他是乙個陣列,將我們存的keys和value存在裡面

map會幫我們把陣列解析出來,前面的值為keys,後面的值為value,如果,有3個,那麼後面的不會被放入value,

var m2=new map()

m2.set("name","karen")

m2.set("name2","karen2")

m2.set("name3","karen3")

var arr=array.from(m2)//把容器轉化為真陣列

array.from會將()的東西轉化為真陣列

重點 …xx

2個用法

…xx xx是已知的容器名字:把容器中資料取出來: var arr=[1,2,2,1,3];var arr2=[…arr]

…xx xx是自己取的名字 在解構賦值中把容器中剩餘資料取出來,給剩餘資料去個xx的名字

let =;

function log(num1,…arg)

log(100,200,300,400)

set容器可以看做數學裡面的集合,集合裡面的資料不會重複,

將陣列中重複的值去除

var a = new set([1, 2, 3]);

var b = new set([4, 3, 2]);

var union = new set([...a, ...b]); //

console.log(union);

取陣列的並集

取陣列的交集

var a=new set([1,2,3,4,5])

var b=new set([2,9,3,10])

var arr=[...a].filter(function(x) )

console.log(arr)

filter會通過返回值,如果true,將這個value放入容器,如果為false則不放入,has函式是判斷後面的值是否在前面的容器中有,

var str1="6480950"

var re=str1.padstart(11,"0991")

console.log(re) //099106480950

var re=str.repeat(10)

console.log(re)

//重複10次

string.prototype.mypadstart=function(count,str) 

}return arr.join("")

} var str="hello"

var re=str.mypadstart(20,"abcde")

console.log(re)

設計乙個工具,讓乙個字串被填充到20位,以abcde來填充

var re=math.cbrt(27)

console.log(re)

取立方根

var a=-10

var b=-20

var re=math.imul(a,b)

console.log(re)

《演算法概論》習題8 19

問題描述 所謂風箏圖是這樣的,其頂點數為偶數,如2n,且其中的n個頂點構成了乙個團,剩餘的n個頂點則由一條稱為尾巴的路徑連線,尾巴的某個端點與團的乙個頂點相連。給定乙個圖和目標g,風箏圖問題要求圖的乙個包含2g個頂點的風箏子圖。請證明該問題是np 完全。解答 可以將團問題歸約到 kite 問題。若要...

訓練日記8 19

最近學的樹狀陣列,感覺這方面的題得多看,多了解,才能在做題的時候很好的用它。下午的ccpc網路賽,怎麼說,剛上來做一道字串的題,給你兩個字串s1,s2,例如s2 aba,依次擷取s2的是 我們n代表擷取的片段的長度 之後看看片段在字串s1中的個數,用l代表,舉個例子吧,擷取的片段 在s1 中的個數由...

《演算法概論》習題8 19證明

題目 所謂風箏圖是這樣的,其頂點數為偶數 比如2n 且其中的n個頂點構成了乙個團,剩餘的n個頂點則由一條稱為 尾巴 的路徑連線,尾巴的某個端點與團中乙個頂點相連。給定乙個圖和目標g,風箏圖問題要求該圖的乙個包含2g個頂點的風箏子圖。請證明該問題是np 完全的。證明 我們可以將團問題歸約到風箏圖問題。...