Javascript displayName()和displayName()之间的区别是什么;并返回displayName;?
我是一个有抱负的前端开发人员。我在读一篇关于JavaScript中的闭包的MDN文章。MDN文章使用以下两个代码示例来解释基本概念。虽然我理解基本概念,但我有以下疑问Javascript displayName()和displayName()之间的区别是什么;并返回displayName;?,javascript,closures,Javascript,Closures,我是一个有抱负的前端开发人员。我在读一篇关于JavaScript中的闭包的MDN文章。MDN文章使用以下两个代码示例来解释基本概念。虽然我理解基本概念,但我有以下疑问 displayName()和返回显示名称? ** 在第一种情况下,它正在执行函数,而在第二种情况下,makeFunc返回另一个函数。请检查console.log。这就是为什么在myFunc()之后有一个(),它将执行从makeFunc返回的函数 函数init(){ 变量名='Mozilla'; 函数displayName(){
displayName()代码>和返回显示名称
?
**
在第一种情况下,它正在执行函数,而在第二种情况下,makeFunc
返回另一个函数。请检查console.log
。这就是为什么在myFunc()
之后有一个()
,它将执行从makeFunc
返回的函数
函数init(){
变量名='Mozilla';
函数displayName(){
警报(名称);
}
displayName();
}
init();
函数makeFunc(){
变量名='Mozilla';
函数displayName(){
警报(名称);
}
//这是返回一个函数
console.log(显示名称)
返回显示名;
}
var myFunc=makeFunc();
//因为它返回一个函数,所以在添加()之后,它只执行一次
myFunc()代码>
displayName()和返回displayName之间有什么区别
区别在于第一个调用函数displayName
,而第二个返回该函数。要查看这意味着什么的示例:
const log = () => console.log('I was invoked!')
const getLog = () => {
return log
}
const doLog = () => {
log()
}
我们有一些函数,调用时会打印到控制台。我们还有另外两个函数,一个返回log
,另一个调用它。调用getLog()
时,我们看不到任何打印到控制台的内容。当我们调用doLog()
时,我们会这样做
另一点是getLog
返回log
的值。因此,我们也可以这样做:
const logByDifferentName = getLog()
这不会导致调用log
,而是将其分配给另一个值。displayName()
调用displayName
引用的函数<代码>返回显示名称
返回引用,在本例中,使myFunc
引用相同的函数。displayName
是变量名,在这种情况下是函数,displayName()
是调用传递零参数的函数的方式。使用()
时调用函数,而不使用()
作为引用传递。这可能会有所帮助:@Paulpro我知道我们调用/执行函数时,会在函数名后加上分号和分号,displayName()就是这种情况;。但是“返回引用”有什么用呢?这是什么意思?可以吗。详细说明?谢谢。所以,这两个代码示例的结构不同,但输出相同。我想知道写第二个例子有什么必要,它比第一个长一点?@hemanta如果name
是makeFunc
的一个参数:function makeFunc(name),这个例子会有趣得多{…
。还要删除makeFunc的第一行,该行将name的值设置为Mozilla
@hemanta,然后您可以执行var-mFunc=makeFunc('Mozilla');var-sFunc=makeFunc('StackOverflow');sFunc();sFunc();sFunc();sFunc();sFunc();sFunc();
const log = () => console.log('I was invoked!')
const getLog = () => {
return log
}
const doLog = () => {
log()
}
const logByDifferentName = getLog()