ESLint中no-param-reassign錯誤

不改變原對象(數組)並重新給字段賦值,適用於ESLint4.0.0規則

function defineProperty(obj, key, val) {  
	// 返回object對象
    return Object.defineProperty(obj, key,
      {value: val,
        writable: true,
        configurable: true,
        enumerable: true,
      }
	);
}
function setObjectValue(obj, key, val){
	return Reflect.set(obj, key, val);// 返回是否設置成功
}

const tmp = {aa: "aa1", bb: "bb1", cc: "cc1"};
function handle(tmp) {
	// tmp.aa = "aa2";   // error: no-param-reassign
	defineProperty(tmp, "aa", "aa2");  	// 方案3(適用於數組字段賦值)
	
	// tmp.bb = "bb2";	 // error: no-param-reassign
	setObjectValue(tmp, "bb", "bb2");	// 方案2(適用於數組字段賦值)
	
	// tmp.cc = "cc2";	 // error: no-param-reassign
	const tmpp = tmp;	 // 方案1
	tmpp.cc = "cc2";
}
handle(tmp);

const arr = [tmp];
function handleArr(arr, index){
	setObjectValue(arr[index], "aa", "aa3");
	//defineProperty(arr[index], "aa", "aa3");
}
handleArr(arr, 0);

console.log(tmp);  // {aa: "aa2", bb: "bb2", cc: "cc2"}
console.log(arr);

參考網址:
https://eslint.org/docs/rules/no-param-reassign
https://cloud.tencent.com/developer/section/1135734

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章