相关疑难解决方法(0)

设置JavaScript函数的默认参数值

我希望JavaScript函数具有可选参数,我将其设置为默认值,如果未定义该值,则使用该参数.在Ruby中你可以这样做:

def read_file(file, delete_after = false)
  # code
end
Run Code Online (Sandbox Code Playgroud)

这是否适用于JavaScript?

function read_file(file, delete_after = false) {
  // Code
}
Run Code Online (Sandbox Code Playgroud)

javascript parameters function default-parameters

2277
推荐指数
18
解决办法
119万
查看次数

如何动态获取函数参数名称/值?

有没有办法动态获取函数的函数参数名称?

假设我的函数看起来像这样:

function doSomething(param1, param2, .... paramN){
   // fill an array with the parameter name and value
   // some other code 
}
Run Code Online (Sandbox Code Playgroud)

现在,我如何从函数内部获取参数名称及其值的列表到数组中?

javascript reflection function-parameter

282
推荐指数
14
解决办法
16万
查看次数

获取函数参数的默认值?

对于这个功能

def eat_dog(name, should_digest=True):
    print "ate dog named %s. Digested, too? %" % (name, str(should_digest))
Run Code Online (Sandbox Code Playgroud)

我希望,在函数外部,读取它的参数和附加的任何默认值.所以对于这个具体的例子,我想知道它name没有默认值(即它是必需的参数),这True是默认值should_digest.

我知道inspect.getargspec(),它确实给了我关于参数和默认值的信息,但我发现两者之间没有联系:

ArgSpec(args=['name', 'should_digest'], varargs=None, keywords=None, defaults=(True,))

从这个输出我怎么能告诉True(在defaults元组中)是默认值should_digest

另外,我知道接近问题的"请求宽恕"模型,但不幸的是,该错误的输出不会告诉我缺少参数的名称:

>>> eat_dog()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: eat_dog() takes at least 1 argument (0 given)
Run Code Online (Sandbox Code Playgroud)

为了给出上下文(为什么我要这样做),我通过JSON API在模块中公开函数.如果调用者省略了某些函数参数,我想返回一个特定的错误,该错误命名了省略的特定函数参数.如果客户端省略了参数,但函数签名中提供了默认值,我想使用该默认值.

python

52
推荐指数
4
解决办法
2万
查看次数

`this`如何在默认参数中工作?

所以...ES6¹(几个小时前恰好标准化)为类似于PHP,Python等的函数带来了默认参数.我可以这样做:

function foo (bar = 'dum') {
    return bar;
}

foo(1); // 1
foo(); // 'dum'
foo(undefined); // 'dum'
Run Code Online (Sandbox Code Playgroud)

MDN表示在调用时评估参数的默认值.这意味着每次调用该函数时,'dum'都会再次计算表达式(除非实现执行一些我们不关心的奇怪的优化).

我的问题是,如何this发挥作用?

let x = {
  foo (bar = this.foo) {
    return bar;
  }
}

let y = {
  z: x.foo
}

x.foo() === y.z(); // what?
Run Code Online (Sandbox Code Playgroud)

babel转换器目前评估它为false,但我不明白.如果他们真的在通话时评估,那么:

let x = 'x from global';

function bar (thing = x) {
  return thing;
}

function foo () {
  let x = 'x from foo'; …
Run Code Online (Sandbox Code Playgroud)

javascript default-parameters ecmascript-6

11
推荐指数
1
解决办法
247
查看次数

正则表达式从函数定义中获取参数列表

可能重复:
如何从javascript动态获取函数参数名称/值

我正在研究javascript(node.js)中的一个项目,我试图从函数中获取一个参数名称数组(NOT值,我不需要参数).我目前正在使用Function.toString()获取函数字符串,然后运行正则表达式以获取我的参数列表.

我们来看下面的简单示例:

var myFunction = function (paramOne, paramTwo) { ... }
Run Code Online (Sandbox Code Playgroud)

运行我的正则表达式,然后做一些字符串魔术(拆分等),我希望像这样的数组:

paramList = ['paramOne', 'paramTwo']
Run Code Online (Sandbox Code Playgroud)

我有一些有用的东西,但我觉得它可能不是最好的解决方案给定一些时髦的字符javascript允许你使用变量名称和javascript将让你在多行定义功能.

这是我目前拥有的:

function.*[\w\s$]*(\((.*[\w\s,$]*)\))
Run Code Online (Sandbox Code Playgroud)

这给了我第1组中的"匹配",然后是第2组中没有任何parens的参数列表,这很酷.这真的是做我想要的最好的方式吗?我可以使用更好的正则表达式吗?我并不是在寻找"更简单"的东西,而是真正能够捕捉到所有可能情况的东西.

任何帮助将不胜感激,并提前多多感谢!

javascript regex

9
推荐指数
1
解决办法
2万
查看次数