空字符串(“”)如何在Javascript中调用函数?

时间:2017-05-06 01:54:27

标签: javascript function

我是编码新手,javascript有时会有一些奇怪的语法。 我知道很多调用函数的方法,但是这个方法让我很感兴趣。 我查看了开发人员编写的代码,并推断出发生了什么,但无法理解。

通过在("")内的函数定义旁边放置()来调用函数。

(function functionName() {console.log("Hello")}) ("")
// Hello

(functionName)("")
// evaluates the function

我试过搜索但在这里找不到。如果有人能解释这里发生了什么(这个概念),我将不胜感激。如果这个问题重复,请告诉我。感谢。

1 个答案:

答案 0 :(得分:2)

您只需使用一个参数functionName调用函数""

如果您定义这样的函数:

function functionName() {console.log("Hello")}

然后这两个陈述是等价的:

functionName
(functionName)

键入

(function functionName() {console.log("Hello")})("")

你:

  • 定义匿名函数
    • 注意:因为它的声明附近有括号,所以函数的范围受到限制。该功能不可用于该程序的其余部分。这意味着functionName将在下一行代码中定义
  • 评估函数(通过在函数定义周围加括号)
  • 使用单个参数""
  • 调用该函数

该函数不接受参数,那么为什么我将参数""传递给它时呢?

Javascript允许调用具有更多/更少参数的函数,然后接受:

  • 如果参数太多(如我们的情况),则会丢弃额外的参数。在这种情况下,""将被丢弃。
  • 如果参数不足,则为undefined



function test(a, b) { console.log(a + " " + b) }

test()              // undefined undefined
test("a")           // a undefined
test("a", "b")      // a b
test("a", "b", "c") // a b