Javascript 丢弃空错误
在下面的代码中,如果用户在函数的参数中输入null,我想扔掉一个错误Javascript 丢弃空错误,javascript,null,Javascript,Null,在下面的代码中,如果用户在函数的参数中输入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(my
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未捕获类型错误:无法读取null的属性“push”
在某处(:6:11)
时间:1:1
无法读取null的属性“push”?什么?他们为什么连在一起?我想做的就是扔掉一个错误。我做错了什么?
请注意,我需要保留array=array.slice()部分,以便保持函数的纯净。提前谢谢 在对
数组
函数参数执行任何操作之前,需要检查null
,例如:
function addSomething(array) {
if (!array) throw Error('Thrown away');
array = array.slice();
array.push('nah man');
return array;
};
最好检查它是否实际上是可以使用的数组,但在使用任何其他数组方法(如slice或push)之前先检查它
function addSomething(array) {
if(!Array.isArray(array)){
throw Error('Not an array');
}
array=array.slice();
...
}
原因是您在尝试使用数组后检查它是否为null 您需要将代码更改为以下内容:
function addSomething(array) {
//First check if array is null
if(array === null) {
throw Error('Thrown away')
}
//If this gets executed it means that the array is not null
array=array.slice();
array.push('nah man');
return array;
};
不过有一点值得注意:
<代码>代码>数组=数组SLICE()/代码>的意思是什么?这意味着你将一个拷贝<代码>数组 > <代码>数组< /COD>它自己。考虑在<代码> SLICE()中使用索引(<代码)> /p>在调用ARRAY之前,你应该做你的防御(数组==null)。当我运行你的代码时,这正是我所期望的。嘿,伙计,非常感谢你的帮助,但是“索引”是什么意思?@CodeSamurai它意味着索引。检查这个:
function addSomething(array) {
//First check if array is null
if(array === null) {
throw Error('Thrown away')
}
//If this gets executed it means that the array is not null
array=array.slice();
array.push('nah man');
return array;
};