国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

我用到的ES6

libin19890520 / 1107人閱讀

let和const

webpack構(gòu)建的項(xiàng)目,直接廢棄var,直接使用let代替var

for循環(huán)中使用let而不是var

變量聲明之后就不會(huì)改變,請(qǐng)使用const

解構(gòu)賦值

概念: 先解構(gòu)再賦值,先從一堆數(shù)據(jù)中找出自己需要的數(shù)據(jù),然后將找到的數(shù)據(jù)賦值給事先定義好的變量

// 對(duì)象的解構(gòu)賦值
// 使用場(chǎng)景
// 1,等號(hào)右邊是大json,等號(hào)左邊是變量,這樣可快速獲取大json中數(shù)據(jù),后續(xù)可進(jìn)行push到數(shù)組等一系列操作
// 2,react在render中,直接對(duì)組件props或state進(jìn)行解構(gòu)賦值之后,在渲染頁(yè)面直接使用該數(shù)據(jù)
const response = { foo: "aaa", bar: "bbb", result: "hello world"}  // 這個(gè)數(shù)據(jù)一般是ajax請(qǐng)求得到
let { foo, bar } = response // 拿請(qǐng)求數(shù)據(jù)中對(duì)本業(yè)務(wù)有用的數(shù)據(jù)
let result = []
result.push({ foo, bar })
console.log(foo) // aaa
console.log(bar) // bbb
console.log(result) // [ { foo: "aaa", bar: "bbb" } ]
// 對(duì)象接口中key的命名是下劃線方式,而前端使用駱駝方式,可以在解構(gòu)的時(shí)候,直接賦予它別名,demo如下
const { cc_dd: ccDd } = response
console.log("cc_dd解構(gòu)賦值別名使用: ", ccDd)

// 數(shù)組的解構(gòu)賦值
/*解構(gòu): 從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,如果解構(gòu)不成功,直接undefined*/
let [a, b, c] = [1, 11, 12]
console.log(a) // 1
console.log(b) // 11
console.log(c) // 12

let [d, e] = [1]
console.log(e) // undefined

let [head, ...tail] = [1, 2, 3, 4]
console.log(head) // 1
console.log(tail) // [2, 3, 4]

// 以下這種是不完全解構(gòu)
let [f, g] = [1, 2, 3]
console.log(f) // 1
console.log(g) // 2
// 解構(gòu)的時(shí)候,可以設(shè)置默認(rèn)值,這樣就不會(huì)undefined
let [h, i = 1212] = [1]
console.log(h)
console.log(i)
數(shù)組擴(kuò)展
{
  /*
  * 擴(kuò)展運(yùn)算符: 數(shù)組前面加..., 可直接把數(shù)組中內(nèi)容提取出來(lái)
  * */
  console.log("-------------擴(kuò)展運(yùn)算符-------------")
  const array1 = [1, 2, 3]
  const array2 = [4, 5, 6]
  console.log(...array1)
  console.log(1, ...[2,3,4], 5)

  function add(a, b) {
    return a + b
  }

  console.log(add(...array1))
  console.log("返回值是數(shù)組的長(zhǎng)度: " + array1.push(...array2))
  console.log(array1)
  console.log("ES6寫(xiě)法,求數(shù)據(jù)中最大值: " + Math.max(...[1,2,3])) // 3

  const copyArray = [...array2]
  console.log(copyArray instanceof Array)
  console.log(copyArray)

  console.log([..."hello world"]) // 將字符串轉(zhuǎn)換成數(shù)組
}

{
  /*
  * Array.from(): 將類似數(shù)組對(duì)象轉(zhuǎn)換成數(shù)組,比如 document.querySelectorAll("p")獲取到所有p標(biāo)簽集合就是類似數(shù)組對(duì)象
  *
  * */
  console.log("------------Array.from()-------------")
  const likeArray = {
    "0": "a",
    "1": "b",
    "2": "c",
    "length": 3,
    "name": "wujiedong"
  }
  const array = Array.from(likeArray)
  console.log(array)

  /*const p = document.querySelectorAll("p")
  Array.from(p).filter(item => {
    return item.textContent.length > 100
  })*/
}

{
  /*
  * Array.of(): 將一組值轉(zhuǎn)換成數(shù)組,它直接替代了 new Array()和Array()
  * */
  console.log("------------Array.of()-------------")
  console.log(Array.of("北京", "上海", "廣州"))
}

{
  /*
* find():參數(shù)傳遞一個(gè)function,查找第一個(gè)符合條件的數(shù)組元素,返回該元素的值
* findIndex():參數(shù)傳遞一個(gè)function,查找第一個(gè)符合條件的數(shù)組元素,返回該元素在數(shù)組中位置
* */
  console.log("------------find()和findIndex()------------")
  const array = [1, 22, 33, 44, 55, 56]
  const result = array.find((item, index, array) => { /*(當(dāng)前值,當(dāng)前位置,原數(shù)組)*/
    return item > 23
  })
  console.log(result)

  const index = array.findIndex((item, index) => {
    if (item > 23) {
      return index
    }
  })
  console.log(index)
}

{
  /*
  * 數(shù)組中是否包含某個(gè)元素
  * Array.includes(參數(shù)1, 參數(shù)2)  參數(shù)1: 查詢的參數(shù)  參數(shù)2: 查詢位置,如果是負(fù)數(shù),表示倒數(shù)的位置
  * */
  console.log("------------includes()------------")
  const array = [1, 22, 33, 44, 55, 56]
  console.log(array.includes(1))
  console.log(array.includes(1, 0))
  console.log(array.includes(1, 2))
}

{
  /*
  * 數(shù)組實(shí)例的 entries(),keys() 和 values()
  * entries: key-value的遍歷
  * keys: key的遍歷
  * values: value的遍歷
  * */
  console.log("------------entries(),keys() 和 values()------------")
  for (let [index, elem] of ["a", "b"].entries()) {
    console.log(index, elem);
  }
}
Module語(yǔ)法

export: 導(dǎo)出接口,使用{}將變量包裹起來(lái),對(duì)外可以讓其他js使用,import { 名字一致 } from "js路徑"

export default: 導(dǎo)出接口,對(duì)外可以讓其他js使用,import 名字隨意起 from "js路徑"

import: 導(dǎo)入,需要使用到其他js文件

/*
寫(xiě)法1: 先多帶帶定義,然后一次性export,導(dǎo)出需要加上{}
let name = "wujiedong"
const getName = function () {
    console.log("getName")
}
export { name, getName }*/

/*
* 寫(xiě)法2: 每寫(xiě)一個(gè)變量就進(jìn)行一次導(dǎo)出
* */
export const name = "wujiedong"
export const getName = () => {
  console.log("getName")
}
/*
* 上述2種方式的導(dǎo)出,在import導(dǎo)入的時(shí)候,如果要使用,需要指定導(dǎo)入名字,比如 export中name,那在import的時(shí)候需指定name一致,而且必須加上{}
* */


/*export default
* 導(dǎo)出的時(shí)候不指定名字,這樣如果import需要使用了,直接 import xxx from "js路徑" , xxx可隨意定義名字,不需要加{}
* */
export default function foo() {
  console.log("foo");
}
export default {
  name: "中國(guó)",
  setName: function (name) {
    this.name = name
  },
  getName: function () {
    return this.name
  },
  doubleName: function () {
    console.log(this)
    const result = () => this.name + "====" + this.name
    return result()  // 這里可以正常輸出
  }
  /*sayHello: () => {
    console.log(this)  undefined
  }*/
}

/* 這種方式的導(dǎo)出是錯(cuò)誤,它導(dǎo)出的不是接口,是一個(gè)數(shù)值
var i = 1
export i
// 報(bào)錯(cuò)
function f() {}
export f;

// 正確
export function f() {};

// 正確
function f() {}
export {f};
*/

最佳實(shí)踐,對(duì)整個(gè)項(xiàng)目接口地址進(jìn)行多帶帶js文件管理

// config.js多帶帶文件維護(hù)
// import { constants } from "config.js路徑"即可使用接口地址
// 多帶帶將serverAddress服務(wù)器地址抽取出來(lái),生產(chǎn)和開(kāi)發(fā)一般都是2個(gè)不同服務(wù)器
const serverAddress = "http://10.12.3.80:8080"  // jinfeng
// const serverAddress = "http://20.78.14.88:8888"  // qinghai

export const constants = {
  searchTimeDateApi: serverAddress + "/qh_plat/met_plot/wea_fore/timebar",
  picdzApi: serverAddress + "/qh_plat/met_plot/wea_fore/jsondata",
  searchSelectCjApi: serverAddress + "/qh_plat/met_plot/wea_fore/config?source=qh",
  weatherApi: serverAddress + "/qh_plat/met_stations/wea_std/stations",
  weatherDetailApi: serverAddress + "/qh_plat/met_stations/wea_std/forecast",
}
對(duì)象擴(kuò)展 對(duì)象新增方法
{
  console.log("-----------------------------Object.is()-----------------------------")
  /*Object.is() 同值相等,如果比較的是對(duì)象,那就是false*/
  const a1 = {
    name: "zhangsan",
    hobbies: ["看書(shū)", "學(xué)習(xí)"]
  }
  const a2 = {
    name: "zhangsan",
    hobbies: ["看書(shū)", "學(xué)習(xí)"]
  }
  console.log(Object.is(a1, a2)) // false

  const a3 = "hello world"
  const a4 = "hello world"
  console.log(Object.is(a3, a4)) // true

  const a5 = {
    name: "zhangsan"
  }
  const a6 = {
    name: "zhangsan"
  }
  console.log(Object.is(a5, a6))  // false
}

{
  console.log("-----------------------------Object.assign()-------------------------------")
  /*Object.assign() 對(duì)象復(fù)制,將源對(duì)象可枚舉的全部復(fù)制到目標(biāo)對(duì)象,不會(huì)改變?cè)磳?duì)象的值
  * 參數(shù)1: 目標(biāo)對(duì)象, 參數(shù)2到N,源對(duì)象,  把從參數(shù)2到N -> 參數(shù)1目標(biāo)對(duì)象
  * 目標(biāo)對(duì)象和源對(duì)象有相同的key,后面key中value會(huì)覆蓋前面key中value
  * 是淺拷貝,如果value是對(duì)象,那拷貝的是引用,不是值
  * */
  const a1 = {
    name: "zhangsan",
  }
  const a2 = {
    hobbies: ["看書(shū)", "學(xué)習(xí)"],
    json: {
      age: 12
    }
  }
  const a3 = {
    birthday: "2019-11-11"
  }
  const target = {}
  Object.assign(target, a1, a2, a3)
  console.log("target: ", target)
  console.log("a1: ", a1)
  console.log("a2: ", a2)
  a2.hobbies.push("睡覺(jué)")
  a2.json.age = 22
  console.log("target中hobbies的值: ", target.hobbies)
  console.log("a2中hobbies的值: ", a2.hobbies)
  console.log("target中hobbies數(shù)據(jù)類型: ", typeof target.hobbies)
  console.log("a2中hobbies數(shù)據(jù)類型: ", typeof a2.hobbies)
  console.log("target中json: ", target.json)
  console.log("a2中json: ", a2.json)

  a1.name = "lisi"
  console.log("a1中name的類型: ",typeof a1.name)
  console.log("target中name的類型: ",typeof target.name)
  console.log("a1中name的值: ", a1.name) // lisi
  console.log("target中name的值: ", target.name) // zhangsan

  // 最佳實(shí)踐
  /*
  * 需求: 將數(shù)組[{id: 0, date: "2012-12-12"}, {id: 1, date: "2012-12-13"}, {id: 2, date: "2012-12-14"}]
  *       轉(zhuǎn)成對(duì)象 {1: "2012-12-12", 2: "2012-12-13", 3: "2012-12-14"}
  * 在ant的Slider組件中,做一個(gè)關(guān)于日期數(shù)據(jù)的組件,就可以使用該最佳實(shí)踐
  * */
  const dates = [
                {id: 0, date: "2012-12-12"},
                {id: 1, date: "2012-12-13"},
                {id: 2, date: "2012-12-14"}
                ]
  let dateObj = {}
  for (let item of  dates) {
    const { id, date } = item
    const temp = {[id]: date}  // id是變量,在json中key如果是變量,必須加上[]
    Object.assign(dateObj, temp)
  }
  console.log("dateObj", dateObj) //{ "0": "2012-12-12", "1": "2012-12-13", "2": "2012-12-14" }
}

{
  let a = {
    name: "wujiedon"
  }
  const b = a
  a.name = "zhangsan"

  console.log(b.name)

  let c = ["zhangsan", "lisi"]
  const d = c
  c.push("wangwu")
  console.log(d)
}

{
  console.log("---Object.entries()---")
  /*Object.entries(): 將一個(gè)對(duì)象變成數(shù)組
  * 需求: 將 {a: 1, b: 2, c: 3} => {[{name: "a", value: 1}, {name: "b", value: 2}, {name: "c", value: 3}]}
  * 服務(wù)器接口中如果返回的json,其中key是一個(gè)變量,就可以通過(guò)該需求,轉(zhuǎn)換成正常的json數(shù)據(jù)
  * */
  const obj = {a: 1, b: 2, c: 3}
  console.log(Object.entries(obj)) // [ [ "a", 1 ], [ "b", 2 ], [ "c", 3 ] ]
  const result = Object.entries(obj).map(item => {
    return {name: item[0], value: item[1]}
  })
  /* 輸出:
  * [ { name: "a", value: 1 },
    { name: "b", value: 2 },
    { name: "c", value: 3 } ]
  * */
  console.log(result)
}
對(duì)象擴(kuò)展運(yùn)算符
/*概念: 使用 ... 取出參數(shù)對(duì)象中所有可遍歷的屬性,拷貝到當(dāng)前對(duì)象中
* 在React框架的開(kāi)發(fā)中,在處理state數(shù)據(jù)的時(shí)候,會(huì)經(jīng)常使用該技巧
* */
{
  const state = {
    name: "zhangsan",
    age: 30,
    city: "wuxi"
  }
  // 使用擴(kuò)展運(yùn)算符完成對(duì)象屬性拷貝,在react中,子組件接收父組件state,可直接拷貝,然后再接著寫(xiě)自己的屬性
  const copyState = {
    ...state, // 從父組件拷貝過(guò)來(lái)的組件
    bithday: "2011-11-11",  // 自己的屬性
    country: "china"
  }

  console.log(state)
  console.log(copyState)

  // 擴(kuò)展運(yùn)算符后面可跟表達(dá)式,表達(dá)式之后,還能再寫(xiě)屬性
  const a = 1
  const info = {
    ...(a > 1 ? {b: 111} : {b: 222}),
    c: 333
  }
  console.log(info)
}

{
  /*擴(kuò)展運(yùn)算符,實(shí)現(xiàn)舊json對(duì)新json的復(fù)制*/
  const food = {
    id: 1,
    name: "雪花啤酒",
    amount: 12,
    price: 3.2,
    type: "飲料"
  }

  const newFood = {
    ...food,
    amount: 0
  }
  console.log(newFood)
}
對(duì)象屬性簡(jiǎn)潔寫(xiě)法
{
  /*屬性和function的簡(jiǎn)潔寫(xiě)法*/
  let birthday = "2012-11-11"
  /*ES6寫(xiě)法*/
  const person = {
    name: "zhangsan",
    birthday,
    sayInfo() {
      console.log("person info:" , this.name, this.birthday)
    }
  }
  /*等價(jià)*/
  const oldPerson = {
    name: "zhangsan",
    birthday: birthday,
    sayInfo: function () {
      console.log("person info:" , this.name, this.birthday)
    }
  }

  person.sayInfo()
  oldPerson.sayInfo()
  console.log(oldPerson.sayInfo.name) // 返回函數(shù)名字

  for (let key in oldPerson) {
    console.log(key)
  }
}

{
  /*當(dāng)作函數(shù)返回值*/
  function getPoint(x, y) {
    return {x, y}
  }

  console.log(getPoint(1, 2)) /*{ x: 1, y: 2 }*/
}
字符串?dāng)U展 多行字符串
// js
/*let name = "wujiedong"
let age = 29
let html = "
" html += "

" + name + "

" html += "

" + age + "

" html += "
" console.log(html)*/ // ES6 const name = "wujiedong" const age = 29 const html = `

${name}

${age}

` console.log(html) /*最佳實(shí)踐1: 根據(jù)傳入?yún)?shù)組裝url接口地址,這樣可以少寫(xiě)很多+號(hào)*/ function getApi(name, age) { return `http://127.0.0.1:8888?name=${name}&age=${age}` } const api = getApi("wujiedong", 29) console.log("api:", api) /*最佳實(shí)踐2: 在React開(kāi)發(fā)中,難免會(huì)在js文件中寫(xiě)一些css代碼,這種情景,就可以使用多行字符串 * 以下是一段偽代碼 * */ const myCustomColour = "red" // 抽取頁(yè)面經(jīng)常需求變動(dòng)的數(shù)據(jù)變量 const markStyle = ` background-color:${myCustomColour}; display:block; border-radius:5px; width:6px; height:6px;`; console.log("markStyle", markStyle)
ES6新增方法
{
  const city = "wuxi"
  console.log(city.indexOf("w")) // 0  ES5, 字符串存在,返回0
  console.log(city.indexOf("wx")) // -1 字符串不存在,返回 -1
  console.log(city.includes("wux")) // true  ES6, 返回boolean值 表示是否找到了參數(shù)字符串。
  console.log(city.startsWith("w")) // true  ES6, 返回boolean值 表示參數(shù)字符串是否在原字符串的頭部。
  console.log(city.endsWith("xi")) // true   ES6, 返回boolean值 表示參數(shù)字符串是否在原字符串的尾部。
  console.log(city.repeat(2)) // wuxiwuxi 返回一個(gè)新字符串,表示將原字符串重復(fù)n次。
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/104089.html

相關(guān)文章

  • ES6編寫(xiě)AngularJS程序是怎樣一種體驗(yàn)

    摘要:不用我贅述,前端開(kāi)發(fā)人員一定耳熟能詳。命令會(huì)用這個(gè)配置,生成的結(jié)果都會(huì)給文件名加,文件也會(huì)壓縮。可用工具介紹啟動(dòng)調(diào)試服務(wù)器,使用作為配置,不直接生成物理文件,直接內(nèi)存級(jí)別響應(yīng)調(diào)試服務(wù)器資源請(qǐng)求。 AngularJS不用我贅述,前端開(kāi)發(fā)人員一定耳熟能詳。有人稱之為MVWhatever框架,意思是使用AngularJS,你可以參考任意范式進(jìn)行應(yīng)用開(kāi)發(fā),無(wú)論是MVC、還是MVVVM都信手拈來(lái)...

    lastSeries 評(píng)論0 收藏0
  • babel學(xué)習(xí)筆記

    摘要:經(jīng)過(guò)一番折騰,總算是把自己項(xiàng)目里的配置調(diào)整好了,所有文件從原來(lái)的縮小到。折騰了不少時(shí)間,改動(dòng)其實(shí)就一個(gè)地方,就是配置文件,記錄一下自己折騰的過(guò)程。本以為那這兩種方式取其一就行了。這感覺(jué)和想象中的不一樣啊,說(shuō)好的一個(gè)搞定一切的呢。。。 先是看到前端早讀課【第1065期】再見(jiàn),babel-preset-2015,聽(tīng)說(shuō)現(xiàn)在有了babel-preset-env,別的什么preset都不需要了,...

    Aomine 評(píng)論0 收藏0
  • webpack多頁(yè)應(yīng)用架構(gòu)系列(八):教練要寫(xiě)ES6!webpack怎么整合Babel?

    摘要:本文首發(fā)于的技術(shù)博客實(shí)用至上,非經(jīng)作者同意,請(qǐng)勿轉(zhuǎn)載。只是最近學(xué)習(xí)生態(tài),用起來(lái)轉(zhuǎn)換之余,也不免碰到諸多用上的教程案例,因此便稍作學(xué)習(xí)。在當(dāng)前的瀏覽器市場(chǎng)下,想在生產(chǎn)環(huán)境用上,是必不可少的。 本文首發(fā)于Array_Huang的技術(shù)博客——實(shí)用至上,非經(jīng)作者同意,請(qǐng)勿轉(zhuǎn)載。原文地址:https://segmentfault.com/a/1190000006992218如果您對(duì)本系列文章感興...

    gnehc 評(píng)論0 收藏0
  • webpack組織模塊原理 - 基礎(chǔ)篇

    摘要:每一個(gè)模塊的源代碼都會(huì)被組織在一個(gè)立即執(zhí)行的函數(shù)里。接下來(lái)看的生成代碼可以看到,的源代碼中關(guān)于引入的模塊的部分做了修改,因?yàn)闊o(wú)論是,或是風(fēng)格的,都無(wú)法被解釋器直接執(zhí)行,它需要依賴模塊管理系統(tǒng),把這些抽象的關(guān)鍵詞具體化。 現(xiàn)在前端用Webpack打包JS和其它文件已經(jīng)是主流了,加上Node的流行,使得前端的工程方式和后端越來(lái)越像。所有的東西都模塊化,最后統(tǒng)一編譯。Webpack因?yàn)榘姹镜?..

    leiyi 評(píng)論0 收藏0
  • ES6, React, Redux, Webpack寫(xiě)一個(gè)爬 GitHub 網(wǎng)頁(yè)

    摘要:開(kāi)發(fā)歷程項(xiàng)目地址這是一個(gè)什么玩意兒上有太多太多的牛人,這個(gè)東西可以幫助你通過(guò)給定的一個(gè)的用戶然后通過(guò)他關(guān)注的人找出他關(guān)注的人里的被關(guān)注數(shù)最高的幾個(gè)然后不斷的循環(huán)從而通過(guò)關(guān)系鏈找到上最受歡迎的大神這個(gè)東西還只是一個(gè)小東西如果你有興趣可 find-github-star 開(kāi)發(fā)歷程: 項(xiàng)目地址 find-github-star 0x01. 這是一個(gè)什么玩意兒? github上有太多太多的牛人...

    AprilJ 評(píng)論0 收藏0
  • ES6

    摘要:返回布爾值,表示參數(shù)字符串是否在源字符串的尾部。我們可以往里面添加刪除查詢數(shù)據(jù)先聲明一個(gè)對(duì)象往這個(gè)集合對(duì)象中添加元素判斷集合中是否存在一個(gè)元素返回一個(gè)布爾值,表示該值在中存在與否。 一、 ES6 基本語(yǔ)法 1.1 let 作用域就是一個(gè)變量的有效的范圍,就是你聲明一個(gè)變量以后,這個(gè)變量在什么場(chǎng)合可以使用它。以前JavaScript只有全局作用域和函數(shù)作用域,現(xiàn)在JavaScript也有...

    Cobub 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<