源自:1-6 编程练习
参考答案最后的if语句加个 else return true;为什么会出错
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030">
<title>Untitled Document</title>
</head>
<body>
<script type="text/javascript">
/*
* param1 Array
* param2 Array
* return true or false
*/
function arraysSimilar(arr1, arr2){
if (!(arr1 instanceof Array) || !(arr2 instanceof Array)) {
return false;
}
if (arr1.length !== arr2.length) {
return false;
}
var i=0,
n = arr1.length,
countMap1 = {},
countMap2 = {},
t1, t2,
TYPES = ["string", "boolean", "number", "undefined", "null", "function", "date", "window"];
for (i = 0; i< n; i++) {
t1 = typeOf(arr1[i]);
t2 = typeOf(arr2[i]);
if (countMap1[t1]) {
countMap1[t1]++;
}
else {
countMap1[t1] = 1;
}
if (countMap2[t2]) {
countMap2[t2]++;
}
else {
countMap2[t2] = 1;
}
}
function typeOf(ele) {
var r;
if (ele === null) {r = "null"}
else if (ele instanceof Array) {r = "array"}
else if (ele === window) {r = "window"}
else if (ele instanceof Date) {r = "date"}
else {r = typeof ele};
return r;
}
for (i = 0; i < TYPES.length; i++) {
if (countMap1[TYPES[i]] !== countMap2[TYPES[i]]) {
return false;
}
else {return true;}//就是这一行,为什么不能写呢,一般if语句不是都会有else的吗?搞不懂,求大神解解惑,感谢。
}
return true;
}
</script>
<script src="testData.js"></script>
</body>
</html>
提问者:haohaoxiaoxiao3705873
2016-08-14 14:06
个回答
-
这个重点是判断失败,如果失败了,函数就可以返回,说明函数不相等,可以返回。但是返回true就一定要是比对完所有的数据才可以返回。如果加了else只要第一组arr1和arr2是相等的,就返回了。
-
如果你要else就把最后的return true去掉 不然不管传入什么都是return true的
-
else 后面不接受参数