web-dev-qa-db-ja.com

Uncaught TypeError: 'undefined'または 'null'のプロパティ `name`を分解できません

Nullオブジェクトが渡された場合、オブジェクトの破棄によりエラーがスローされます

function test ({name= 'empty'}={}) {
  console.log(name)
}
test(null);

Uncaught TypeError: 'undefined'または 'null'のプロパティnameを分解できません。テスト時(:1:15)時:1:1

3
rahlrokks

docs を参照してください:

デフォルトの関数パラメーターを使用すると、値が指定されていないか未定義の場合、名前付きパラメーターをデフォルト値で初期化できます。

つまり、nullが渡された場合、デフォルトのパラメータは割り当てられません

function fn(arg = 'foo') {
  console.log(arg);
}
fn(null);

代わりに、関数の最初の行を分解します。

function test (arg) {
  const { name = 'empty' } = arg || {};
  console.log(name)
}
test(null);
2