相关疑难解决方法(0)

JavaScript变量函数的参数数量

有没有办法允许JavaScript中的函数"无限"变量?

例:

load(var1, var2, var3, var4, var5, etc...)
load(var1)
Run Code Online (Sandbox Code Playgroud)

javascript arguments function argument-passing

510
推荐指数
11
解决办法
31万
查看次数

传递比函数声明更多的参数是不是很糟糕?

我有一个功能

function callback(obj){...}
Run Code Online (Sandbox Code Playgroud)

是否可以传入比函数签名中声明的更多的对象?例如这样称呼它:

callback(theObject, extraParam);
Run Code Online (Sandbox Code Playgroud)

我在Firefox上尝试过它并没有出现问题,但是这样做不好吗?

javascript

23
推荐指数
1
解决办法
8879
查看次数

Qt/Qml和方法重载

刚刚从Qml中调用重载的C++方法并尝试理解其背后的原因时,遇到了Qt框架的奇怪行为.假设我有一个QList<QVariant>类似于以下方法的类:

...
Q_SLOT void append(const QVariant &item);
Q_SLOT void append(const QVariantList &items);
Q_SLOT void insert(int index, const QVariant &item);
Q_SLOT void insert(int index, const QVariantList &items);
...
Run Code Online (Sandbox Code Playgroud)

QML:

onclicked: {
  var itemCount = myListObject.size();
  myListObject.insert(itemCount, "Item " + (itemCount + 1));
}
Run Code Online (Sandbox Code Playgroud)

Qt的某种方式决定将调用void insert(int index, const QVariantList &items)与过载items参数设置为一个null QVariant空的QVariantList,而不是void insert(int index, const QVariant &item)具有过载QStringQVariant.

现在,如果我按如下方式更改声明的顺序,它将按预期工作:

Q_SLOT void insert(int index, const QVariantList &items);
Q_SLOT …
Run Code Online (Sandbox Code Playgroud)

c++ qt moc qml

10
推荐指数
1
解决办法
2694
查看次数

为什么在 JavaScript 中可以向函数传递额外的参数?

假设我定义了一个函数:

function myAwesomeFunction(x){
    console.log(x);
}
Run Code Online (Sandbox Code Playgroud)

现在,我期望的是,如果我这样称呼它:myAwesomeFunction(1)or myAwesomeFunction('lol')or myAwesomeFunction('whatever'),它会起作用并且确实如此。

但它是如何工作的,即使我向函数传递额外的参数并简单地忽略除第一个参数之外的所有参数:

myAwesomeFunction('why so', 'serious?')
Run Code Online (Sandbox Code Playgroud)

我们在上面的函数中甚至没有任何可选参数?(即,像(x, y='')

function myAwesomeFunction(x){
    console.log(x);
}
Run Code Online (Sandbox Code Playgroud)

javascript function

6
推荐指数
1
解决办法
9342
查看次数

为什么在没有参数的情况下定义函数时,我可以使用参数调用函数?

美好的一天!

我偶然发现了一些我在JavaScript领域从未见过的东西,但我想这对于能够更好地了解语言的人来说很容易解释.下面我有以下功能:(代码取自本书:"JavaScript忍者的秘密")

function log() {
  try {
    console.log.apply(console, arguments);
  }
  catch(e) {
    try {
      opera.postError.apply(opera, arguments);
    }
    catch(e) {
      alert(Array.prototype.join.call(arguments, " "));
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这个函数是用一个空参数列表定义的,但当我在本书后面看到他们实际上使用这样的函数时,我感到非常困惑......

var x = 213;
log(x); //Hmmm, I thought this function had an empty parameter list.
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下,为什么这个函数调用允许/可能?支持此功能的JS涉及哪些概念?提前谢谢,我很困惑.

最好的祝福,

javascript

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

标签 统计

javascript ×4

function ×2

argument-passing ×1

arguments ×1

c++ ×1

moc ×1

qml ×1

qt ×1