【问题标题】:Assigning a variable name in argument of function call在函数调用的参数中分配变量名
【发布时间】:2014-01-19 07:39:37
【问题描述】:

我以前在某种语言中看到过这个(或类似的东西),我猜它是 Javascript 或 PHP。我在网上找不到任何相关的东西——我猜只是我不知道它叫什么。无论如何,我想知道我是否可以这样做:

function myFunc(t) {
    alert(t);
}
myFunc(alertString="foo");

函数调用的结果会提示“foo”。

这可能吗?我想要做这样的事情的原因是它提高了可读性,而不必在调用分配变量之前写行。这个叫什么?有任何语言支持吗?我只是对这个想法感兴趣。谢谢!

【问题讨论】:

  • myFunc("foo") 还不够吗?正确命名函数通常可以提供所有需要的自文档。还是我错过了你的意思?
  • 你没有抓住重点。我知道你可以做到这一点......我在问我想要做什么。
  • 可能需要发送名称本身就是不好的编码,但我认为它可以提高可读性。
  • ...是的,这是可能的,你会看到你是否会尝试它。但是,如果您不声明变量,则会创建一个全局变量,这在 IMO 中并不好。
  • 我认为您正在寻找命名函数参数,而不是变量赋值......目前 PHP 或 Javascript 不支持 AFAIK,但它在 C# 等语言中。以下是在未来版本中将它们添加到 PHP 中的建议:wiki.php.net/rfc/named_params

标签: javascript php arguments


【解决方案1】:

如 cmets 中所述,命名参数在当前版本的 PHP 中不可用(还),但正如您所说,“我已经看到this before" 也许您只是意味着您看到在函数声明中为参数分配了一个值? 如果未指定,这只是一个“默认”值:

function foo($value = 'hello world!'){
    echo $value;
}

foo('bar'); //  bar
foo();      //  hello world!

如果我们谈论的是命名参数,那么这并不完全相同,但在 PHP 和 Javascript 中,您经常会看到将关联数组或对象映射作为单个参数传递的代码以允许在函数可能接受多个参数的情况下,更灵活。 例如:

PHP

function foo($params){
    echo $params['a'] . $params['b'] . $params['c'];
}

foo(array(
  'a' => 'hello ',
  'b' => 'world',
  'c' => '!'
));

Javascript

function foo(params){
    console.log(params.a + params.b + params.c);
}

foo({
   a: 'hello ',
   b: 'world',
   c: '!'
});

【讨论】:

  • Javascript 部分的最后一点正是我想要的。谢谢!
【解决方案2】:

在 PHP 中可以这样:

<?php
function test($t) {
    echo $t;
}

test($test="hi");
?>

这会将值“hi”分配给变量$test,然后将其传递给函数test() ...

【讨论】:

    【解决方案3】:

    在 JavaScript 中可以使用您自己的语法。在 PHP、C# 和 Java 中也可以。我对其他语言不太了解。问题是something = somethingElse 可以用作表达式,而赋值运算符通常不只是赋值。他分配该值,然后“留下”他右手边的任何值。

    【讨论】:

      【解决方案4】:

      javaScript:

      <script>
      function myFunc(t) {
          alert(t);
      }
      myFunc("foo");
      
      </script>
      

      PHP:

      <?php
      function myFunc($t) {
         echo "<script> alert('$t')</script>";
      
      }
      
      myFunc('foo');
      
      ?>
      

      【讨论】:

      • 你的回答没有任何意义。你甚至读过这个问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 2018-05-11
      • 2020-08-18
      • 2018-03-25
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多