摘要:模板字符串擴展操作符操作符,有兩個主要用處復制一個新的數組或對象把多個參數賦值給一個數組變量把一個數組變量賦值給多個參數是一個新的數組,內容和一樣合并對象屬性,后邊的屬性會覆蓋前邊的,可用于修改對象的某個屬性值輸出默認參數給方法添加默認參
模板字符串
let name = "siri", age = 18, job = "front-end engineer" let oldStr = "Hi, " + name + ", I"m " + age + " and work as a " + job + "."; let newStr = `Hi, ${ name }, I"m ${ age } and work as a ${ job }.`;擴展操作符
… 操作符,有兩個主要用處:
復制一個新的數組或對象
把多個參數賦值給一個數組變量
把一個數組變量賦值給多個參數
let a = [1, 2, 3] let b = [...a] // b是一個新的數組,內容和a一樣 let c = [...a, 4, 5, 6] let car = { type: "vehicle ", wheels: 4}; let newCar = {...car} console.log(newCar); // { type: "vehicle ", wheels: 4} // 合并對象屬性,后邊的屬性會覆蓋前邊的,可用于修改對象的某個屬性值 let car2 = {...car, type: "vehicle2", wheels: 2} // {type: "vehicle2", wheels: 2}
function foo(...args) { console.log(args); } foo( "car", 54, "tree"); // console.log 輸出 [ "car", 54, "tree" ]默認參數
// 給方法添加默認參數值 function foo( a = 5, b = 10) { console.log( a + b); } foo(); // 15 foo( 7, 12 ); // 19 foo( undefined, 8 ); // 13 foo( 8 ); // 18 foo( null ); // 10 as null is coerced to 0
// 默認參數值也可以是表達式或者函數 function foo( a ) { return a * 4; } // y = x + 4, z = foo(x) function bar( x = 2, y = x + 4, z = foo(x)) { console.log([ x, y, z ]); } bar(); // [ 2, 6, 8 ] bar( 1, 2, 3 ); //[ 1, 2, 3 ] bar( 10, undefined, 3 ); // [ 10, 14, 3 ]
// 對象參數默認值,如果參數為空,則會拋出異常 function show({ title = "title", width = 100, height = 200 }) { console.log( `${title} ${width} ${height}` ); } show() // Cannot destructure property `title` of "undefined" or "null". show({}) // title 100 200 // 解決辦法: function show({ title = "title", width = 100, height = 200 } = {}) { console.log( `${title} ${width} ${height}` ); } show(); // title 100 200 show({width: 200}) // title 200 200解析賦值
// key變量重命名, first --> firstName const person = { first: "foo", last: "tom", }; const { first: firstName } = person; console.log(firstName); // foo
// 默認值 const settings = { speed: 150 } const { speed = 750, width = 500 } = settings; console.log(speed); // 150 console.log(width); // 500 // 可能不存在的key const { middle: middleName = "midname" } = person; console.log(middleName); // "midname"
// 嵌套賦值 const user = { id: 339, name: "Fred", age: 42, education: { degree: "Masters" } }; const {education: {degree}} = user; console.log(degree); //prints: Masters
// 如果嵌套的屬性不存在 const user = { id: 339, name: "Fred", age: 42 }; const {education: {degree}} = user; // TypeError: Cannot match against "undefined" or "null". // 解決辦法: const user = { id: 339, name: "Fred", age: 42 }; const {education: {degree} = {}} = user; console.log(degree); //prints: undefined利用數組生成一個數字序列
const numRange = (start, end) => { return Array(end - start + 1).fill().map((item, index) => start + index); }; const numbers = numRange(0, 5); // [0, 1, 2, 3, 4, 5] const numbers2 = numRange(1, 5); // [1, 2, 3, 4, 5]利用Set給數組去重
const years = [2016, 2017, 2017, 2018, 2018, 2019] // set構造函數的參數是一個array const distinctYears = [...new Set(years)] // [2016, 2017, 2018, 2019]生成唯一隨機字符串,可以指定長度
function generateRandom(length) { let radom13chars = function () { return Math.random().toString(16).substring(2, 15) } let loops = Math.ceil(length / 13) return new Array(loops).fill(radom13chars).reduce((string, func) => { return string + func() }, "").substring(0, length) } generateRandom(8) // "03836a49"
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/101535.html
摘要:讓你的代碼更簡短,更整潔,更易讀的小技巧寫在文章前面這篇文章翻譯自文章就代碼整潔方面對進行了總結。如果你正在使用的代碼使用的語法,這個是你需要注意的事情。更多還提供了我們很多很多其他的方式來使我們的代碼更簡潔,更易讀,以及更穩定。 讓你的代碼更簡短,更整潔,更易讀的ES6小技巧 寫在文章前面 這篇文章翻譯自ES6 tips and tricks to make your code cl...
摘要:由進行開發和維護,代發布于年月,現在主要是。狀態是只讀的,只能通過來改變,以避免競爭條件這也有助于調試。文件大小為,而為,為。請記住,性能基準只能作為考慮的附注,而不是作為判斷標準。使用的人員報告說,他們永遠不必閱讀庫的源代碼。 本文當時寫在本地,發現換電腦很不是方便,在這里記錄下。 angular,react & vue 2018/07/23 2016年,對于JavaScript來說...
閱讀 3634·2021-11-24 10:22
閱讀 3701·2021-11-22 09:34
閱讀 2505·2021-11-15 11:39
閱讀 1538·2021-10-14 09:42
閱讀 3673·2021-10-08 10:04
閱讀 1568·2019-08-30 15:52
閱讀 860·2019-08-30 13:49
閱讀 3029·2019-08-30 11:21