有没有办法允许JavaScript中的函数"无限"变量?
例:
load(var1, var2, var3, var4, var5, etc...)
load(var1)
Run Code Online (Sandbox Code Playgroud) 我有一个功能
function callback(obj){...}
Run Code Online (Sandbox Code Playgroud)
是否可以传入比函数签名中声明的更多的对象?例如这样称呼它:
callback(theObject, extraParam);
Run Code Online (Sandbox Code Playgroud)
我在Firefox上尝试过它并没有出现问题,但是这样做不好吗?
刚刚从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 QVariantQVariantList,而不是void insert(int index, const QVariant &item)具有过载QString裹QVariant.
现在,如果我按如下方式更改声明的顺序,它将按预期工作:
Q_SLOT void insert(int index, const QVariantList &items);
Q_SLOT …Run Code Online (Sandbox Code Playgroud) 假设我定义了一个函数:
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领域从未见过的东西,但我想这对于能够更好地了解语言的人来说很容易解释.下面我有以下功能:(代码取自本书:"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涉及哪些概念?提前谢谢,我很困惑.
最好的祝福,