Javascript 匿名函数和带有函数表达式的变量语句有什么区别?
对于下面的2个函数,我不理解在读取脚本时函数B不会像函数A那样立即运行 相反,我必须称之为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");
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被分配到