7.12Functions / No Mutate Params

パラメータを変更しない

引数として渡されたオブジェクトを操作すると、呼び出し元で意図しない副作用を引き起こす可能性があるため、パラメータを変更しないでください

関数が受け取ったオブジェクトを直接変更すると、その関数は「副作用」を持つことになります。これにより、関数の呼び出し元でオブジェクトが予期せず変更され、バグの原因となります。関数は、受け取ったデータを変更するのではなく、新しいデータを生成して返す(純粋関数に近づける)ことが望ましいです。

❌ Bad
// bad
function f1(obj) {
  obj.key = 1;
}
✅ Good
// good
function f2(obj) {
  const key = Object.prototype.hasOwnProperty.call(obj, 'key') ? obj.key : 1;
}