js函数内可以有两个return吗

听说js函数内只允许有一个return 但是今天看到这样一个函数
function(a) {
return function(element, className) {
element = $E(element);
var classArray = className.split(/\s+/),
result = typeof element.className == 'undefined' ? '': element.className,
classMatch = " " + result + " ",
i = 0,
l = classArray.length;

for (; i < l; i++) {
if (classMatch.indexOf(" " + classArray[i] + " ") < 0) {
result += (result ? ' ': '') + classArray[i];
}
}

element.className = result;
return element;
}
});

里面有俩个呢,怎么解释?

可以有两个return,但是不可以在同一个块内进行。
例如if(){}else{}
在if里面可以有一个return,在else里面也可以有一个return,这两个是不冲突的,但是如果如下:if(){return x;return y;}这个就是冲突的了,他只执行第一个return。
因为return相当与一个带返回值的break,执行了return之后,代码就会跳出这个函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-03

首先,这是两个函数,它们是嵌套的,因此实际上每个函数一个return,简化一下如下

function a() {
    return function() { //这是a函数的return
        return 'test'; //这是动态函数中的return
    }
}

其次,函数中可以有N个return,但是其中任意一个发挥作用则其后的代码不会再继续执行了,如

function a(num) {
    if (num > 0) return 1;
    if (num < 0) return -1;
    return 0;
}

本回答被提问者采纳
第2个回答  2013-07-03
因为有两个function啊
第一个return是说,把function(element, className)的值作为function(a)的返回值。
第二个return是说,element作为function(element, className)的返回值返回。
第3个回答  2015-07-18
用if分开就可以。不然,碰到第一个return就返回了 
第4个回答  2013-07-03
函数内部的函数而已
相似回答