【问题标题】:function variable and in function variable have the same name. How to access?函数变量和函数变量具有相同的名称。如何访问?
【发布时间】:2012-01-10 06:33:20
【问题描述】:

我想知道 javascript(如果可能的话)如何访问与函数的变量输入同名的变量。

function myfunc(var1)
{
    var var1 = "World";
    alert(var1);
}

如何告诉函数要打印哪个 var1?

【问题讨论】:

  • 使用唯一变量名怎么样? :-3
  • 为什么要使用同名?
  • 这个问题只是为了一个问题,这就是为什么第一条评论无关紧要,我希望我回答了第二条。 “我想知道”这句话应该澄清......

标签: javascript function syntax functional-programming var


【解决方案1】:

这实际上并没有定义同名的第二个变量。即使使用var 语句,您也只是覆盖了同名的函数参数。

给你的第二个变量一个唯一的名字。

(顺便说一句,即使这确实有效,它仍然是一个的想法,因为它会使您的代码难以阅读。)

【讨论】:

    【解决方案2】:

    nnnnnn 是正确的,我测试过。传递给函数的参数可以通过两种方式访问​​,通过参数名称和arguments 变量。 arguments[0] 将是第一个参数的值。

    在下面的示例中,您会看到 2 个警报,第一个是 "Hello",第二个是 "World"。但是他们都说"World"证明分配var1实际上改变了传递给函数的参数的值。

    function myfunc(var1) {
        var var1 = "World";
        alert(arguments[0]);
        alert(var1);
    }
    
    myfunc("Hello");
    

    【讨论】:

    • 实际上在严格模式下(在 JS 1.8.5 中)arguments 对象不应该通过更改命名参数来更新,因此在严格模式下,您的示例应该说“Hello”“World” ,但我故意在我的回答中没有提到这一点,因为我不想弄脏水或以任何方式鼓励创建与函数参数同名的局部变量。此外(截至我上次研究时)一些声称支持严格模式的浏览器实际上并未实现此规则。
    • @nnnnnn 我想知道该怎么做。我不是说我会。我好奇。能给我看看吗?
    • nnnnnn 是说我提供的代码示例将按照您的预期工作,如果您在严格模式下运行 JavaScript,您会看到“Hello”的警报,然后是“World”的警报.至于您如何在严格模式下看到它,您可以在此处找到更多信息:goo.gl/DbsKb - 至于哪些浏览器支持它以及它们对它的支持程度,您必须研究它,或者通过试验找出错误。
    • @luisperezphd 和 @@nnnnnn 谢谢。我所有的代码都是用严格的代码编写的。至于兼容性,你可以找到这个有用的列表:kangax.github.com/es5-compat-table
    猜你喜欢
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2021-02-08
    • 2016-04-23
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多