JS Day 36: ES6 函式參數的解構賦予值
Function Argument Default 函式參數預設值
在 ES6 之前傳進來的參數必須要透過判斷才可以確定有沒有存在,無法直接設定預設值。現在可以直接在參數後面定義 function checkBMI(bmi = 0) { ... }
。
範例:
function funcName(foo = 'x', bar = 'y') {
console.log(foo, bar);
};
funcName('喔')
// => 喔 y
funcName('喔', undefined)
// => 喔 y
funcName('喔', '椰')
// => 喔 椰
// 如果沒有傳入參數,bmi 為 0
function checkBMI(bmi = 0) {
if (bmi.value === 0) {
// ... 略過
}
};
Object Destructuring Assignment 解構賦值
const data = [
{
name: '小傑',
height: 175,
weight: 70,
properties: {
bmi: 22.9,
state: '理想'
}
},
{
name: 'Daniel',
height: 200,
weight: 68,
properties: {
bmi: 17,
state: '體重過輕'
}
},
];
// for...of 迭代陣列
// person = 每筆物件
for (const person of data) {
renderData(person);
render(person);
};
// 方法一
function render(person) {
// 如果層次太多,會變得落落長一串
console.log('物件: ' + person.name, person.properties.bmi, person.properties.state);
};
// 方法二
// 跟解構變數賦予值方式ㄧ樣
function renderData(
{
name,
height,
weight,
properties: {
bmi: bmiValue,
state: stateText
}
}) {
console.log('物件解構: ' + name, bmiValue, stateText); // 變得簡潔
};
解構變數賦予值
const data = {
name: '小傑',
height: 175,
weight: 70,
properties: {
bmi: 22.9,
state: '理想'
}
};
let { name, height, weight, properties: {bmi: bmiValue, state: stateText} } = data;
console.log(name, bmiValue, stateText);
Reference:
ECMAScript 6 入門
解構賦值
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。