【问题标题】:using multiple return statements in JavaScript在 JavaScript 中使用多个 return 语句
【发布时间】:2013-03-02 22:16:08
【问题描述】:

我正在尝试使用多个返回,但只是不断破坏代码。我尝试了一些示例,但找不到正确的组合。

如何将这两个返回语句合二为一?

$(".bar").popover({
content: 
    function (){
        return $(this).data('dataObj').status;
        return $(this).data('dataObj').timeline;
    }
});

【问题讨论】:

  • popover 内容属性不需要字符串吗?
  • 只使用 return $(this).data('dataObj')

标签: javascript return


【解决方案1】:

撇开这种特殊情况,插件需要某种类型的返回值(在这种情况下显然是一个字符串),你不能真的... 返回语句终止函数。您需要做的是返回一个包含这两个值的对象(或数组) -

var status = $(this).data('dataObj').status;
var timeline = $(this).data('dataObj').timeline;
return [status,timeline];

或者

var status = $(this).data('dataObj').status;
var timeline = $(this).data('dataObj').timeline;
var returnObj = {'status':status, 'timeline':timeline};
return returnObj;

【讨论】:

    【解决方案2】:

    使用

    function (){
        return $(this).data('dataObj');
    }
    

    function (){
        // return an array
        return [ $(this).data('dataObj').status, $(this).data('dataObj').timeline ]
    }
    

    function (){
        // return a associative array
        return { "status": $(this).data('dataObj').status, "timeline": $(this).data('dataObj').timeline }
    }
    

    并处理调用者中的组件。

    更新

    popovercontent 参数需要一个字符串作为参数,你可以这样做:

    function (){
        return $(this).data('dataObj').status + " " + $(this).data('dataObj').timeline;
    }
    

    【讨论】:

    • -1 谁知道dataObj里面有多少数据——如果你只需要它的两个属性,就没有理由返回整个对象。
    • 按照你的逻辑,为什么不简单地返回整个 data() 对象。
    • 我删除了我的投票,因为您添加了一些更好的建议,但我的评论仍然有效......
    • 返回dataObj 可能更好。这是一个已经分配的对象。它已经在消耗内存。创建仅返回特定值的新数组或对象会占用 更多 内存。唯一有意义的情况是dataObj 非常大并且没有其他引用指向它。
    【解决方案3】:

    你可以返回包含这两项的objext ir数组

    $(".bar").popover({
    content: 
        function (){
            return 
            {
            status: $(this).data('dataObj').status;
            timeline: $(this).data('dataObj').timeline;
            }
        }
    });
    

    【讨论】:

    • 这是一个干净的解决方案。但是我想了解这些冒号在status:和timeline:中扮演的角色,似乎是case语句。
    【解决方案4】:

    尝试返回一个以 .status 和 .timeline 作为元素的数组。 Ok Lix 更快。

    【讨论】:

      猜你喜欢
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2018-05-15
      • 2015-08-03
      • 1970-01-01
      相关资源
      最近更新 更多