【问题标题】:javascript accessing the name of the parameters for debugging purposesjavascript访问参数名称以进行调试
【发布时间】:2023-03-16 20:40:01
【问题描述】:

无论如何都可以访问参数的“名称”:

function(arg1, arg2) {
    debug("arg1 is rotten!");
}

现在,如果我更改参数名称,我也必须更改字符串中的名称,所以我正在寻找 javascript 是否有类似 How do i bind function arguments to the parameters i supply in creating an ArgumentException object? 的解决方案

我想要一种方法来做类似的事情:

function(arg1, arg2) {
        debug(arguments[0].name+" is rotten!");
    }

这样我就不必搜索更改并在我更改参数名称时进行相应更改(有时不止一次使用!)

【问题讨论】:

  • 要获取第一个参数,您可以使用arguments[0] 等。然后名称无关紧要。 (当然,顺序很重要)
  • 也许我误解了你的问题.. 但是如果你更改参数名称,除非在 answhere 中没有使用该参数,否则你必须更改代码是完全正常的..
  • @ThiefMaster 这一点都不正常。
  • @pimvdb 我的意思是我需要变量的名称

标签: javascript web


【解决方案1】:

您不能访问变量名,只能访问它们的值。最接近的是,如果您的方法的参数是“选项”样式对象(它只是一个常规的 JavaScript 对象,但称它为“选项”或“选择”并包含所有参数是一种非常常见的做法):

function test(opts){
    for(var name in opts){
        console.log(name + ' with value ' + opts[name] + ' is rotten!')
    }
}

test({arg1: 'argument 1', arg2: 'argument 2'});

【讨论】:

    【解决方案2】:

    只要你有一个函数,函数中就会有一个名为 arguments 的数组,其中包含所有参数

    见小提琴:http://jsfiddle.net/maniator/P5FvN/

    【讨论】:

    • 我认为他实际上想要变量的名称,而不仅仅是在参数中访问它的值
    • @Matt +10 理解问题
    • 不是我,但我猜是因为你没有真正回答这个问题。
    • @user90070,除非您像@Matt 在他的回答中所做的那样,否则无法实际获取参数名称
    【解决方案3】:

    试试这个:

    function show_me() {
        for (var i=0; i < arguments.length; i++) {
            alert(arguments[i]);
        }
    }
    
    show_me('a', 'b');
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多