如何解释这个Javascript语法

时间:2016-10-30 07:40:39

标签: javascript syntax

我在Javascript中查看了一些内容。当我进入call()函数时,我在mozilla js developer page上看了一遍:

语法:

fun.call(thisArg[, arg1[, arg2[, ...]]])

我理解这个函数是做什么以及它是如何运作的,但究竟是什么语法试图说?为什么在那个括号后面有逗号?

[,

同样当我查找reduce()函数时,我理解它是如何工作的,但语法显示了这一点:

arr.reduce(callback[, initialValue])

这不应该像arr.reduce(callback,initialvalue)那样吗?

作为一个菜鸟,语法让我相信回调是一个数组,它有一个空的第一个元素和一个名为initialValue的第二个元素。有什么地方我可以阅读这个语法,以便它有意义,或者某个人可以提供一些清晰度吗?

编辑:回调是指一个函数是吗?那么为什么回调[]而不是回调()?

2 个答案:

答案 0 :(得分:5)

[...]表示里面的内容是可选的。例如,arr.reduce(callback[, initialValue])可以是arr.reduce(callback)arr.reduce(callback, initialValue)

逗号就在那里意味着如果你要包含第二个参数,你必须加上逗号。

答案 1 :(得分:2)

这是一个文档约定,而不是实际的JS语法。

方括号表示该参数是可选的。

省略号表示任何数量的参数可以去那里。

fun.call(thisArg[, arg1[, arg2[, ...]]])

意味着您可以说:

 fun.call(foo);
 fun.call(foo, 1);
 fun.call(foo, 1, 2);
 fun.call(foo, 1, 2, 3);
 fun.call(foo, 1, 2, 3, 4);
 fun.call(foo, 1, 2, 3, 4, 5);

arr.reduce(callback[, initialValue])

意味着你可以使用dsay:

arr.reduce(foo);

arr.reduce(foo, bar);

...但

arr.reduce(foo, bar, baz);