没有参数传递时,参数如何存在?

时间:2014-03-06 10:43:49

标签: javascript

我是Javascript的新手,虽然我有.net背景。通常在.NET(以及许多其他语言)中,如果方法需要传递参数,则必须传递它(否则由于签名错误而导致编译器错误)。这在JavaScript中也是如此,但并非所有情况都会出现。

在Javascript中似乎不是这样。

作为一个工作示例,请参阅第61行

http://www.humblesoftware.com/flotr2/#!basic-axis

第61行是tickFormatter: ticksFn,

我知道tickFormatter正在调用一个名为ticksFn的函数,但第29行显示

function ticksFn(n) {
    return '(' + n + ')';
}

'ticksFn'需要传递一个值(n),但是,我们永远不会传递它。

尽管如此,javascript仍然是正确的,我无法了解如何,也无法工作/了解搜索什么以进行更多研究

2 个答案:

答案 0 :(得分:1)

你永远不会打电话。您将函数本身作为参数传递(或者更确切地说作为参数的对象的属性值)。

graph = Flotr.draw(container, [ /* ... */], {
      xaxis : {
        noTicks : 7,              // Display 7 ticks.
        tickFormatter : ticksFn,  // Displays tick values between brackets.
        // …

您的第三方库代码负责实际调用该函数,并使用参数执行此操作。

答案 1 :(得分:0)

在javascript中,不需要传递函数的参数,因为如果不传递,则传递undefined值。

这是一个功能:

function ticksFn(n) {
return '(' + n + ')';
}

可以调用:

ticksFn();

没有任何问题,n的值将是未定义的。

或者是没有参数定义的函数:

function ticksFn() {
return '(' + arguments[0] + ')';
}

并致电:

ticksFn(10);

arguments [0]将为10.因此您可以读取任意数量的参数。

这是关于javascript函数的快速教程..现在关于你的代码.. javascript是一种面向函数的语言,因此编写没有括号的函数名实际上是对函数的引用,而不是调用函数本身..