到目前为止,我认为“调用”和“调用”函数意味着同样的事情。但是,在YouTube教程中,它说通过调用来调用函数。我的第一个想法是措辞是错误的,但在W3Schools的page函数调用上,它说:
通常使用术语“调用函数”而不是“调用函数” 函数“...在本教程中,我们将使用invoke,因为a 可以在不调用的情况下调用JavaScript函数。
好的,所以有区别。它是什么?
答案 0 :(得分:14)
您的参考文字:
通常使用术语“调用函数”而不是“调用函数” 函数“...在本教程中,我们将使用invoke,因为a 可以在不调用的情况下调用JavaScript函数。
现在让我重新说一下:
通常使用术语“调用函数”而不是“调用函数” 函数“...在本教程中,我们将使用
the term
调用instead of call
,因为a 可以调用JavaScript函数indirectly
,例如fn.call()
和fn.apply()
,而不像directly
那样调用fn()
。
因此,当我执行fn()
时,它会直接调用,当我像fn.call()
那样执行时,会间接调用它,但在这两种情况下,都会调用该函数。否则,我认为这里没有区别,我也可以说我可以通过多种方式调用函数,例如:
fn(); // I'm calling it
fn.call(); // I'm calling it
fn.apply(); // I'm calling it
所以,区别在于语义,但两者都是可以互换的,IMO。顺便说一下,我在上面写了一个评论,我想把它放在这里,这是:
IMO,这是一个误导性的陈述。也许有一些迹象表明 打电话/申请或其他什么,但这完全令人困惑。
答案 1 :(得分:2)
区别在于语义和微妙。当你调用一个函数时,你直接告诉它运行。当你调用一个函数时,你会让某些东西运行它。
有一种方法可以调用函数:
myFunction()
在这里,您通过直接调用它来调用该函数(让它运行)。
有许多方法可以调用函数(在不同的注释和答案中给出)。这是一个例子:
function invoker(functionName) {
functionName()
}
invoker(myFunction)
在这里,通过调用invoker
,您正在调用myFunction
,这是间接调用的。
答案 2 :(得分:2)
是的,在大多数情况下,我们都使用它们来引用函数的执行。
有两种方法可以从 HOME 到达 B 。
- 直接/自动方式(调用),即如果您选择第一种方式,则无需走路。有人会自动带你去 B 。
- 间接方式(呼叫),即如果选择第二种方式,您只需要达到 A (步行)。有人在那里 A 自动带你去 B 。
醇>
看看下面的图片。我认为这将清除你的怀疑。
如果调用,您最初会引用实际调用该函数的语句。
如果是调用,则间接引用调用语句来实际调用/运行该函数。
答案 3 :(得分:0)
许多人使用“交换”一词来调用和调用,但那是不对的。调用和调用函数之间有一点点差别。在JavaScript中,可以在不调用的情况下调用函数,这意味着函数体内的代码可以在不创建object
的情况下执行。它与全局对象联系在一起。当没有单个对象时,this
的值与全局对象相关联。
call
和apply
之间也存在差异,根本区别在于call()接受参数列表,而apply()接受单个参数数组。调用现有函数时,可以分配不同的this
对象。 this
指的是当前对象,即调用对象。使用call
,您可以编写一次方法,然后在另一个对象中继承它,而不必重写新对象的方法。
因此,调用和调用之间的主要区别在于this
对象。调用let你设置this
值,而调用只是将它绑定到全局对象。
答案 4 :(得分:-3)
"调用函数"表示已执行的功能
"函数调用"意味着一个函数被另一个函数调用然后执行
"调用函数而不调用"是一个在没有被另一个函数调用的情况下自我调用的函数
example of a self invoking function calling another function:
var f = (function() {
foo();
})(); ///() here means it self invoked -- without being called directly.
var foo = (function() {
///Do something here
});