调用vs调用函数

时间:2018-06-16 04:15:49

标签: javascript

到目前为止,我认为“调用”和“调用”函数意味着同样的事情。但是,在YouTube教程中,它说通过调用来调用函数。我的第一个想法是措辞是错误的,但在W3Schools的page函数调用上,它说:

  

通常使用术语“调用函数”而不是“调用函数”   函数“...在本教程中,我们将使用invoke,因为a   可以在不调用的情况下调用JavaScript函数。

好的,所以有区别。它是什么?

5 个答案:

答案 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

     
      
  1. 直接/自动方式(调用),即如果您选择第一种方式,则无需走路。有人会自动带你去 B
  2.   
  3. 间接方式(呼叫),即如果选择第二种方式,您只需要达到 A (步行)。有人在那里 A 自动带你去 B
  4.   

看看下面的图片。我认为这将清除你的怀疑。

如果调用,您最初会引用实际调用该函数的语句。

如果是调用,则间接引用调用语句来实际调用/运行该函数。

答案 3 :(得分:0)

许多人使用“交换”一词来调用和调用,但那是不对的。调用和调用函数之间有一点点差别。在JavaScript中,可以在不调用的情况下调用函数,这意味着函数体内的代码可以在不创建object的情况下执行。它与全局对象联系在一起。当没有单个对象时,this的值与全局对象相关联。

callapply之间也存在差异,根本区别在于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
});