【问题标题】:"Jump dictionaries", switch statements, or how to do "jump dictionaries" without eval?“跳转词典”、switch 语句,或者如何在没有 eval 的情况下进行“跳转词典”?
【发布时间】:2013-05-18 03:53:27
【问题描述】:

我喜欢包含 key:values 的 “跳转字典” 的概念,其中的值是函数。不过,我不确定我是否应该喜欢这个概念。

如果if-else if 语句,我想替换一个长列表。 (我应该使用switch 语句吗?)

有没有办法在不使用 eval 的情况下实现“跳转字典”? (我已经读过这篇关于为什么 eval 不好的文章: Why is using the JavaScript eval function a bad idea? )

使用 eval 的示例

function some_func(arg) { console.log('I am a some func') };
function find_my(arg) { console.log('we are looing for your ' + arg); };

var jump = {
    '1' : 'some_func()',
    '2' : 'find_my("cat")',
    '3' : 'find_my("dog")'
}

eval(jump['3'])
eval(jump['2'])
eval(jump['1'])

谢谢。

【问题讨论】:

    标签: javascript node.js switch-statement eval


    【解决方案1】:

    使用匿名函数:

    var jump = {
        "1":some_func,
        "2":function() {find_my("cat");},
        "3":function() {find_my("dog");}
    }
    

    现在你可以打电话了:

    jump["3"]();
    jump["2"]();
    jump["1"]();
    

    【讨论】:

    • 爱它。是时候重构了。谢谢!
    猜你喜欢
    • 2011-11-21
    • 2023-03-19
    • 2019-01-28
    • 2014-08-30
    • 2014-08-28
    • 2016-07-18
    • 2017-04-30
    • 2019-03-01
    • 2012-08-02
    相关资源
    最近更新 更多