问答详情
源自: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

个回答

  • yangjiayu
    2016-08-19 10:13:01

    这个重点是判断失败,如果失败了,函数就可以返回,说明函数不相等,可以返回。但是返回true就一定要是比对完所有的数据才可以返回。如果加了else只要第一组arr1和arr2是相等的,就返回了。

  • 慕粉3711365
    2016-08-14 15:51:27

    如果你要else就把最后的return true去掉 不然不管传入什么都是return true的 

  • 慕粉3711365
    2016-08-14 15:35:58

    else 后面不接受参数