-2

嗨,我想知道是否有一种好方法来检查函数是否返回某些东西,如果它返回 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 为真时才调用它。是否可以在不牺牲简短语法的情况下做到这一点?

4

2 回答 2

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;
于 2013-01-06T20:36:14.337 回答
0

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

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

Javascript 利用短路求值-||测试左边的表达式,如果它是真的,则返回该值,否则返回右边的值:

例如

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

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

echoBack('hello') || 0; // 'hello'
于 2013-01-06T20:40:01.490 回答