JS return

JS 函数里面经常会看到return true;return false;return this;return。所以到底return 了什么?

var f = {
        aa: function(){
            return true;
        },
        bb: function(){
            return false;
        },
        cc: function(){
            return;
        },
        dd:function(){
            return this;
        },
        ee:function(){
            var m={
                a:"1",
                b:"2"
            }
            return m;
        }
    }

return true,return false 是一挂,return了一个布尔值。

console.log(f.aa());

打印结果为:true.

console.log(f.bb());

打印结果为:false.
纯粹的return; 是什么都没有返回,只有打断函数的作用。

console.log(f.cc());

打印结果为:undefined.
return this 一般用在链式调用里,谁调用返回谁。

console.log(f.dd());

打印结果为:Object {}
return obj …… 等等,返回的是啥就是啥了,和true/false差不多。

console.log(f.ee().a)

打印结果为:1

所以到底return了什么?return了函数想要给外部的结果

JS对象

W3C关于对象的解释是有属性和方法的特殊数据类型,我自己的理解是键值对的组合。

案例1如下:

题目:去掉字符串中多余的空格

解答:

function format_spaces(str){
    var new_str = [];
    var $len = str.length;
    for(var i=0;i<$len;i++){
        if(i==0 && str[i] != " "){
            new_str.push(str[i])
        }else if(i==$len-1 && str[i] != " "){
            new_str.push(str[i])
        }else if(str[i] != " " || str[i-1] != " "){
            new_str.push(str[i])
        }
    }
    return new_str;
}

案例2如下:

题目:在数组中,找出出现最多的数字

解答:

function most(arr){
    var $obj = {};
    var $times = 0;
    var $num = null;
    var $len = arr.length;
    for(var i =0;i<$len;i++){ 
        if($obj[arr[i]]){ 
            $obj[arr[i]]++; 
            if($obj[arr[i]]>$times){
                $times = $obj[arr[i]];
                $num = arr[i];
            }
        }else{
            $obj[arr[i]]=1;
            $times = 1;
            $num = arr[i];
        }
    }
    var info = {
        num:$num,
        times:$times
    }
    return info;
}

这两个解答方案都是用对象键值对特性解答的。