Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匿名函数和带有函数表达式的变量语句有什么区别?_Javascript_Anonymous Function_Variable Declaration - Fatal编程技术网

Javascript 匿名函数和带有函数表达式的变量语句有什么区别?

Javascript 匿名函数和带有函数表达式的变量语句有什么区别?,javascript,anonymous-function,variable-declaration,Javascript,Anonymous Function,Variable Declaration,对于下面的2个函数,我不理解在读取脚本时函数B不会像函数A那样立即运行 相反,我必须称之为startTick()在函数B之后 //Function A (function () { console.log("startTick"); clockSection.textContent = getTime(); })(); //Function B var startTick = function () { console.log("startTick");

对于下面的2个函数,我不理解在读取脚本时函数B不会像函数A那样立即运行

相反,我必须称之为
startTick()在函数B之后

//Function A
(function () {
    console.log("startTick");
    clockSection.textContent = getTime();

})();


//Function B 
var startTick = function () {
    console.log("startTick");
    clockSection.textContent = getTime();

};

由于最后的
()
,第一个函数立即执行(IIFE)。必须调用第二个函数:
startTick()
(函数表达式),因为您只是将函数赋值给变量,而不是执行它

IIFE—立即调用的函数表达式—通常用作封装模块或一组代码的方式。它创建一个用作命名空间的闭包


函数表达式通常用来代替命名函数,但没有实际用途。这是风格的问题

由于最后的
()
,第一个函数立即执行(IIFE)。必须调用第二个函数:
startTick()
(函数表达式),因为您只是将函数赋值给变量,而不是执行它

IIFE—立即调用的函数表达式—通常用作封装模块或一组代码的方式。它创建一个用作命名空间的闭包


函数表达式通常用来代替命名函数,但没有实际用途。这是风格的问题

首先声明一个函数:
(function(){})
,然后调用它
(function(){})(
。注意函数A中函数声明后的括号。它调用它。函数B没有被调用,只是声明了。

首先声明一个函数:
(function(){})
,然后调用它
(function(){})(
)。注意函数A中函数声明后的括号。它调用它。函数B没有被调用,只是声明了

function func_name(){...} 
这是一个函数声明。您可以通过此语法定义函数的功能。但它不会在声明之后自动运行

每当您想要运行函数时,通常通过

func_name()
在其他地方声明函数之后

所以要回答你的问题:

职能A: 在第一对括号内是函数的声明。然后第二对括号就是实际调用函数的地方

职能B: 这只是一个声明,不会自动运行。 因此,如果要运行它,请通过
func\u name()

希望你清楚这一点

这是一个函数声明。您可以通过此语法定义函数的功能。但它不会在声明之后自动运行

每当您想要运行函数时,通常通过

func_name()
在其他地方声明函数之后

所以要回答你的问题:

职能A: 在第一对括号内是函数的声明。然后第二对括号就是实际调用函数的地方

职能B: 这只是一个声明,不会自动运行。 因此,如果要运行它,请通过
func\u name()


希望你清楚这一点

第一个函数不仅仅是一个匿名函数,它是一个“立即调用的函数表达式”(简称IIFE)

函数本身就是括号内的东西,它不会自己执行,你通过在括号内定义它来调用它,然后通过表达式末尾的
()
调用它,所以在某种程度上,你仍然必须使用
()
,就像你对第二个函数所做的那样,只是,如果你没有这样做,因为它是匿名的,并且没有存储在变量、常量或let中,所以您以后无法引用它来执行它

第二个函数实际上仍然是一个匿名函数,您只是将其分配给一个var,而不是将其括在括号中并立即调用它

命名函数如下所示:

function startTick(){
    ...
}

请注意,它没有分配给var或任何东西,而是在
函数
关键字之后定义了名称。一个重要的区别是,您可以在定义命名函数的行之前调用代码中的命名函数(此处的更多信息:。此处的更多信息:)

第一个函数不仅仅是匿名函数,它是“立即调用的函数表达式”(简称IIFE)

函数本身就是括号内的东西,它不会自己执行,你通过在括号内定义它来调用它,然后通过表达式末尾的
()
调用它,所以在某种程度上,你仍然必须使用
()
,就像你对第二个函数所做的那样,只是,如果你没有这样做,因为它是匿名的,并且没有存储在变量、常量或let中,所以您以后无法引用它来执行它

第二个函数实际上仍然是一个匿名函数,您只是将其分配给一个var,而不是将其括在括号中并立即调用它

命名函数如下所示:

function startTick(){
    ...
}

请注意,它没有分配给var或任何东西,而是在
函数
关键字之后定义了名称。一个重要的区别是,您可以在定义命名函数的行之前调用代码中的命名函数(此处的更多信息:。此处的更多信息:)

他在问题中这样说。他在问题中这样说。
()
在函数引用调用函数之后。在第一个例子中有,但在第二个例子中没有。在第一个示例中,您认为
()
做了什么?
()
在函数引用调用函数之后。在第一个例子中有,但在第二个例子中没有。在第一个示例中,您认为
()
做了什么?在函数B中,当变量startTick被分配到