日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

ES6JS笔记以及部分运行问题记录

發(fā)布時間:2023/12/16 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6JS笔记以及部分运行问题记录 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • ES6&JS
    • Array.from
    • Array.of()
    • bind()方法
    • concat
    • Array.some, Array.every()
    • 定義class類
    • Date()
    • Doc. addEventListener
    • function
    • For循環(huán)
      • 簡單 for 循環(huán)
      • for-in
      • for-of
      • break,continue,return
    • forEach
    • flat
    • find()
    • findIndex
    • filter
    • fill
    • 判斷if
    • includes()
    • 實例方法:includes(), startsWith(), endsWith()
    • indexOf
    • lastIndexof
    • instanceof
    • join()
    • map方法
    • Let var const
    • map 函數(shù)
    • Map類
    • Math
    • Number
    • Null判斷運算符
    • Object是否含有某個屬性
    • Object是否為空
    • Object.keys()
    • Object.assign對象合并
    • Object.is判斷兩個值是否完全相等
    • Object.entries
    • Object.fromEntries
    • Object.prototype.toString.call()
    • padStart(),padEnd()實例方法
    • parseInt parseFoat
    • Pop
    • push
    • Promise
      • 基礎(chǔ)promise
      • promise的all和allSettled
    • prototype 對象添加屬性
    • reduce()函數(shù)
    • reverse()
    • replace
    • repeat()
    • Set類
    • split
    • splice slice
    • substring()
    • sort
    • stopPropagation() 事件方法
    • select()
    • trimStart(),trimEnd(),trim()
    • toFixed
    • toString()
    • toLowerCase
    • toUpperCase
    • typeof
    • unshift() 方
    • window
    • window.addEventListener
    • window.requestAnimationFrame
    • 可選鏈操作符? ?? ||
    • 判斷符號^
    • ** 指數(shù)
    • 屬性名當(dāng)作變量
    • 深拷貝:
    • 函數(shù)擴展
    • 指數(shù)運算符
    • 擴展運算符 三個點(...)
    • 函數(shù)默認值設(shè)置
    • 模板字符串
    • 變量的解構(gòu)賦值
    • 防抖、節(jié)流
    • 正則表達式
    • 對象去重
    • 刪除dom節(jié)點的子元素
    • 解決內(nèi)存溢出
    • 過濾特殊字符串
    • 解決uview 的$u為未定義問題
    • npm run build時提示vue/types/jsx.d.ts中的錯誤

ES6&JS

Array.from

下面是一個類似數(shù)組的對象,Array.from將它轉(zhuǎn)為真正的數(shù)組。

let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3}; // ES5的寫法var arr1 = [].slice.call(arrayLike); // ['a', 'b','c'] // ES6的寫法let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']

擴展運算符背后調(diào)用的是遍歷器接口(Symbol.iterator),如果一個對象沒有部署這個接口,就無法轉(zhuǎn)換。Array.from方法還支持類似數(shù)組的對象。所謂類似數(shù)組的對象,本質(zhì)特征只有一點,即必須有l(wèi)ength屬性。因此,任何有l(wèi)ength屬性的對象,都可以通過Array.from方法轉(zhuǎn)為數(shù)組,而此時擴展運算符就無法轉(zhuǎn)換。

Array.from({ length: 3 }); // [ undefined, undefined, undefined ]

上面代碼中,Array.from返回了一個具有三個成員的數(shù)組,每個位置的值都是undefined。擴展運算符轉(zhuǎn)換不了這個對象。
Array.from還可以接受第二個參數(shù),作用類似于數(shù)組的map方法,用來對每個元素進行處理,將處理后的值放入返回的數(shù)組。

Array.from(arrayLike, x => x * x); // 等同于Array.from(arrayLike).map(x => x * x); Array.from([1, 2, 3], (x) => x * x) // [1, 4, 9]

下面的例子將數(shù)組中布爾值為false的成員轉(zhuǎn)為0。

Array.from([1, , 2, , 3], (n) => n || 0) // [1, 0, 2, 0, 3]

上面代碼中,Array.from的第一個參數(shù)指定了第二個參數(shù)運行的次數(shù)。這種特性可以讓該方法的用法變得非常靈活。

Array.from({ length: 2 }, () => 'jack') // ['jack', 'jack']

Array.of()

Array.of()方法用于將一組值,轉(zhuǎn)換為數(shù)組。 Array.of() // [] Array.of(undefined) // [undefined] Array.of(1) // [1] Array.of(1, 2) // [1, 2]

bind()方法

bind()方法主要就是將函數(shù)綁定到某個對象,bind()會創(chuàng)建一個函數(shù),函數(shù)體內(nèi)的this對象的值會被綁定到傳入bind()中的第一個參數(shù)的值,例如:f.bind(obj),實際上可以理解為obj.f(),這時f函數(shù)體內(nèi)的this自然指向的是obj,并將創(chuàng)建的函數(shù)返回(不會立即執(zhí)行)

concat

var arr1 = [1,2,3] var arr2 = [4,5,6] arr1.concat(arr2) //輸出 [1,2,3,4,5,6][...arr1, ...arr2 n] arr1.concat(arr2,arr3,arr4) 里面不限數(shù)量 不會改變原數(shù)組會返回新數(shù)組

Array.some, Array.every()

Some():方法用于檢測數(shù)組中的元素是否有滿足指定條件的,若滿足返回true,否則返回false;
every():方法用于檢測數(shù)組中所有元素是否都符合指定條件,若符合返回true,否則返回false;

定義class類

export default class gasComprehensive {//實時空氣質(zhì)量static async realQuality(params: Record<string, any>) {return request.get(`${base.aimsService}/web/api/v1/analyze-map/grid-detail`,params)}//空氣質(zhì)量累計數(shù)據(jù)static async airQualityPanel(params?: Record<string, any>) {return request.get(`${base.aimsPrjService}/web/api/v1/comprehensive-situation/air-quality-panel`,params) } } 使用gasComprehensive.airQualityPanel()

Date()

let 函數(shù)名 =new Date(); Tue Aug 10 2021 16:01:03 GMT+0800 (中國標準時間) 2.1 Date().toDateString() Tue Aug 10 2021 2.2 Date().toTimeString() 16:09:53 GMT+0800 (中國標準時間) 2.3 Date().toLocaleDateString() 2021/8/10 2.4 Date().toLocaleTimeString() 下午4:10:27 2.5 Date().toUTCString() Tue, 10 Aug 2021 08:10:42 GMT 只列舉常見方法,具體參考手冊 3.1 getTime() 返回日期的毫秒,與valueOf相同 3.2 getFullYear() 返回4位年數(shù) 2021 3.3 getMonth() 返回月(0表示1...) 7 3.4 getDate() 返回日 10 3.5 getDay() 返回周幾(0表示周日,6表示周六) 2

Doc. addEventListener

// 監(jiān)聽瀏覽器隱藏顯示 document.addEventListener('visibilitychange', function() {var isHidden = document.hidden;// console.log(document.visibilityState) // visible hiddenif (isHidden) { // '隱藏'.......} else if(codeFlag) { // '顯示'.......} });

function

解構(gòu)參數(shù)

const greet = ({ greeting, firstName, lastName }) => {return `${greeting}, ${firstName}${lastName}`; }

function的長度:

function fn1 () {} function fn2 (name) {} function fn3 (name, age) {}console.log(fn1.length) // 0 console.log(fn2.length) // 1 console.log(fn3.length) // 2 ----------------------------------------------------------- function fn1 (name) {} function fn2 (name = '林三心') {} function fn3 (name, age = 22) {} function fn4 (name, age = 22, gender) {} function fn5(name = '林三心', age, gender) { }console.log(fn1.length) // 1 console.log(fn2.length) // 0 console.log(fn3.length) // 1 console.log(fn4.length) // 1 console.log(fn5.length) // 0 ----------------------------------------------------------- function fn1(name, ...args) {}console.log(fn1.length) // 1

length 是函數(shù)對象的一個屬性值,指該函數(shù)有多少個必須要傳入的參數(shù),即形參的個數(shù)。形參的數(shù)量不包括剩余參數(shù)個數(shù),僅包括第一個具有默認值之前的參數(shù)個數(shù)

For循環(huán)

簡單 for 循環(huán)

const arr = [1, 2, 3]; for ( let i = 0; i < arr.length; i++) {console.log(arr[i]); } // 不可以const 因為i要++改變

for-in

const arr = [1, 2, 3]; let index; for (index in arr) {console.log( "arr[" + index + "] = " + arr[index]); } 一般情況下,運行結(jié)果如下:


for-in 循環(huán)遍歷的是對象的屬性,而不是數(shù)組的索引。因此, for-in
遍歷的對象便不局限于數(shù)組,還可以遍歷對象。例子如下:

const person = {fname: "san" ,lname: "zhang" ,age: 99 }; let info; for (info in person) {console.log( "person[" + info + "] = " + person[info]); }

我們可以發(fā)現(xiàn) for-in 并不適合用來遍歷 Array
中的元素,其更適合遍歷對象中的屬性,這也是其被創(chuàng)造出來的初衷。卻有一種情況例外,就是稀疏數(shù)組??紤]下面的例子:

let key; const arr = []; arr[0] = "a" ; arr[100] = "b" ; arr[10000] = "c" ; for (key in arr) {console.log(arr[key]); } 輸出:a,b,c

for-in 只會遍歷存在的實體,上面的例子中, for-in
遍歷了3次(遍歷屬性分別為"0″、 "100″、 "10000″的元素,普通 for
循環(huán)則會遍歷 10001 次)。所以,只要處理得當(dāng), for-in 在遍歷 Array
中元素也能發(fā)揮巨大作用。

for-of

for-in循環(huán)用來遍歷對象屬性。
for-of循環(huán)用來遍歷數(shù)據(jù)—例如數(shù)組中的值。

const arr = [ 'a' , 'b' , 'c' ]; for ( let data of arr) {console.log(data); } 輸出:a,b,c

之前的缺陷:

  • forEach 不能 break 和 return;
  • for-in

    缺點更加明顯,它不僅遍歷數(shù)組中的元素,還會遍歷自定義的屬性,甚至原型鏈上的屬性都被訪問到。而且,遍歷數(shù)組元素的順序可能是隨機的。
    那 for-of 到底可以干什么呢?

  • 跟 forEach 相比,可以正確響應(yīng) break, continue, return。
  • for-of 循環(huán)不僅支持數(shù)組,還支持大多數(shù)類數(shù)組對象,例如 DOM nodelist 對象。
  • for-of 循環(huán)也支持字符串遍歷,它將字符串視為一系列 Unicode 字符來進行遍歷。
  • for-of 也支持 Map 和 Set (兩者均為 ES6 中新增的類型)對象遍歷。
    總結(jié)一下,for-of 循環(huán)有以下幾個特征:
  • 這是最簡潔、最直接的遍歷數(shù)組元素的語法。
  • 這個方法避開了 for-in 循環(huán)的所有缺陷。
  • 與 forEach 不同的是,它可以正確響應(yīng) break、continue 和 return 語句。
  • 其不僅可以遍歷數(shù)組,還可以遍歷類數(shù)組對象和其他可迭代對象。
    for-of循環(huán)不僅支持數(shù)組,還支持大多數(shù)類數(shù)組對象,例如DOM NodeList對象。
    for-of循環(huán)也支持字符串遍歷,它將字符串視為一系列的Unicode字符來進行遍歷:
const myData = 'dsa'for(let i of myData) {console.log(i);} 輸出: d,s,a

break,continue,return

break會跳出一個循環(huán)可以配合if使用不會只跳出if
continue跳出循環(huán)的此次操作執(zhí)行循環(huán)的下一個
Return直接結(jié)束
break,continue 配合outer :

outer: // outer只是一個標識符 隨便命名 outer: for (let i = 0; i < 10; i++) {for (let j = 0; j < 10; j++) {console.log("i:" + i + " j:" + j);if (j == 1) {continue outer;}if (i == 1) {break outer;}}console.log("i:" + i);} 輸出: i:0 j:0 i:0 j:1 i:1 j:0outer: for (var i = 0; i < 10; i++) {for (var j = 0; j < 10; j++) {if (i > 5) {console.log(i);break outer;}} } 輸出: 6

break,continue會直接跳出到你的標識符的那層循環(huán)位置,如上面的位置就是break可以跳出兩層for循環(huán)
其還可以在內(nèi)部使用,跳到任意循環(huán)的指定位置,如跳到內(nèi)部

forEach

forEach() 方法對數(shù)組的每個元素執(zhí)行一次提供的函數(shù)。forEach
方法為數(shù)組中含有有效值的每一項執(zhí)行一次 callback 函數(shù),那些已刪除(使用
delete 方法等情況)或者從未賦值的項將被跳過(那些值為 undefined 或 null
的項會被讀取)

var array = ['a', 'b', 'c']; array.forEach(function(element) {console.log(element); }); 輸出為: a; b; c;

forEach方法中的function回調(diào)有三個參數(shù):
第一個參數(shù)是遍歷的數(shù)組內(nèi)容,
第二個參數(shù)是對應(yīng)的數(shù)組索引,Number類型
第三個參數(shù)是數(shù)組本身
foreach 語法:

[ ].forEach(function(value,index,array){//code something }); var arr = [1,2,3,4]; var sum =0; arr.forEach(function(value,index,array){array[index] == value; //結(jié)果為truesum+=value; }); console.log(sum); //結(jié)果為 10

flat

方法會按照一個可指定的深度遞歸遍歷數(shù)組,并將所有元素與遍歷到的子數(shù)組中的元素合并為一個新數(shù)組返回。

const arr1 = [0, 1, 2, [3, 4]]; console.log(arr1.flat()); //默認降一維 // expected output: [0, 1, 2, 3, 4] const arr2 = [0, 1, 2, [[[3, 4]]]]; console.log(arr2.flat(2)); // expected output: [0, 1, 2, [3, 4]] flat() 方法會移除數(shù)組中的空項:Infinity參數(shù)可以將數(shù)組內(nèi)不管有幾層都展平

find()

數(shù)組實例的find方法,用于找出第一個符合條件的數(shù)組成員。它的參數(shù)是一個回調(diào)函數(shù),所有數(shù)組成員依次執(zhí)行該回調(diào)函數(shù),直到找出第一個返回值為true的成員,然后返回該成員。如果沒有符合條件的成員,則返回undefined。

[1, 4, -5, 10].find((n) => n < 0)// -5

上面代碼找出數(shù)組中第一個小于 0 的成員。
查找函數(shù)有三個參數(shù)。value:每一次迭代查找的數(shù)組元素。index:每一次迭代查找的數(shù)組元素索引。arr:被查找的數(shù)組。

[1, 5, 10, 15].find(function(value, index, arr) {return value > 9; }) // 10

上面代碼中,find方法的回調(diào)函數(shù)可以接受三個參數(shù),依次為當(dāng)前的值、當(dāng)前的位置和原數(shù)組。

function f(v){return v > this.age; } let person = { name: 'John', age: 20 }; [10, 12, 26, 15].find(f, person); // 26

上面的代碼中,find函數(shù)接收了第二個參數(shù)person對象,回調(diào)函數(shù)中的this對象指向person對象。

findIndex

findIndex()
方法返回傳入一個測試條件(函數(shù))符合條件的數(shù)組第一個元素位置。
findIndex() 方法為數(shù)組中的每個元素都調(diào)用一次函數(shù)執(zhí)行:
當(dāng)數(shù)組中的元素在測試條件時返回 [true]{.underline} 時, findIndex()
返回符合條件的元素的索引位置,之后的值不會再調(diào)用執(zhí)行函數(shù)。
如果沒有符合條件的元素返回 -1

var ret3 = arr1.findIndex((value, index, arr) => { return value > 4 })

filter

返回數(shù)組中所有元素都大于 18 的元素: var ages = [32, 33, 16, 40]; function checkAdult(age) {return age >= 18; } function myFunction() {document.getElementById("demo").innerHTML =ages.filter(checkAdult); } 輸出結(jié)果為: 32,33,40

filter()
方法創(chuàng)建一個新的數(shù)組,新數(shù)組中的元素是通過檢查指定數(shù)組中符合條件的所有元素。
注意: filter() 不會對空數(shù)組進行檢測。
注意: filter() 不會改變原始數(shù)組。

allData.filter(item => {return item >= 18 })

當(dāng)return為true時就返回這個item 如果為假就不返回這個item

fill

fill方法使用給定值,填充一個數(shù)組。

['a', 'b', 'c'].fill(7) // [7, 7, 7] new Array(3).fill(7) // [7, 7, 7]

上面代碼表明,fill方法用于空數(shù)組的初始化非常方便。數(shù)組中已有的元素,會被全部抹去。
fill方法還可以接受第二個和第三個參數(shù),用于指定填充的起始位置和結(jié)束位置。

['a', 'b', 'c'].fill(7, 1, 2) // ['a', 7, 'c']

上面代碼表示,fill方法從 1 號位開始,向原數(shù)組填充 7,到 2 號位之前結(jié)束。
注意,如果填充的類型為對象,那么被賦值的是同一個內(nèi)存地址的對象,而不是深拷貝對象。

判斷if

const data = [] if(data) true if(data.length) false const data = {} if(data) true if(data.length) false // 但是這樣是不對的 因為無論data是不是空其length都是0 Object.keys(obj).length === 0 // 這樣才能判斷l(xiāng)ength if(JSON.stringify(data) === '{}') true if (Object.keys(obj).length === 0 || !obj.object.name) return 如果前面的語句判斷為false || 后面的就不會被執(zhí)行判斷

includes()

方法返回一個布爾值,表示某個數(shù)組是否包含給定的值,與字符串的includes方法類似。ES2016
引入了該方法。

[1, 2, 3].includes(2) // true [1, 2, 3].includes(4) // false [1, 2, NaN].includes(NaN) // true

該方法的第二個參數(shù)表示搜索的起始位置,默認為0。如果第二個參數(shù)為負數(shù),則表示倒數(shù)的位置,如果這時它大于數(shù)組長度(比如第二個參數(shù)為-4,但數(shù)組長度為3),則會重置為從0開始。

[1, 2, 3].includes(3, 3); // false [1, 2, 3].includes(3, -1); // true 'mjh'.includes('mh') // false 'mjh'.includes('mj') // true

實例方法:includes(), startsWith(), endsWith()

傳統(tǒng)上,JavaScript
只有indexOf方法,可以用來確定一個字符串是否包含在另一個字符串中。ES6
又提供了三種新方法。

  • includes():返回布爾值,表示是否找到了參數(shù)字符串。
  • startsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。
  • endsWith():返回布爾值,表示參數(shù)字符串是否在原字符串的尾部。
let s = 'Hello world!'; s.startsWith('Hello') // trues.endsWith('!') // trues.includes('o') // true

這三個方法都支持第二個參數(shù),表示開始搜索的位置。

let s = 'Hello world!'; s.startsWith('world', 6) // true s.endsWith('Hello', 5) // true s.includes('Hello', 6) // false

上面代碼表示,使用第二個參數(shù)n時,endsWith的行為與其他兩個方法有所不同。它針對前n個字符,而其他兩個方法針對從第n個位置直到字符串結(jié)束

indexOf

indexOf() 方法可返回某個指定的字符串值在字符串中首次出現(xiàn)的位置。
語法
stringObject.indexOf(searchvalue,fromindex)
Searchvalue 必需。規(guī)定需檢索的字符串值。
Fromindex 可選的整數(shù)參數(shù)。規(guī)定在字符串中開始檢索的位置。它的合法取值是 0到 stringObject.length - 1。如省略該參數(shù),則將從字符串的首字符開始檢索。
提示和注釋
**注釋:**indexOf() 方法對大小寫敏感!
**注釋:**如果要檢索的字符串值沒有出現(xiàn),則該方法返回 -1。

var str="Hello world!" document.write(str.indexOf("Hello") ) //輸出 0 document.write(str.indexOf("World") )//輸出 -1 document.write(str.indexOf("world") )//輸出 6 var index = [12, 5, 8, 130, 44].indexOf(8); console.log("index is : " + index ) //index is : 2

獲得數(shù)組對象內(nèi)的某個值等于要求值的索引

let data = [{id:1,name:"小紅"},{id:2,name:"小明"}];data.indexOf(data.filter(d=>d.id == 1)) //index:0data.indexOf(data.filter(d=>d.id == 2)) //index:1data.indexOf(data.filter(d=>d.name == "小紅")) //index:0data.indexOf(data.filter(d=>d.name == "小明")) //index:1data.indexOf(data.filter(d=>d.id == 3)) // 不存在即返回-1

lastIndexof

url.lastIndexOf("/") 獲取字符串最后一個/的下標

instanceof

在 JavaScript 中,判斷一個變量的類型嘗嘗會用 typeof 運算符,在使用typeof運算符時采用引用類型存儲值會出現(xiàn)一個問題,無論引用的是什么類型的對象,它都返回"object"。ECMAScript 引入了另一個 Java 運算符 instanceof來解決這個問題。
instanceof 運算符與 typeof運算符相似,用于識別正在處理的對象的類型。與 typeof方法不同的是,instanceof 方法要求開發(fā)者明確地確認對象為某特定類型。
前面放變量后面放放需要判斷的類型或者繼承關(guān)系 (只可以判斷存儲數(shù)據(jù)類型Object、function)

{} instanceof Object // true {} instanceof Array // false [] instanceof Array // true [1, 2] instanceof Object // true !! function Person(){ } function Student(){ } Student.prototype = new Person(); var John = new Student(); console.log(John instanceof Student); // true console.log(John instancdof Person); // true

join()

join()方法將數(shù)組的所有元素連接成一個字符串。
語法:

array.join(separator);

參數(shù)
separator -
指定用于分隔數(shù)組的每個元素的字符串。如果省略,則使用逗號分隔數(shù)組元素。
返回值
連接所有數(shù)組元素后返回一個字符串。

Arr.join("rn") 輸出: A B C Arr.join("+") 輸出: a+b+c

map方法

map() 方法返回一個新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。
map() 方法按照原始數(shù)組元素順序依次處理元素。
注意: map() 不會對空數(shù)組進行檢測。
注意: map() 不會改變原始數(shù)組。

var numbers = [4, 9, 16, 25]; Const dataMap = numbers.map(Math.sqrt); // [2,3,4,5]

Let var const

使用let,聲明的變量僅在塊級作用域內(nèi)有效 var是全局
在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。這在語法上,稱為"暫時性死區(qū)"(temporal
dead zone,簡稱 TDZ)。
let不允許在相同作用域內(nèi),重復(fù)聲明同一個變量。

// 報錯function func() { let a = 10; var a = 1;} // 報錯function func() { let a = 10; let a = 1;} 因此,不能在函數(shù)內(nèi)部重新聲明參數(shù)。 function func(arg) {let arg; } func() // 報錯 function func(arg) { { let arg; } } func() // 不報錯 const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。 const的作用域與let命令相同:只在聲明所在的塊級作用域內(nèi)有效。 const foo = {}; // 為 foo 添加一個屬性,可以成功foo.prop = 123; foo.prop // 123 // 將 foo 指向另一個對象,就會報錯 foo = {}; // TypeError: "foo" is read-only 常量foo儲存的是一個地址,這個地址指向一個對象。不可變的只是這個地址,即不能把foo指向另一個地址,但對象本身是可變的,所以依然可以為其添加新屬性。 const a = []; a.push('Hello'); // 可執(zhí)行 a.length = 0; // 可執(zhí)行 a = ['Dave']; // 報錯

map 函數(shù)

不改變原數(shù)組返回新數(shù)組 對數(shù)組進行操作可使用,不用來過濾數(shù)據(jù)

const datas = [1, 2, 4, 2, 4, 3]; datas.map(item => item > 2) // [false, false, true, false, true, true] item => item > 2 相當(dāng)于 item => { return item > 2 } datas.map(item => { if (item > 2) return item; }) // [undefined, undefined, 4, undefined, 4, 3] datas.map(item => item * 2) // [2, 4, 8, 4, 8, 6]

Map類

Map對象稍有不同:內(nèi)含的數(shù)據(jù)由鍵值對組成,所以你需要使用解構(gòu)(destructuring)來將鍵值對拆解為兩個獨立的變量: for (var [key, value] of phoneBookMap) { console.log(key + "'s phone number is: " + value); }var map = new Map([['1','Jckey'],['2','Mike'],['3','zhengxin']]);map.set('4','Adam');//添加key-valuemap.set('5','Tom');map.set('6','Jerry');console.log(map.get('6')); // Jerrymap.delete('6'); // 刪除console.log(map.get('6')); // undefinedfor(var [key,value] of map) {console.log('key='+key+' , value='+value);} For循環(huán)輸出 key=1 , value=Jckey key=2 , value=Mike key=3 , value=zhengxin key=4 , value=Adam key=5 , value=Tom

Math

Math.trunc()

Math.trunc方法用于去除一個數(shù)的小數(shù)部分,返回整數(shù)部分。 Math.trunc(4.1) // 4 Math.trunc(4.9) // 4 Math.trunc(-4.1) // -4 Math.trunc(-4.9) // -4 Math.trunc(-0.1234) // -0 對于非數(shù)值,Math.trunc內(nèi)部使用Number方法將其先轉(zhuǎn)為數(shù)值。

Math.sign()
Math.sign方法用來判斷一個數(shù)到底是正數(shù)、負數(shù)、還是零。對于非數(shù)值,會先將其轉(zhuǎn)換為數(shù)值。
它會返回五種值。

  • 參數(shù)為正數(shù),返回+1;
  • 參數(shù)為負數(shù),返回-1;
  • 參數(shù)為 0,返回0;
  • 參數(shù)為-0,返回-0;
  • 其他值,返回NaN。
    Math.cbrt() .
    方法用于計算一個數(shù)的立方根。
    Math.hypot
    方法返回所有參數(shù)的平方和的平方根。
Math.hypot(3, 4); //5

Math.floor() 返回小于或等于一個給定數(shù)字的最大整數(shù)。
可以理解 Math.floor()為向下取整

Math.floor(x) // 返回小于x的最大整數(shù) Math.floor(12.2) // 12 Math.floor(15 / 2) // 7 Math.ceil(x) // 返回大于x的最小整數(shù) Math.ceil(12.2) // 13 Math.ceil(15 / 2) // 8 Math.round() 返回一個數(shù)字四舍五入后最接近的整數(shù) var a=Math.round(2.60); // 3 var b=Math.round(2.50); // 3 var c=Math.round(2.49); // 2 var d=Math.round(-2.60); // -3 var e=Math.round(-2.50); // -2 var f=Math.round(-2.49); // -2

除法取余數(shù) 5%2 1
Math.random()
生成一個0~1的隨機數(shù),概率相同
Math.max()
找出最大值并返回最大值,括號內(nèi)必須是一組數(shù)字,如果是數(shù)組需要用擴展運算符擴展

const arr = [2,5,1,8,6] Math.max(...arr) // 返回 8 Math.sqrt 取平方根 Math.pow(4,3); 43次方 // 也可以用 4**3表示

Number

number可以將將0b和0o前綴的字符串?dāng)?shù)值轉(zhuǎn)為十進制,要使用Number方法。

Number('0b111') // 7 Number('0o10') // 8 0b 二進制 0o 八進制 0x 十六進制 `Number.isFinite()`對于非數(shù)值一律返回false, 判斷一個數(shù)是不是有限數(shù),100/0返回 false infinity(無窮大) false Number.isNaN()只有對于NaN才返回true,非NaN一律返回false。 Number.isInteger()用來判斷一個數(shù)值是否為整數(shù)。 Number.isInteger(25) // true Number.isInteger(25.1) // false 但是精度不高 Number.parseInt(), Number.parseFloat() 轉(zhuǎn)化為整數(shù)和浮點數(shù)

Null判斷運算符

?? 屬性值為null或undefined時,指定默認值
讀取對象屬性的時候,如果某個屬性的值是null或undefined,有時候需要為它們指定默認值。常見做法是通過||運算符指定默認值。

const userName = (list && list.info && list.info.base && list.info.base.userName) || 'userName';

||或運算符表達的意思是左側(cè)表達式為null、undefined、‘’、false、0,右側(cè)表達式都會生效。但我們想要的只是在null或undefined的時候生效。
es2020引入了新的Null判斷運算符??。它的行為類似||,但是只有運算符左側(cè)的值為null或undefined時,才會返回右側(cè)的值。
與鏈判斷運算符?.配合使用。

const userName = list?.info?.base?.userName ?? 'userName'; 可用于函數(shù)參數(shù)默認值的判斷 register(a, b) {b = b ?? 3; }

Object是否含有某個屬性

myObject.hasOwnProperty('a') 'a' in myObject if(myObject.width)

Object是否為空

if (JSON.stringify(data) === '{}') if (Object.keys(object).length === 0)

Object.keys()

Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數(shù)組,數(shù)組中屬性名的排列順序和正常循環(huán)遍歷該對象時返回的順序一致
。

Object.keys(obj) // simple arrayvar arr = ['a', 'b', 'c']; console.log(Object.keys(arr)); // console: ['0', '1', '2'] // array like object var obj = { 0: 'a', name: 'b', 2: 'c' }; console.log(Object.keys(obj)); // console: ['0', 'name', '2'] // array like object with random key ordering var anObj = { 100: 'a', 2: 'b', 7: 'c' }; console.log(Object.keys(anObj)); // console: ['2', '7', '100']

Object.assign對象合并

const config1 = { Host: '123', Name: 'root' Text: 'test' } const config2 = { Host: '3', Name: 'admin' dj: 'test1' } Object.assign(config1 , config2 ) //config2會把config1里面重名的屬性值覆蓋掉,不重名的都保留 var num2 =Object.assign({},num1); *//num2 = num1;* 這種賦值改變num2的屬性值是不會影響num1的

給合并設(shè)置默認值:

config = Object.assign({title: 'Foo',body: 'Bar'}, config);

Object.is判斷兩個值是否完全相等

Object.is(120,120) // true Object.is(NaN,NaN) // true NaN === NaN // false===的區(qū)別是可以判斷NaN類型

Object.entries

const arr = Object.entries({name: "百度",address: 'baidu'})console.log(arr);[["name", "百度"],["address", "baidu"]]

將對象轉(zhuǎn)化成二維數(shù)組

Object.fromEntries

將數(shù)組轉(zhuǎn)化成對象

const result = Object.fromEntries([['name','尚硅谷'],['java','python','js','c++'] ]); console.log(result); // {name: "尚硅谷", java: "python"} const m = new Map() m.set('name', 'MJH') const result = Object.fromEntries(m) console.log(result); //{name: "MJH"}

Object.prototype.toString.call()

Object.prototype.toString.call(checkData) === '[object Array]' //數(shù)組 Object.prototype.toString.call(checkData) === '[object Object]' //對象 [object Number] //是 number類型 [object Null] // 是null [object Boolean] // Boolean [object Undefined] // undefined [object String] // String [object Number] // NaN 判斷出來和number一致 !!typeof里 Array 和 Object 檢查出來都是Object

padStart(),padEnd()實例方法

padStart()的常見用途是為數(shù)值補全指定位數(shù)。下面代碼生成 10
位的數(shù)值字符串。

'1'.padStart(10, '0') // "0000000001" '12'.padStart(10, '0') // "0000000012" '123456'.padStart(10, '0') // "0000123456"

第一個參數(shù)比如10會自動生成第二個參數(shù)填滿的10位字符串。最后沒有剛好填滿的時候會截取第二位參數(shù)來填滿padStart是從后往前填充
padEnd是從前往后
另一個用途是提示字符串格式。

'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12" '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

parseInt parseFoat

parseInt(a) 可以將a轉(zhuǎn)化為int類型 同理parseFloat
parseInt()直接舍去小數(shù)部分 不會改變原值會返回值

Pop

pop() 方法將刪除 arrayObject 的最后一個元素,把數(shù)組長度減1,并且返回它刪除的元素的值。如果數(shù)組已經(jīng)為空,則 pop()不改變數(shù)組,并返回 undefined 值。

push

操作后的返回值是數(shù)組的長度

Promise

基礎(chǔ)promise

return Promise.reject(new Error('api地址錯誤'))

可以手動返回一個失敗情況的promise請求其括號內(nèi)的內(nèi)容就會傳遞到后面.catch后面的參數(shù)里

.catch(err => { Console.log(err) })

控制臺輸出: Error: api地址錯誤

promise的all和allSettled

只要p1 和 p2 有一個成功就返回Promise成功 全部失敗就返回失敗

const result = Promise.allSettled([p1, p2])

只要p1 和 p2 有一個失敗就返回Promise失敗 全部成功就返回成功

Const result = Promise.all([p1, p2])

使用:

Promise.all([getControlGroupData(),getControlGroupIndexData()]).then((res:any) => {getDataChange(res) // 返回的res是數(shù)組,分布是兩個promise的res返回 }).catch((e) =>{console.warn(e); }) // 請求因子組 const getControlGroupData = () => {return new Promise(resolve => {if(data.groupId) {resolve('')return}waterComprehensiveApi.factorGroupQuality().then(res => {const resData = resconst filData = resData.filter((item:{code:string}) =>item.code === 'EVALUATION_5')data.groupId = filData[0].idresolve({ code: data.groupId })})}) } // 請求因子參數(shù)字典 const getControlGroupIndexData = () => {return new Promise(resolve => {waterComprehensiveApi.queryFactorIndex().then(res => {const resData = resdata.keyList = resDataresolve({ data: resData })})}) }

prototype 對象添加屬性

prototype 屬性使您有能力向?qū)ο筇砑訉傩院头椒ā?br /> 語法:

object.prototype.name=value

reduce()函數(shù)

reduce()函數(shù)接收的參數(shù)和map()類似,一個函數(shù)f,一個list,但行為和map()不同,reduce()傳入的函數(shù)f必須接收兩個參數(shù),reduce()對list的每個元素反復(fù)調(diào)用函數(shù)f,并返回最終結(jié)果值。
例子:

function f(x, y): return x + y reduce(f, [1, 3, 5, 7, 9]) # 返回結(jié)果為25 reduce()還可以接收第3個可選參數(shù),作為計算的初始值。

如果把初始值設(shè)置為100

reduce(f, [1, 3, 5, 7, 9], 100) # 返回結(jié)果為125 // prev參數(shù)為一開始賦值的參數(shù) 比如 0 或者上一輪return的參數(shù) (prev + cur),cur 為當(dāng)前數(shù)組的參數(shù)比如1 const arr = [1, 2, 3, 4, 5] const sum = arr.reduce((prev, cur) => { return prev + cur }, 0) console.log(sum) // 15

reverse()

reverse() 方法用于顛倒數(shù)組中元素的順序。
用法:

arrObject.reverse()

**注釋:**該方法會改變原來的數(shù)組,而不會創(chuàng)建新的數(shù)組。
如果要讓字符串顛倒可以這樣

var str = 'mjh' str.split("").reverse().join("")

replace

url = "x={x}" var a = "x" url.replace('{' + a + '}', 5); 得到 url = "x=5"

提取字符串中的數(shù)字部分 ‘dsada1564dsad’

item.value = item.value.replace(/[^d]/g,' ');// 1564 去除字符串中的數(shù)字 item.unit = item.value.replace(/[0-9]+/g,"") 去除字符串中的數(shù)字和小數(shù)點 . item.unit = item.value.replace(/[0-9,.]+/g,"") 去除空格 console.log('hel lo wor ld'.replace(/s/g, '')); // helloworld

repeat()

repeat方法返回一個新字符串,表示將原字符串重復(fù)n次。

'x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" 'na'.repeat(0) // ""

Set類

Map和Set對象是ES6中新增的類型。ES6中的Map和Set和java中并無太大出入。
Set和Map類似,也是一組key的集合,但不存儲value。由于key不能重復(fù),所以,在Set中,沒有重復(fù)的key。
要創(chuàng)建一個Set,需要提供一個Array作為輸入,或者直接創(chuàng)建一個空Set:

var s1 = new Set(); *// 空Set* var s2 = new Set([1, 2, 3]); *// 含1, 2, 3*

重復(fù)元素在Set中自動被過濾:

var s = new Set([1, 2, 3, 3, '3']); s; // Set {1, 2, 3, "3"}

通過add(key)方法可以添加元素到Set中,可以重復(fù)添加,但不會有效果:

var s = new Set([1, 2, 3]); s.add(4); s; // Set {1, 2, 3, 4} s.add(4); s; // Set {1, 2, 3, 4}

通過delete(key)方法可以刪除元素:

var s = new Set([1, 2, 3]); s; // Set {1, 2, 3} s.delete(3); s; // Set {1, 2}

Set對象可以自動排除重復(fù)項

const stringArr = ['string','string','string3','string4'];var newSet = new Set(stringArr);for(let key of newSet){console.log(key);} 輸出:string,string3,string4

將set類變成數(shù)組

var arr = [2,7,1,7,8,2] var newArr = [...new Set(arr)] // 去重

split

split() 方法用于把一個字符串分割成字符串?dāng)?shù)組。

**注釋:**如果把空字符串 (“”) 用作 separator,那么 stringObject
中的每個字符之間都會被分割。
**注釋:**String.split()執(zhí)行的操作與 Array.join 執(zhí)行的操作是相反的。

"hello".split("", 3) //可返回 ["h", "e", "l"] "hello".split("") //可返回 ["h", "e", "l", "l", "o"] "2:3:4:5".split(":") //將返回["2", "3", "4", "5"]

splice slice

splice會改變原數(shù)組,splice不可以對字符串操作

splice(index,a,value,value....

index代表從函數(shù)第幾位開始加入value,
a代表刪除并替換value的位數(shù),如果是0就代表不刪除直接添加。
value(可選)向數(shù)組添加的新項目。
當(dāng)要刪除數(shù)組的第二位和第三位時就可以這么寫:splice(1,2)

const arr = [1,2,1] arr.splice(1,0,5) clg(arr) // [1,5,2,1]

splice沒有返回值,只是對數(shù)組的操作。
slice(start,end)返回值 ,從數(shù)組/字符串的start到end 不會改變原數(shù)組不包括end那位
當(dāng)使用負數(shù)作為參數(shù)時就表示從數(shù)組末尾開始計數(shù)。
而當(dāng)省略第二個可選參數(shù)時,表示一直找到數(shù)組末尾。所以在數(shù)組上使用slice(-1)就可以獲取數(shù)組的最后一個元素了。(-1指最后一個元素,-2 指倒數(shù)第二個元素) .

var args = [1, 2, 3]; var lastElement = args.slice(-1);//3

substring()

substring() 方法用于提取字符串中介于兩個指定下標之間的字符。

返回值:
一個新的字符串,該字符串值包含 stringObject 的一個子字符串,其內(nèi)容是從 start 處到 stop-1處的所有字符,其長度為 stop 減 start。
說明:
substring()方法返回的子串包括 start 處的字符,但不包括 stop 處的字符。
如果參數(shù) start 與 stop 相等,那么該方法返回的就是一個空串(即長度為0的字符串)。如果 start 比 stop 大,那么該方法在提取子串之前會先交換這兩個參數(shù)。
**重要事項:**與 slice() 和 substr() 方法不同的是,substring()不接受負的參數(shù)。

sort

allData: [{name: '馬佳輝',value:65},{name: '馬',value:58},{name: '馬佳',value:12} ]

排序方法

this.allData.sort((a,b) => {return a.value - b.value //從小到大排序(升序)// b.value-a.value從大到小(降序) }) var dataList = [2,5,8,1,3] dataList.sort((a,b) => {return a - b; })

stopPropagation() 事件方法

防止同一事件的任何傳播:

function func1(event) {alert("DIV 1");event.stopPropagation(); } stopPropagation() 方法防止調(diào)用相同事件的傳播。

傳播意味著向上冒泡到父元素或向下捕獲到子元素。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lKVBIYix-1669349956873)(media/image34.png)]{width=“3.9166666666666665in”
height=“1.4270833333333333in”}

select()

方法用于選擇該元素中的文本。

<textarea id="txt1">Hello world....</textarea> document.getElementById("txt1").select() // 獲得HEllow world....

trimStart(),trimEnd(),trim()

只能對字符串操作 不然會報錯
trim() 方法用于刪除字符串的頭尾空白符,空白符包括:空格、制表符tab、換行符等其他空白符等。
trim() 方法不會改變原始字符串。
trim() 方法不適用于 null, undefined, Number 類型。
ES2019 對字符串實例新增了trimStart()和trimEnd()這兩個方法。它們的行為與trim()一致,trimStart()消除字符串頭部的空格,trimEnd()消除尾部的空格。它們返回的都是新字符串,不會修改原始字符串。

const s = ' abc '; s.trim() // "abc" s.trimStart() // "abc " s.trimEnd() // " abc"

上面代碼中,trimStart()只消除頭部的空格,保留尾部的空格。trimEnd()也是類似行為。
除了空格鍵,這兩個方法對字符串頭部(或尾部)的 tab鍵、換行符等不可見的空白符號也有效。

toFixed

Num.toFixed(2) 四舍五入保留兩位小數(shù),并把返回值轉(zhuǎn)化為字符串

toString()

轉(zhuǎn)換為字符串 number.toString()

toLowerCase

所有字母變成小寫
name.toLowerCase()

toUpperCase

所有字母變成大寫

name.toUpperCase()

typeof

console.log(typeof '132'); // string console.log(typeof 123); // number console.log(typeof []); // object console.log(typeof {}); // object console.log(typeof null); // object console.log(typeof undefined); // undefined console.log(typeof NaN); // number console.log(typeof true); // boolean 基礎(chǔ)數(shù)據(jù)可以用 typeof '132' === string (true)判斷

unshift() 方

unshift() 方法將新項添加到數(shù)組的開頭,并返回新的長度。
注釋: unshift() 方法會改變數(shù)組的長度。

window

ES6
為了保持兼容性,var命令和function命令聲明的全局變量,依舊是頂層對象的屬性;另一方面規(guī)定,let命令、const命令、class命令聲明的全局變量,不屬于頂層對象的屬性。也就是說,從ES6 開始,全局變量將逐步與頂層對象的屬性脫鉤。

var a = 1; // 如果在 Node 的 REPL 環(huán)境,可以寫成 global.a // 或者采用通用方法,寫成 this.a window.a // 1 let b = 1; window.b // undefined

上面代碼中,全局變量a由var命令聲明,所以它是頂層對象的屬性;全局變量b由let命令聲明,所以它不是頂層對象的屬性,返回undefined。

window.open('www.baidu.com', '_blank'); // 新開頁跳轉(zhuǎn)外部鏈接 window.location.href = 'www.baidu.com' // 當(dāng)前頁跳轉(zhuǎn)外部鏈接 獲取瀏覽器URL地址 window.location.href(vue內(nèi)如果使用route.path只能獲得/hy-screen等,不能獲得前綴地址)

window.addEventListener

mousewheel

window.addEventListener("mousewheel", this.handleScroll, false);

監(jiān)聽鼠標滾輪,方法調(diào)用 handleScroll(e) e.deltaY為100就是滾輪向下滾了一格,-100就是向上滾
或者綁定ref

// 監(jiān)聽當(dāng)前組件的滾動事件 this.box = this.$refs.viewBox; this.box.addEventListener("scroll",() => {console.log(this.$refs.viewBox.scrollTop);// if (this.$refs.viewBox.scrollTop > 0) {// 顯示下拉loading,展示更多數(shù)據(jù)this.handleScroll();// } }, false );

但是vue有更好的方法直接在元素上綁定@mousewheel=“handleScroll”
resize: 監(jiān)聽屏幕大小變化

// 跟隨屏幕自適應(yīng) window.addEventListener('resize', function() {mCharts.resize(); // 如果設(shè)置了圖表大小就會無法自適應(yīng) })

window.requestAnimationFrame

window.requestAnimationFrame(callback);

參數(shù):callback
下一次重繪之前更新動畫幀所調(diào)用的函數(shù)(即上面所說的回調(diào)函數(shù))。該回調(diào)函數(shù)會被傳入DOMHighResTimeStamp參數(shù),該參數(shù)與performance.now()的返回值相同,它表示requestAnimationFrame() 開始去執(zhí)行回調(diào)函數(shù)的時刻。

可選鏈操作符? ?? ||

如果讀取對象內(nèi)部的某個屬性,往往需要判斷一下該對象是否存在,比如獲取list.info.base.userName的值

// 錯誤寫法,當(dāng)某一層級值為null或undefined時,會報錯 const userName = list.info.base.userName; // 正確寫法(我們常用的方式) const userName = (list && list.info && list.info.base && list.info.base.userName) || 'userName

要取的userName處于對象的第三層,需要三層&&判斷才能取到值。
es2020引入鏈合并運算符,簡化上面的寫法。

const userName = list?.info?.base?.userName || 'userName';

鏈合并運算符,在調(diào)用的時候判斷左側(cè)的對象是否為null或undefined。如果是的,就不再往下運算,而是返回undefined。
三種用法:

obj?.prop // 對象屬性 obj?.[expr] // 同上 func?.(...args) // 函數(shù)或?qū)ο蠓椒ǖ恼{(diào)用

判斷符號^

判斷規(guī)則: a^b A b 返回值 1 1 0 1 0 1 0 1 1 0 0 0

** 指數(shù)

2 ** 10 = 1024 2 ** 3 = 8

屬性名當(dāng)作變量

var name = 'key' var obj = {[name]: 'aaaa' } console.log(obj) // {key: 'aaaa'}

深拷貝:

b = JSON.parse(JSON.stringify(a))

函數(shù)擴展

表達式還可以用于定義方法名。

let obj = { ['h' + 'ello']() {return 'hi'; }}; obj.hello() // hi

ES6
允許字面量定義對象時,用方法二(表達式)作為對象的屬性名,即把表達式放在方括號內(nèi)。

let propKey = 'foo'; let obj = {[propKey]: true,['a' + 'bc']: 123 };

下面是另一個例子。

let lastWord = 'last word'; const a = {'first word': 'hello',[lastWord]: 'world'}; }a['first word'] // "hello" a[lastWord] // "world" a['last word'] // "world"

指數(shù)運算符

ES2016 新增了一個指數(shù)運算符(**)。

2 ** 2 // 4 這個運算符的一個特點是右結(jié)合,而不是常見的左結(jié)合。多個指數(shù)運算符連用時,是從最右邊開始計算的。 // 相當(dāng)于 2 ** (3 ** 2) 2 ** 3 ** 2 // 512

上面代碼中,首先計算的是第二個指數(shù)運算符,而不是第一個。
指數(shù)運算符可以與等號結(jié)合,形成一個新的賦值運算符(**=)。

let a = 1.5; a **= 2;// 等同于 a = a * a;

擴展運算符 三個點(…)

對象中的擴展運算符(…)用于取出參數(shù)對象中的所有可遍歷屬性,拷貝到當(dāng)前對象之中

let bar = { a: 1, b: 2 }; let baz = { ...bar }; // { a: 1, b: 2 }*
  • 擴展運算符可以與解構(gòu)賦值結(jié)合起來,用于生成數(shù)組
first // 1 rest // [2, 3, 4, 5] const [first, ...rest] = [1, 2, 3, 4, 5];

如果用戶自定義的屬性,放在擴展運算符后面,則擴展運算符內(nèi)部的同名屬性會被覆蓋掉。

let bar = {a: 1, b: 2}; let baz = {...bar, ...{a:2, b: 4}}; *// {a: 2, b: 4}*

如果把自定義屬性放在擴展運算符前面,就變成了設(shè)置新對象的默認屬性值。

let aWithDefaults = { x: 1, y: 2, ...a };

如果擴展運算符調(diào)用的是對象,其只是調(diào)用了他的引用,當(dāng)里面里面的內(nèi)容被改變的時候其之前運用…生成的對象內(nèi)的數(shù)據(jù)也會相應(yīng)改變與數(shù)組的擴展運算符一樣,對象的擴展運算符后面可以跟表達式。

const obj = {...(x > 1 ? {a: 1} : {}),b: 2 };
  • 可以將數(shù)組轉(zhuǎn)換為參數(shù)序列
function add(x, y) {return x + y; } const numbers = [4, 38]; add(...numbers) *// 42*

如果將擴展運算符用于數(shù)組賦值,只能將有擴展運算符的參數(shù)放在參數(shù)的最后一位,否則會報錯。

  • 擴展運算符還可以將字符串轉(zhuǎn)為真正的數(shù)組
[...'hello']*// [ "h", "e", "l", "l", "o" ]*

https://blog.csdn.net/astonishqft/article/details/82899965

函數(shù)默認值設(shè)置

function Point(x = 0, y = 0) {this.x = x;this.y = y; } const p = new Point(); p // { x: 0, y: 0 }

模板字符串

ES6中提供了模版字符串,用`(反引號)標識,用${}將變量括起來。上面的例子可以用模版字符串寫成下面這樣:

$("#result").append(`He is <b>${person.name}</b>and we wish to know this${person.age}.that is all` ); 注意:如果使用模版字符串表示多行字符串,所有的空格和縮進都會被保存在輸出中!!console.log( `No matter what you do, I trust you.`);

顯然,由于反引號是模版字符串的標識,如果我們需要在字符串中使用反引號,我們就需要對其進行轉(zhuǎn)義,如下所示:

No matter what you do, I trust you.`

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GHtiNdZF-1669349956874)(media/image35.png)]{width=“4.666666666666667in”
height=“0.9895833333333334in”}
模板字符串內(nèi)還可以調(diào)用任意的JavaScript表達式,還可以進行運算,以及引用對象屬性還有函數(shù)
當(dāng)調(diào)用的函數(shù)的返回值不是字符串的時候會被轉(zhuǎn)化為字符串
所有模板字符串的空格和換行,都是被保留的,比如

  • 標簽前面會有一個換行。如果你不想要這個換行,可以使用trim方法消除它。

$('#list').html(`<ul> <li>first</li> <li>second</li></ul> `.trim());

變量的解構(gòu)賦值

以前,為變量賦值,只能直接指定值。

let a = 1;let b = 2;let c = 3;

ES6 允許寫成下面這樣。

let [a, b, c] = [1, 2, 3];

當(dāng)右邊的數(shù)組數(shù)量大于左邊的時候也是可以對應(yīng)賦值的,但是后面的如果不是數(shù)組就會報錯
對于 Set 結(jié)構(gòu),也可以使用數(shù)組的解構(gòu)賦值。

let [x, y, z] = new Set(['a', 'b', 'c']); x // "a"

事實上,只要某種數(shù)據(jù)結(jié)構(gòu)具有 Iterator接口,都可以采用數(shù)組形式的解構(gòu)賦值。

function fibs() {let a = 0;let b = 1;while (true) {yield a;[a, b] = [b, a + b];} } let [first, second, third, fourth, fifth, sixth] = fibs(); sixth // 5

默認值解構(gòu)賦值允許指定默認值。

let [foo = true] = []; foo // true let [x, y = 'b'] = ['a']; // x='a', y='b' let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'

注意,ES6
內(nèi)部使用嚴格相等運算符(===),判斷一個位置是否有值。所以,只有當(dāng)一個數(shù)組成員嚴格等于undefined,默認值才會生效。

let [x = 1] = [undefined]; x // 1 let [x = 1] = [null]; x // null

解構(gòu)不僅可以用于數(shù)組,還可以用于對象。

let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; foo // "aaa" bar // "bbb"

對象的解構(gòu)與數(shù)組有一個重要的不同。數(shù)組的元素是按次序排列的,變量的取值由它的位置決定;而對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。
對象的解構(gòu)賦值,可以很方便地將現(xiàn)有對象的方法,賦值到某個變量。

// 例一 let { log, sin, cos } = Math; // 例二 const { log } = console.log('hello') // hello

上面代碼的例一將Math對象的對數(shù)、正弦、余弦三個方法,賦值到對應(yīng)的變量上,使用起來就會方便很多。例二將console.log賦值到log變量。
如果變量名與屬性名不一致,必須寫成下面這樣。

let { foo: baz } = { foo: 'aaa', bar: 'bbb' }; baz // "aaa" let obj = { first: 'hello', last: 'world' }; let { first: f, last: l } = obj; f // 'hello' l // 'world'let { foo: foo, bar: bar } = { foo: 'aaa', bar: 'bbb' };

字符串的解構(gòu)賦值
字符串也可以解構(gòu)賦值。這是因為此時,字符串被轉(zhuǎn)換成了一個類似數(shù)組的對象。

const [a, b, c, d, e] = 'hello'; a// "h" b// "e" c// "l" d// "l" e// "o"

類似數(shù)組的對象都有一個length屬性,因此還可以對這個屬性解構(gòu)賦值。

let {length : len} = 'hello'; len // 5

遍歷 Map 結(jié)構(gòu)
任何部署了 Iterator 接口的對象,都可以用for…of循環(huán)遍歷。Map
結(jié)構(gòu)原生支持 Iterator
接口,配合變量的解構(gòu)賦值,獲取鍵名和鍵值就非常方便。

const map = new Map(); map.set('first', 'hello'); map.set('second', 'world'); for (let [key, value] of map) { console.log(key + " is " + value);} // first is hello// second is world

如果只想獲取鍵名,或者只想獲取鍵值,可以寫成下面這樣。

// 獲取鍵名 for (let [key] of map) {} // 獲取鍵值 for (let [,value] of map) {}

防抖、節(jié)流

data(){return {timer: null} } // 節(jié)流 點擊后1秒內(nèi)再次點擊則重新開始計時,最后一次點擊1秒后再調(diào)用方法 changeHomeImg () {const that = thisif (this.timer) {clearTimeout(this.timer)}this.timer = setTimeout(function () {that.changeNav() // 需要執(zhí)行的方法that.timer = undefined}, 1000) }, // 防抖 短時間內(nèi)點擊后立刻觸發(fā)方法,1秒內(nèi)無法再次觸發(fā) changeHomeImg () {const that = thisif (this.timer) {return}this.changeNav() // 需要執(zhí)行的方法this.timer = setTimeout(function () {that.timer = undefined}, 1000) }, // 節(jié)流 點擊后一秒后執(zhí)行方法,在這期間點擊無效,1秒后才能重新點擊 changeHomeImg () { const that = thisif (!this.timer) {this.timer = setTimeout(function () {that.changeNav() // 需要執(zhí)行的方法that.timer = undefined}, 1000) } }

正則表達式

/^(?:(?!0{1,4})d{1,4}|10{4}|0)$/ 大于0小于10000 /^100$|^(d|[1-9]d)(.d+)*$/ 大于0小于100 /^[1-9]d{0,5}$/ 小于7位 也就是 0-999999

對象去重

const noRepeat = [...new Set(arr.map(item => JSON.stringify(item)))]// 反序列化 const newArr = noRepeat.map(item => JSON.parse(item))

刪除dom節(jié)點的子元素

  • const dom = document.querySelector('#containers') if(!dom) return let child = dom.lastElementChild while (child) { // 清除dom節(jié)點的子元素dom.removeChild(child)child = dom.lastElementChild }
  • const item = document.querySelector('#itemId') while (item.firstChild) {item.removeChild(item.firstChild) }

    解決內(nèi)存溢出

    "--max_old_space_size=20000" // 增加這一句就可以了!


    過濾特殊字符串

    // eslint-disable-next-line no-useless-escape

    this.fileNameKey = this.fileNameKey.replace(/[-_,!|~`()#$%^&*{}:]/g,

    ‘’);

    解決uview 的$u為未定義問題

    transpileDependencies: ['@ued_fpi/uview-ui'], // 防止uview文件未編譯

    npm run build時提示vue/types/jsx.d.ts中的錯誤

    — 主要是因為vue版本過高引起的,查看了一下vue的版本是vue@2.7.10,需要vue低版本的才可以打包成功

    – 解決方案:
    1、npm install vue@2.6.14 或者 npm install vue@2.6.14 --legacy-peer-deps
    2、npm install vue-template-compiler@2.6.14 或npm install vue-template-compiler@2.6.14 --legacy-peer-deps

    總結(jié)

    以上是生活随笔為你收集整理的ES6JS笔记以及部分运行问题记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    国产一区福利在线 | 亚洲砖区区免费 | 91精品国产一区二区在线观看 | 日韩成人在线一区二区 | 久久国产精品99国产 | 国产日韩欧美在线观看视频 | 天天操天天操天天爽 | 午夜精品久久久久久久久久 | 久久久久久网址 | www.成人sex| 亚洲国产激情 | 亚洲一区二区三区毛片 | 国产精品毛片 | 久草在线观看视频免费 | 国产九色91 | 久久草在线精品 | 国产精品成人自拍 | 99久热在线精品视频 | 国产手机av | 久久精品伊人 | 四虎www com| 午夜精品一区二区三区视频免费看 | 午夜精品久久久久久久久久 | 成人免费视频网 | 在线免费视频a | 91福利区一区二区三区 | 欧美亚洲一区二区在线 | 日韩视频a | 国产精品毛片久久 | 久久免费视频精品 | 四季av综合网站 | 麻豆视频国产精品 | 国产精品视频你懂的 | 国产视频在线免费观看 | 国产精品成人久久久久 | 五月婷婷开心 | 欧美日韩综合在线 | 91看片黄色 | 国产日韩精品一区二区三区在线 | 国产成人在线免费观看 | 精品黄色视| 探花视频在线观看+在线播放 | 中文字幕免费高清在线观看 | 日韩欧美在线国产 | 亚洲一区二区精品在线 | 一区二区在线电影 | 成人网页在线免费观看 | 久久久久久97三级 | 日韩美一区二区三区 | 久久久久久不卡 | 97品白浆高清久久久久久 | 最新国产精品久久精品 | 3d黄动漫免费看 | 国产成人久久精品77777 | 日韩精品免费在线 | 99久在线精品99re8热视频 | 欧美日本国产在线观看 | 亚洲精品免费在线视频 | 欧美综合在线观看 | 精品 一区 在线 | 国产成人精品免费在线观看 | 国产一区二区在线观看免费 | 91高清完整版在线观看 | 国产拍揄自揄精品视频麻豆 | 成人一级视频在线观看 | 国产视频在线观看一区 | 国产精品成人免费一区久久羞羞 | 欧美一区在线看 | 国产在线观看91 | 精品福利片| 亚洲精品乱码久久久久久久久久 | 操操综合 | 天天摸日日摸人人看 | 欧美激情视频一二区 | 精品国产亚洲一区二区麻豆 | 91天天操| 一区二区理论片 | 亚洲免费国产视频 | 500部大龄熟乱视频使用方法 | 日韩欧美精品一区二区 | 天天综合入口 | 国产主播大尺度精品福利免费 | 人人干,人人爽 | 欧美午夜寂寞影院 | 岛国精品一区二区 | 91热视频 | av福利在线看 | 在线观看色网站 | 日韩欧美在线观看一区二区 | 婷婷精品| 国产成人在线网站 | 九九久 | 91麻豆福利 | 99免费在线 | 精品国产视频在线观看 | 最新中文字幕在线播放 | 亚洲视频高清 | 久久精品99国产国产精 | 午夜丁香视频在线观看 | 女人18片毛片90分钟 | 久草网免费 | 日韩动态视频 | 一区二区中文字幕在线播放 | 欧美日韩在线视频观看 | 久久久久久久久免费 | 五月天网站在线 | a v在线观看| 五月婷婷六月丁香 | 91精品国产入口 | 狠狠狠狠狠狠天天爱 | 日韩高清在线一区二区三区 | 最近中文字幕高清字幕在线视频 | 亚洲精品短视频 | 亚洲香蕉视频 | 国产精品福利无圣光在线一区 | 日韩精品第1页 | av在线免费观看网站 | 91在线小视频 | 中文字幕一区二区三区在线视频 | 欧美天天射 | 天天干天天综合 | 成人av网站在线 | 99人久久精品视频最新地址 | 国产精品21区 | 激情视频综合网 | 波多野结衣综合网 | 亚洲国产精品久久久久婷婷884 | 婷婷精品国产一区二区三区日韩 | 亚洲精品网站 | 麻豆国产在线视频 | 国产精品视频免费 | 国产精品1区2区 | 色在线免费 | 91视频最新网址 | 亚洲精品视频网站在线观看 | 免费 在线 中文 日本 | 美女一级毛片视频 | 免费在线成人 | 国产精品视频全国免费观看 | 天天草天天草 | 国内精品在线一区 | 日韩性xxx | 国产小视频精品 | 在线免费黄色av | 久久人人97超碰国产公开结果 | 亚洲免费在线观看视频 | 国产视频日韩视频欧美视频 | 五月天婷婷在线视频 | 国产精品美女久久久久久 | 久久色网站 | 九九热在线精品视频 | 亚洲国产精品推荐 | 久久这里有 | 国产精品手机视频 | 亚洲97在线 | 五月综合色 | 在线播放国产一区二区三区 | av观看久久久 | 国产成人精品一区二区三区在线 | 国产成人在线播放 | 亚洲三级网站 | 97在线成人 | 国产精品久久久久久久久久不蜜月 | 亚洲精品国产精品99久久 | 久久网站av | 国产精品人成电影在线观看 | 国产精品国产三级国产不产一地 | 国产在线资源 | 国产视频欧美视频 | 6080yy午夜一二三区久久 | 国产精品国内免费一区二区三区 | 亚洲精品综合在线观看 | 日韩欧美在线影院 | 色九九影院 | 91在线免费公开视频 | 18做爰免费视频网站 | av福利在线播放 | 日韩中文字幕在线 | 久久精品91视频 | 国产精品 日韩 欧美 | 国产欧美精品在线观看 | 国产日韩视频在线播放 | 91看国产| 欧美大荫蒂xxx | 久久免费毛片视频 | www99久久| 中文字幕亚洲不卡 | 日本女人在线观看 | 亚洲精品乱码久久久久久按摩 | 91精品爽啪蜜夜国产在线播放 | 婷婷免费在线视频 | 91热| 最新成人在线 | 99久久国产免费,99久久国产免费大片 | 天海翼一区二区三区免费 | 亚州视频在线 | 中文字幕在线观看日本 | 中文字幕一区二区三区乱码不卡 | 九草在线观看 | 在线小视频你懂的 | 国产午夜精品久久久久久久久久 | 91插插插免费视频 | 亚洲 精品在线视频 | 欧美精品一区在线 | 欧美一区二区三区在线播放 | 成年人在线免费看 | 欧美夫妻性生活电影 | 国产成人香蕉 | 国产精品av在线 | 婷婷草 | 久久字幕精品一区 | 国产精品麻豆三级一区视频 | 久久视频精品在线 | 免费视频网| 国产一区二区三区视频在线 | 又污又黄网站 | 精品国内自产拍在线观看视频 | 欧美91片| 亚洲九九九 | 国产v在线播放 | av片在线观看 | 一级免费av | 国产亚洲欧美精品久久久久久 | 久久亚洲欧美日韩精品专区 | 欧美aa在线 | 国内精品国产三级国产aⅴ久 | www.888av | 欧美伦理一区二区三区 | 天天草综合 | 中文国产成人精品久久一 | 久草在线资源观看 | 国产在线一卡 | 在线观看视频一区二区 | 日韩高清www | 亚洲成人免费 | 狠狠操天天射 | a级国产毛片 | 91精品对白一区国产伦 | 国产丝袜一区二区三区 | 色狠狠综合天天综合综合 | 麻豆视频一区二区 | 久久精品国亚洲 | 精品国产久 | 五月天最新网址 | 中文一区在线 | 欧美特一级 | 中文永久免费观看 | 91精品一区二区在线观看 | 免费福利在线视频 | 婷婷丁香国产 | 国产尤物在线视频 | 国产精品视频区 | 婷婷中文字幕 | 精品999在线观看 | 久久高清片 | 久久国产精品99国产 | 色综合天天天天做夜夜夜夜做 | 91成人蝌蚪 | 在线观看亚洲视频 | 国产精品久久一区二区三区, | 人人爽人人爽人人片 | 欧美国产不卡 | 超黄视频网站 | 黄色片毛片 | 欧美a级成人淫片免费看 | 高潮久久久久久 | 国产一级免费视频 | 99视频免费看| 中文国产字幕在线观看 | 99精品免费久久久久久日本 | 99精品视频免费全部在线 | 国产在线欧美在线 | 国产特级毛片aaaaaa毛片 | 在线视频你懂 | 欧美日韩在线观看视频 | 中文字幕在线观看资源 | 久久精品视频在线观看免费 | 97精品国产97久久久久久久久久久久 | 911精品美国片911久久久 | 黄色大全视频 | 在线亚洲高清视频 | 久久久久99精品国产片 | 久久国产网| 色 免费观看 | 中文字幕在线日本 | 亚洲美女视频在线 | 午夜精品久久久 | 天天天天色射综合 | 高清av影院 | 日韩丝袜 | 最新超碰在线 | 美女国产精品 | www..com黄色片| 久久国产电影院 | 色爱区综合激月婷婷 | 激情网五月天 | 在线精品视频免费播放 | 国产码电影 | 国产一区二区播放 | 九九视频免费在线观看 | 69精品视频 | 天天射天天操天天干 | 国产成人精品电影久久久 | 五月婷影院 | 国产精品综合av一区二区国产馆 | 九九日九九操 | 亚洲一区二区高潮无套美女 | 亚洲最大在线视频 | 中文字幕精品www乱入免费视频 | 日本性高潮视频 | 国产中文字幕一区 | 午夜av电影 | 久久久久久不卡 | 亚洲精品字幕 | 免费高清在线一区 | 久久久国产一区二区三区四区小说 | a在线视频v视频 | 有码一区二区三区 | 国偷自产中文字幕亚洲手机在线 | 久久久久日本精品一区二区三区 | 国产精品久久久久一区二区三区 | 涩涩网站在线观看 | 久久99网| 日本视频网 | 日日干天天 | 亚洲成av人片在线观看www | 国内精品视频一区二区三区八戒 | 黄色网址a | 999视频网| 色福利网 | 亚洲精品成人网 | 久久永久免费视频 | 日韩精品一区二区在线视频 | 69xx视频 | 国产一区不卡在线 | 91黄站| 国产精品私人影院 | 最近中文字幕免费av | 99久久夜色精品国产亚洲 | 在线看v片成人 | 国产精品小视频网站 | 97视频在线 | 国产又粗又长的视频 | 欧美日韩首页 | 国产一级91 | 国产手机在线观看 | 久在线观看 | 中文字幕乱偷在线 | 日韩欧美精品一区 | 天天操天天射天天添 | 国产原创91 | 麻花传媒mv免费观看 | 久草在线免费播放 | 久久久国产影院 | 国产精品成人在线 | av久久久久久 | 国产一级精品绿帽视频 | 全久久久久久久久久久电影 | 在线看不卡av| 国产成人免费高清 | 久久伊人操 | 成人在线观看资源 | 免费看片黄色 | 亚洲免费av网站 | 欧美日韩免费观看一区二区三区 | 就要干b| 成人免费 在线播放 | 久久爱资源网 | 亚洲综合少妇 | 国产亚洲精品久久久久久无几年桃 | 在线成人国产 | 欧美成天堂网地址 | 91av视频导航| 久久福利精品 | 欧美激情精品久久久久久变态 | 丁香久久婷婷 | 中文字幕人成人 | 亚洲2019精品| 激情久久久久 | 99热精品国产一区二区在线观看 | 国产亚洲视频在线免费观看 | 美女在线免费观看视频 | 国产精品一区二区无线 | 精品久久99 | www.大网伊人| 中文字幕在线看 | 中文乱码视频在线观看 | 激情综合中文娱乐网 | 久久综合久久伊人 | 久久久免费视频播放 | 一区二区三区日韩精品 | 91久久国产露脸精品国产闺蜜 | 欧美a√大片 | 亚洲精品激情 | 97超碰人人在线 | 99久久99视频只有精品 | 国产精品久久电影网 | 国产成人三级三级三级97 | 在线视频观看亚洲 | 国产成人精品久久久久 | 亚a在线 | av网站在线免费观看 | 欧美日韩久久不卡 | 五月婷婷免费 | 中文字幕欧美激情 | 免费视频三区 | 久久精品视频在线 | 国产精品精品国产婷婷这里av | 69国产盗摄一区二区三区五区 | 国产护士hd高朝护士1 | 亚洲精品午夜国产va久久成人 | 亚洲人xxx | 日本91在线 | 国产在线超碰 | 97成人在线观看视频 | 香蕉视频久久 | 日本午夜免费福利视频 | 超碰97免费在线 | 久热久草| 最近日本韩国中文字幕 | 久久综合狠狠综合久久综合88 | 黄色国产高清 | av经典在线| 日韩欧美中文 | 九九久 | 蜜臀av性久久久久av蜜臀三区 | 久久只精品99品免费久23小说 | 亚洲视频免费 | 国产经典三级 | 蜜臀91丨九色丨蝌蚪老版 | 日韩精品在线免费播放 | 在线观看视频你懂得 | 欧美三级高清 | 亚洲视频 视频在线 | 夜夜高潮夜夜爽国产伦精品 | 黄色福利网 | 伊人资源站 | 国产成人精品av在线观 | 久久草草热国产精品直播 | 久99热| 国产又粗又猛又爽又黄的视频免费 | 日韩电影在线观看一区二区 | 国产尤物在线观看 | 四虎成人免费观看 | 91九色自拍 | 成人免费在线网 | 97在线免费观看 | 天天操夜夜操国产精品 | 亚洲国产97在线精品一区 | 免费中文字幕 | 日日干影院| 免费观看午夜视频 | 欧美精品久久久久久久久老牛影院 | 777久久久 | 国产激情免费 | 国产精品毛片久久久 | 日韩精品欧美一区 | 成人精品视频久久久久 | 亚洲成人免费在线 | 毛片一级免费一级 | 久久久亚洲麻豆日韩精品一区三区 | 九九热有精品 | 伊人五月天| 久久精品国产精品亚洲 | 国产丝袜一区二区三区 | 欧美激情精品久久 | 欧美一二三视频 | 久草网视频 | av免费电影网站 | 中文字幕色网站 | av中文字幕在线免费观看 | 国产a级精品| 国产成人在线免费观看 | 国产一级电影在线 | 亚洲综合精品在线 | 91丨九色丨蝌蚪丰满 | 日日日网| 久久毛片高清国产 | 成人中文字幕在线 | www.天天射.com | 日日干av | 国产成人av在线 | 欧美怡红院视频 | 欧美 亚洲 另类 激情 另类 | 五月天六月丁香 | 五月宗合网| 国产在线观看黄 | 亚洲一级电影在线观看 | 亚洲爱爱视频 | 国产精品手机在线 | 狠狠躁日日躁狂躁夜夜躁av | 黄色综合 | 久久久视屏 | 久久免费视频国产 | 热re99久久精品国产99热 | 国产主播99| 久久久国产一区二区三区四区小说 | 一区二区三区在线影院 | 国产精品国产自产拍高清av | 正在播放国产91 | 欧美a影视| 久久久久久久久久免费视频 | 免费高清在线视频一区· | 精品成人a区在线观看 | 久久久久久久久久久久av | 欧美坐爱视频 | 国产手机视频在线 | 国产人免费人成免费视频 | 日韩精品视 | 超碰人人91 | 中文字幕观看av | 久操视频在线免费看 | 精品国产一二三 | 日韩r级在线 | 在线免费亚洲 | 日日精品 | 天天干天天操天天射 | 亚洲成av片人久久久 | 在线观看亚洲a | 日韩天天综合 | 日韩视频www| 日本中文在线播放 | 8x成人在线 | 天堂av在线免费 | 亚洲一本视频 | 五月婷婷av在线 | 99热在线看 | 国产一级性生活 | 免费观看www视频 | 九九免费在线观看视频 | 久久精品久久精品久久精品 | 91精品国产高清自在线观看 | 美女免费网站 | 又黄又爽又无遮挡的视频 | 激情综合网色播五月 | 97色国产| 久久9精品 | 色综合久久综合中文综合网 | 日韩大片免费在线观看 | 樱空桃av | 久久精品一二三区 | 精品一区精品二区高清 | 精品在线亚洲视频 | 亚洲一区视频在线播放 | 日韩在线网址 | 亚洲成aⅴ人片久久青草影院 | 亚洲,国产成人av | 黄色片网站免费 | 欧美另类美少妇69xxxx | 一区二区三区高清在线观看 | 亚洲精品在线观看免费 | 精品视频在线免费 | 欧美日韩免费观看一区=区三区 | 中文字幕在线免费看 | 日韩福利在线观看 | 日韩三级视频在线观看 | 色综久久| 最新精品国产 | 蜜桃麻豆www久久囤产精品 | 成人av免费电影 | 日韩三级视频在线观看 | 成人资源在线播放 | 999久久精品 | 黄色1级大片 | 免费观看视频的网站 | 狠狠干夜夜操 | 一区二区三区四区在线 | 欧美一级电影免费观看 | 久久久久久高潮国产精品视 | 韩国av一区二区 | 久久黄色免费视频 | 黄色影院在线免费观看 | 91精品免费看 | 欧美视频网址 | 999成人| 免费高清男女打扑克视频 | 欧美性直播 | 亚洲精品国产拍在线 | 婷色| 日韩欧美69 | 日韩精品一区二区不卡 | 成人午夜剧场在线观看 | 免费三级黄色 | 一区二区三区在线免费观看 | 日韩欧美专区 | 中文字幕精品一区久久久久 | 日韩理论在线观看 | 99视频黄| 国产精品久久久久久久久久白浆 | 色综合久久88色综合天天6 | 97网在线观看 | 国产美女网站在线观看 | 久久国产精品99久久久久 | 丁香六月久久综合狠狠色 | 久久九九久久九九 | 成人国产精品一区 | 久久国产精品99久久久久久老狼 | 久久综合九九 | 亚洲高清资源 | 日韩av不卡在线观看 | 国产一区二区电影在线观看 | 91成人黄色| 九九综合久久 | 91成人久久 | 国产午夜精品一区二区三区四区 | 97超碰人人| 亚洲女欲精品久久久久久久18 | 日韩网站视频 | 中文字幕免费观看 | 国产99一区视频免费 | 国产精品久久久久毛片大屁完整版 | 9在线观看免费高清完整版在线观看明 | 亚洲国产无 | 久久草网 | 国产黄大片在线观看 | 在线观看中文字幕网站 | 一级片黄色片网站 | 网站免费黄 | 色综合久久88色综合天天 | 成人av影视在线 | 国产91aaa| 国产黄色片一级三级 | 久久久久99精品国产片 | 91精品电影 | 国产精品久久久久婷婷 | 精品久久久免费 | 九九久久久久久久久激情 | wwxxxx日本 | 亚a在线 | 久久色视频 | 国产精品久久一区二区三区, | 99国产精品一区 | 美女网站视频免费黄 | www.精选视频.com| 亚洲三级精品 | 日日爱夜夜爱 | 精品一区电影国产 | 99久久精品久久久久久清纯 | 日韩高清av| 久久久久久久毛片 | 青青看片 | 成人黄色短片 | 色婷婷激情综合 | 中文在线a在线 | 国产精品欧美日韩在线观看 | 五月天综合网站 | 99热这里有精品 | 欧美日韩免费一区 | 日韩精品在线看 | www五月天婷婷 | 欧美黑人性爽 | 国产成人免费高清 | 夜夜夜夜爽| 美国三级黄色大片 | 欧美少妇xxx | 国产麻豆剧果冻传媒视频播放量 | 天天操天天干天天操天天干 | 国产精品久久久电影 | 久久久久国产精品厨房 | 国产一级片不卡 | 亚洲做受高潮欧美裸体 | 免费精品国产va自在自线 | 久久精品网址 | 91精品伦理 | 久草热久草视频 | 久久久久久欧美二区电影网 | 亚洲激情国产精品 | 狠狠色丁香久久婷婷综合丁香 | 韩日电影在线 | 国产不卡一区二区视频 | 999久久久免费精品国产 | 麻豆成人在线观看 | 日本激情视频中文字幕 | 国产精品美女久久久网av | 婷婷丁香色 | 国产亚洲精品无 | 日本在线观看中文字幕 | 国产视频午夜 | 成人免费精品 | 美女网站在线 | 国产精品欧美 | 久草免费电影 | 日韩成人欧美 | 亚洲伊人网在线观看 | 久久国产精品久久精品国产演员表 | 精品国产乱码久久久久久天美 | 美女网站在线观看 | 99自拍视频在线观看 | 久久专区| 亚洲资源在线网 | 国产成人在线精品 | 国产精品五月天 | 黄色资源在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久精品—区二区三区 | 国内精品一区二区 | 天天拍天天爽 | 91精品国产91p65 | 91大神精品视频在线观看 | 国产小视频精品 | 福利久久| 特黄色大片 | 成人日韩av | 五月天,com| 最新国产中文字幕 | 视频一区二区精品 | 久久精品视频在线观看 | 日韩在线免费视频 | 天天射天天爽 | 国产福利av| 久草视频在线新免费 | 久久久久伊人 | 亚洲午夜久久久久久久久久久 | 中文字幕人成不卡一区 | 久草免费在线视频观看 | 国产午夜激情视频 | 久久久久久久久久久成人 | 日韩中文在线视频 | 高清av免费一区中文字幕 | 亚洲精品久久在线 | 欧美一级爽 | 免费视频成人 | 三三级黄色片之日韩 | 亚洲播播 | 天天干天天干天天色 | 观看免费av | 久久免费视频在线观看 | 黄色精品视频 | 丁香六月av | 日韩精品久久一区二区三区 | 国产视频资源在线观看 | 欧美亚洲三级 | 成人午夜在线观看 | 麻豆影视网站 | 久久综合一本 | 日韩高清av| 亚洲精品视频久久 | 国产黄色片免费在线观看 | 91高清在线看 | 狠狠躁夜夜av | 韩日三级av | 92国产精品久久久久首页 | 久99久中文字幕在线 | 亚洲最新毛片 | 在线观看va | 国产一级淫片在线观看 | 国产视频网站在线观看 | 韩国三级在线一区 | 欧美性色19p | 美女久久久久久久久久久 | 手机色在线 | 中文字幕在线观看免费高清电影 | 日韩精品一区二区三区第95 | 91在线免费公开视频 | av五月婷婷 | 日日操天天操夜夜操 | 五月宗合网 | 久久精品国产亚洲 | 国产精品久久一区二区三区不卡 | 国产a高清 | 免费视频一二三 | 日韩av福利在线 | 久久国产视频网站 | 西西444www大胆无视频 | 99视频在线精品国自产拍免费观看 | 亚洲精品字幕 | 日韩在线 一区二区 | 欧美性生活一级片 | 国产一级在线 | 在线观看国产麻豆 | 97品白浆高清久久久久久 | 亚州日韩中文字幕 | 在线导航福利 | 国产专区日韩专区 | 黄色一级影院 | 国产精品高潮在线观看 | 麻豆免费在线播放 | 亚洲h视频在线 | 久草热久草视频 | 91精品爽啪蜜夜国产在线播放 | 黄色的网站免费看 | 99久久99视频只有精品 | 五月开心激情 | 韩日成人av | 99热播精品 | 夜夜操天天干 | 婷婷九月激情 | av免费在线免费观看 | 成人在线观看网址 | 欧美日韩精品在线观看 | 婷婷视频在线 | 国产1级视频 | 香蕉久久久久 | 美女视频是黄的免费观看 | 国产高清视频在线播放一区 | 青青射| 在线观看网站你懂的 | 91最新在线 | 一区二区在线电影 | 日韩在线观看视频中文字幕 | 久久午夜精品影院一区 | 亚洲成av人片在线观看无 | 日b黄色片| 国产亚洲精品久久久久久电影 | 欧美极品一区二区三区 | 99精品视频在线观看播放 | 99精品国产成人一区二区 | 亚洲一区二区三区在线看 | 在线欧美中文字幕 | 99精品免费观看 | 日韩精品在线视频免费观看 | 日韩中文字幕网站 | 激情欧美日韩一区二区 | 欧美日本不卡 | 国产成人精品999在线观看 | 国产精品高清一区二区三区 | 中文字幕在线观看av | 曰韩精品 | 国产精品女同一区二区三区久久夜 | 国产日韩精品在线 | 日日操狠狠干 | 免费看成人片 | 黄色软件在线观看 | 国产午夜免费视频 | 亚洲免费在线看 | 九九九九九九精品任你躁 | 91久久国产露脸精品国产闺蜜 | 麻豆久久久久 | 日韩成人精品一区二区 | 国产精品二区在线观看 | 中文一区二区三区在线观看 | 欧美激情综合网 | 国产精品观看在线亚洲人成网 | 国产午夜精品福利视频 | 久久爱综合 | av日韩不卡| 色综合久久久 | 日本中文字幕系列 | 国产精国产精品 | 免费看的黄色小视频 | 亚洲欧美激情精品一区二区 | 亚洲久草网| 中文av在线播放 | 麻豆视屏| 久久人人干 | 天天草天天操 | 日韩av女优视频 | 精品久久久久亚洲 | 日韩av午夜 | 嫩草91影院 | 免费视频久久久久久久 | 亚洲日本成人网 | 久久99热国产 | 欧美激情精品久久久久久 | 99热 精品在线 | 久久久免费 | 国产一级在线视频 | 青青河边草手机免费 | 亚洲人在线视频 | 中文字幕制服丝袜av久久 | av大片免费在线观看 | 国产+日韩欧美 | 狠狠色狠狠色合久久伊人 | 中文字幕一区二区三区乱码在线 | 亚洲日日射 | 国产91精品一区二区麻豆网站 | 99热国产在线 | 在线91色 | 精品视频久久久久久 | 91精品区 | 国产亚洲人成网站在线观看 | 免费精品视频在线 | 国产不卡在线看 | 国产视 | 亚洲人成网站精品片在线观看 | 日操操| 日韩精品一二三 | 久久一视频 | 亚洲精品一区二区网址 | 日日干网 | 911在线| 在线观看视频国产 | 亚洲精品午夜视频 | 日本久久久亚洲精品 | 青草视频在线播放 | 久久久久久久久国产 | 久久免费毛片视频 | 特级西西www44高清大胆图片 | 国产精品成人aaaaa网站 | 香蕉影院在线播放 | 在线视频 影院 | 中文字幕在线免费看线人 | 色婷婷www| 午夜影院在线观看18 | 国产一二三在线视频 | 日韩高清久久 | 久久国产美女 | 涩涩网站在线播放 | 日韩三级中文字幕 | 丁香婷婷基地 | av高清网站在线观看 | 国产在线观看91 | 超碰公开97 | 奇米影视8888 | 91精品久久久久久综合乱菊 | 夜夜躁狠狠躁日日躁 | 色婷婷综合久久久久中文字幕1 | www.久久免费 | 国语精品免费视频 | 一区免费观看 | 久久a久久 | 国内精品免费久久影院 | 91精品在线播放 | 国内一区二区视频 | 久草在线最新免费 | 中文在线字幕观看电影 | 日韩影视在线观看 | 久草资源在线观看 | 精品国产乱码久久久久久1区2匹 | 激情综合网天天干 | 99亚洲精品在线 | 久久视频这里有精品 | 欧美日韩国产一区 | 久久精品2| 国产精品女人网站 | av资源免费看 | 国产成人精品综合 | 中文av一区二区 | 久久av中文字幕片 | 婷香五月| 国产精品一区二区三区在线看 | 久久久久久国产精品 | 免费亚洲精品视频 | 日韩av一区二区在线播放 | 欧美精品亚州精品 | 特级毛片在线观看 | 91手机视频在线 | 精品在线视频一区二区三区 | 国产成人精品久久久 | 国产精品视频在线观看 | www久久久久 | 久久综合狠狠综合久久狠狠色综合 | av一级片在线观看 | 免费久久久 | 在线日韩精品视频 | 狠狠狠狠狠狠天天爱 | 日韩免费电影一区二区 | 91精品在线免费观看视频 | 五月天狠狠操 | 国产91精品欧美 | 国产精品久久久久永久免费观看 | 九色精品免费永久在线 | 日本中文字幕在线 | 天天摸天天操天天舔 | 国产一级高清视频 | 中文字幕在线观看不卡 | 天天操夜夜操夜夜操 | 激情av综合 | 91视频免费网站 | 成人av.com | 国产又粗又硬又长又爽的视频 | 久久婷婷精品视频 | 欧美一区二区在线免费观看 | 亚洲天堂va | 欧美a级片免费看 | 在线免费观看视频你懂的 | 少妇搡bbbb搡bbb搡69 | 国产主播大尺度精品福利免费 | 天堂va欧美va亚洲va老司机 | 在线观看中文字幕视频 | 香蕉精品在线观看 | 亚洲乱亚洲乱亚洲 | av免费看在线 | 中文字幕av日韩 | av免费在线网站 | 日韩欧美在线不卡 | 丁香午夜婷婷 | 久久精品国产精品亚洲 | 狠狠操狠狠干天天操 | 97人人超碰在线 | 日日干天天插 | 亚洲无吗av | 成人av高清 | 91精品日韩 | 久久久在线免费观看 | 天天草天天摸 | 亚洲精品免费在线观看视频 | 亚洲国产精彩中文乱码av | 国产视频一区二区在线 | 中文在线最新版天堂 | 欧美色插| 国内精品久久久久久久影视简单 | 国产99一区视频免费 | 国产精品99久久99久久久二8 | 亚洲成av人片在线观看香蕉 | 视频在线91| 精品理论片 | 中文在线字幕免费观 |