ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript: デフォルトのパラメータ、スプレッド演算子、残りのパラメータ、および構造化!

JavaScript: デフォルトのパラメータ、スプレッド演算子、残りのパラメータ、および構造化!

WBOY
WBOYオリジナル
2024-08-09 09:21:51336ブラウズ

JavaScript: Default Parameters, Spread Operator, Rest Parameters, and Destructuring!

デフォルトパラメータ

パラメータリストにデフォルト値を直接追加できます

function rollDie(numSides = 6) {
  return Math.floor(Math.random() * numSides) + 1;
}

ここでは、順序に注意する必要があります。デフォルトのパラメータは、デフォルトを持たないパラメータの後の最後にのみ出現する必要があります:

function greet(person, msg = 'Hey there', punc = '!') {
  return `${msgs}, ${person}${punc}`;
}

広める

Spread 構文を使用すると、ゼロ個以上の引数 (関数呼び出しの場合) または要素 (配列リテラルの場合) が予期される場所で配列などの反復可能オブジェクトを展開したり、ゼロまたは複数の要素が期待される場所でオブジェクト式を展開したりできます。より多くのキーと値のペア (オブジェクト リテラルの場合) が期待されます。 - MDN

配列に対してスプレッド演算子を使用できます:

console.log(Math.max(1, 2, 3, 4, 5, 2)); // 5
const nums = [4, 3, 53, 3, 5, 2, 4, 920, 3, 5, 2];
console.log(Math.max(...nums)); // 920

スプレッド演算子を使用して配列を連結できます。

const cats = ['Fluffy', 'Zane', 'Jim'];
const dogs = ['Doggo', 'Sir Barks A Lot'];
const allPets = [...cats, ...dogs, 'Goldy'];
console.log(allPets); //['Fluffy', 'Zane', 'Jim', 'Doggo', 'Sir Barks A Lot', 'Goldy']

スプレッドを使用して、あるオブジェクトから別のオブジェクトにプロパティをコピーできます。

const feline = {
  legs: 4,
  family: 'Felidae',
};
const canine = {
  family: 'Canine',
  furry: true,
};

const dog = { ...canine, isPet: true };
console.log(dog); // {family: 'Canine', furry: true, isPet: true}

// Note, order matters - the last property takes precidence:
const catDog = { ...feline, ...canine };
console.log(catDog); // {legs: 4, family: 'Canine', furry: true}

配列と文字列のスプレッドでは、インデックスをキー値として使用します:

let newObj = { ...[2, 4, 6, 8] };
console.log(newObj); // {0: 2, 1: 4, 2: 6, 3: 8}

let anotherObj = { ...'Hello' };
console.log(anotherObj); //{0: 'H', 1: 'e', 2: 'l', 3: 'l', 4: 'o'}

スプレッドを使用するより現実的な例は、フォームにデータを追加する場合です。

const dataFromForm = {
  email: 'jim@jimelm.com',
  password: '1234',
  username: 'jimelm',
};

const person = { ...dataFromForm, id: 2134, isAdmin: false };
console.log(person); // {email: 'jim@jimelm.com', password: '1234', username: 'jimelm', id: 2134, isAdmin: false}

残りのパラメータ

休息はスプレッドの逆を行います。関数に渡される一連のパラメーターを受け取り、それらを組み合わせて配列を作成します。例としては次のようなものがあります。

function sum(...nums) {
  return nums.reduce((total, el) => total + el);
}

function raceResults(gold, silver, ...everyoneElse) {
  console.log(`Gold metal goes to ${gold}`);
  console.log(`Silver metal goes to ${silver}`);
  console.log(`And thanks to: ${everyoneElse}`);
}

解体中

配列の分割

配列を分割する例を次に示します:

const scores = [999, 888, 777, 666, 555, 444];

const [gold, silver, bronze, ...otherScores] = scores;
console.log(gold); // 999
console.log(silver); // 888
console.log(bronze); // 777
console.log(otherScores); // [666, 555, 444]

オブジェクトの分割

ここではオブジェクトを分解します:

const user = {
  email: 'marryelm@what.com',
  password: '134jsdf',
  firstName: 'Marry',
  lastName: 'Elm',
  born: 1927,
  died: 2091,
  city: 'Hayward',
  state: 'CA',
};

const { email, state, city } = user;
console.log(email); // marryelm@what.com
console.log(state); // CA
console.log(city); // Hayward

const { born: birthYear } = user;
console.log(birthYear); // 1927

次のように変数にデフォルト値を与えることができます:

const user2 = {
  email: 'stacy@what.com',
  firstName: 'stacy',
  lastName: 'kent',
  born: 1984,
  city: 'Boise',
  state: 'ID',
};

const { city, state, died } = user2;
console.log(died); // undefined

const { city, state, died = 'N/A' } = user2;
console.log(died); // N/A

パラメータの構造化

関数パラメータ内で構造を分解することもできます:

const user2 = {
  email: 'stacy@what.com',
  firstName: 'stacy',
  lastName: 'kent',
  born: 1984,
  city: 'Boise',
  state: 'ID',
};

function fullName({ firstName, lastName = '???' }) {
  return `${firstName} ${lastName}`;
}

コールバック関数で構造の分解も行います:

const movies = [
  {
    title: 'Indiana Jones',
    score: 77,
    year: 1994,
  },
  {
    title: 'Star Trek',
    score: 94,
    year: 1983,
  },
  {
    title: 'Deadpool',
    score: 79,
    year: 2001,
  },
];

let ratings = movies.map(({ title, score }) => {
  return `${title} is rated ${score}`;
});

console.log(ratings); // ['Indiana Jones is rated 77', 'Star Trek is rated 94', 'Deadpool is rated 79']

以上がJavaScript: デフォルトのパラメータ、スプレッド演算子、残りのパラメータ、および構造化!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。