检查函数是否为false并使用它的值而不再调用它

时间:2013-01-06 19:45:12

标签: javascript

您好我想知道是否有一种很好的方法可以检查函数是否返回某些内容并且如果返回false则返回。

function setPage(hash){
    for(k = 0; k<magazine.pages.length ; k++ )
    {
        if( magazine.pages[k][2] == hash )
        {
            return k;
            break;
        }
    }
    return false;
};

var actualPage = ( !hash ? 0 : setPage(hash.replace('#', '')) ? setPage(hash.replace('#', '')) : 0 )} );

我想避免将setPage()函数调用两次,而我之前无法存储它的值,因为我希望只有当hash为true时才调用它。是否有可能在不牺牲短语法的情况下做到这一点?

2 个答案:

答案 0 :(得分:0)

如果您使setPage()方法返回0而不是false,则问题就会消失,而您的方法将不再返回含糊不清的变量类型:

function setPage(hash){
    for(k = 0; k < magazine.pages.length ; k++ )
    {
        if( magazine.pages[k][2] == hash )
        {
            return k;
            break;
        }

    }
    return 0;
};


var pageNum = hash ? setPage(hash.replace("#", "")) : 0;

答案 1 :(得分:0)

您可以使用布尔||(或)。

var actualPage = ( !hash ? 0 : setPage(hash.replace('#', '')) || 0 )} );

Javascript使用short-circuit evaluation - ||测试左边的expresison,如果是真值,则返回值,否则返回右边的值:

E.g。

var echoBack = function(v) { return v; }

echoBack(false) || 0; // 0;

echoBack('hello') || 0; // 'hello'