Javascript函数声明与函数表达式的区别分析
函数声明
函数声明示例代码
复制代码代码如下所示:
函数FN(){
console.log('fn功能。);
…
}
所以我们声明了一个名为FN的函数,这里有一个思想。你认为它会在这个函数的顶部执行吗还是错了
复制代码如下:(FN); / /函数fn称FN功能我们以前所说的(console.log('fn){函数执行。); / /代码.. }
控制台输出结果:
是的,此时可以调用FN函数,这里总结原因。
总结:
1:此时FN函数是变量的结果,变量默认情况下存储在全局上下文的变量中(使用窗口)。函数名)。
2:这是一个函数声明,它在全局上下文阶段创建,代码执行阶段,并且它们已经可用。
3:它可以影响变量对象(只存储在上下文中的变量)
功能性表达
函数表达式示例代码
复制代码代码如下所示:
函数(){()
console.log('fn { }。语句执行函数表达式)
…
}
那么我们声明一个匿名函数并将其引用指向变量FN
再一次,您每次调用表达式中声明的每个函数来查看控制台的输出。
复制代码代码如下所示:
为了清楚地看到控制台输出,我们在可读性之后对它们的调用作了标记。
Console.log(又称之前。);
(FN);
console.log(在通话结束。);
函数(){()
console.log('fn { }。语句执行函数表达式)
…
}
console.log(呼叫开始。);
(FN);
console.log(呼叫开始。);
控制台打印结果:
可以看出,当将代码执行到对FN()函数的第一次调用时,它提示FN不是一个函数(FN不是方法),如果出现错误,它将终止操作。
这表明,当第一次调用FN()时,var变量不作为全局对象的属性存在,并且未引用FN引用的匿名函数上下文,因此它之前的调用失败。
复制代码代码如下所示:
直到第一个调用/逻辑注释出来,查看输出控制台。
/ / console.log(称为开始之前。);
();
console.log( / /在调用结束。);
函数(){()
console.log('fn { }。语句执行函数表达式)
…
}
console.log(呼叫开始。);
在调用后的表达式中
console.log(呼叫开始。);
控制台打印结果:
正如您所看到的,可以稍后调用表达式函数,以总结为什么。
总结:
1:第一个变量本身不作为函数存在,而是对匿名函数的引用(值类型不是引用)。
2:在代码执行阶段,在初始化全局上下文时,它不是全局存在的属性,因此不会对变量对象造成污染。
3:这种类型的声明通常更常见于插件的开发中,也可以称为对关闭的回调函数的调用。
所以函数FN(var){不等于(=函数){,它们是根本不同的。
以上是本文的全部内容,思路很清晰,对比也很清楚,是一篇很好的文章,合作伙伴一定要仔细研究下一篇。