Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
347 views
in Technique[技术] by (71.8m points)

javascript - 在JavaScript中,返回switch语句被认为是比使用break更好的做法吗?(In JavaScript, is returning out of a switch statement considered a better practice than using break?)

Option 1 - switch using return:

(选项1 - 使用return返回:)

function myFunction(opt) 
{
    switch (opt) 
    {
        case 1: return "One";
        case 2: return "Two";
        case 3: return "Three";

        default: return "";
    }    
}

Option 2 - switch using break:

(选项2 - 使用break切换:)

function myFunction(opt) 
{
    var retVal = "";

    switch (opt) 
    {
        case 1: 
            retVal = "One";
            break;

        case 2: 
            retVal = "Two";
            break;

        case 3: 
            retVal = "Three";
            break;
    }

    return retVal;
}

I know that both work, but is one more of a best practice?

(我知道两者都有效,但又是一种最佳实践吗?)

I tend to like Option 1 - switch using return best, as it's cleaner and simpler.

(我倾向于喜欢选项1 - 使用返回最佳切换,因为它更干净,更简单。)


Here is a jsFiddle of my specific example using the technique mentioned in @ic3b3rg's comments :

(这是我使用@ ic3b3rg评论中提到的技术的具体例子的jsFiddle :)

var SFAIC = {};

SFAIC.common = 
{
    masterPages: 
    {
        cs: "CS_",
        cp: "CP_"
    },

    contentPages: 
    {
        cs: "CSContent_",
        cp: "CPContent_"    
    }
};

function getElementPrefix(page) 
{
    return (page in SFAIC.common.masterPages)
        ? SFAIC.common.masterPages[page]
        : (page in SFAIC.common.contentPages)
            ? SFAIC.common.contentPages[page]
            : undefined;
}

To call the function, I would do so in the following ways:

(要调用该函数,我会通过以下方式执行此操作:)

getElementPrefix(SFAIC.common.masterPages.cs);
getElementPrefix(SFAIC.common.masterPages.cp);
getElementPrefix(SFAIC.common.contentPages.cs);
getElementPrefix(SFAIC.common.contentPages.cp);

Problem here is that it always returns undefined.

(这里的问题是它总是返回undefined。)

I'm guessing that it's because it's passing in the actual value of the object literal and not the property.

(我猜这是因为它传递的是对象文字的实际值,而不是属性。)

What would I do to fix this using the technique described in @ic3b3rg's comments?

(我将如何使用@ ic3b3rg的评论中描述的技术来解决这个问题?)

  ask by Code Maverick translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

Please log in or register to answer this question.

Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...