【发布时间】:2018-03-27 05:39:33
【问题描述】:
在下面的代码中,如果用户将 null 放入函数的参数中,我想丢弃一个错误。
function addSomething(array) {
array=array.slice();
if(array === null) {
throw Error('Thrown away')
}
array.push('nah man');
return array;
};
let myArray = [1, 2];
addSomething(myArray);
//=> [1, 2, 'nah man']
addSomething(myArray);
//=> [1, 2, 'nah man']
但是当我尝试调用函数 addSomething(null) 时,我总是在 console.log 中出现这个错误。
VM2829:6 Uncaught TypeError: Cannot read property 'push' of null
at addSomething (<anonymous>:6:11)
at <anonymous>:1:1
无法读取 null 的属性“push”?什么?为什么他们甚至相互联系?我想做的就是扔掉一个错误。我究竟做错了什么? 请注意,我需要保留 array=array.slice() 部分,以便保持函数纯净。提前致谢!
【问题讨论】:
-
你应该在调用 array.slice 之前做好防御 if (array === null)
-
当我运行您的代码时,我得到“无法读取属性 'slice' of null”,这正是我所期望的。
标签: javascript null