使用命名函数表达式有什么意义
What is the point of using a named function expression?
我正在浏览这篇关于函数声明和函数表达式之间区别的博客。
它给出了这两个例子。 他们将第一个称为"匿名函数表达式",将第二个称为"命名函数表达式"。
// anonymous function expression
var a = function(){
return 3;
}
// named function expression
var b = function bar(){
return 3;
}
我在Chrome的JS控制台中测试了这两个,并看到以下内容:
a()
=> 3
b()
=> 3
bar()
=> bar is not defined
我的问题是:在第二个函数表达式声明中,"bar"的意义是什么?一般来说,为什么使用命名函数表达式?
有些人喜欢这样做,因为如果发生错误,你的函数就会有名称。这主要是偏好问题,以及您在使用未命名函数时遇到问题的频率。
您通常不会在 var
声明中看到它,而是在声明回调时看到它:
callbackFunction(function success() { ... }, function fail() { ... })
这样你就知道哪个论点是哪个,它们被标记出来,如果其中一个失败了,你就会得到一个精确的指示,哪个论点坏了。
var b = function bar(){ return 3; } bar() => bar is not defined
标识符bar
仅在函数内部可用。尝试
var b = function bar() {
console.log(bar);
}
b();
为什么使用命名函数表达式?
允许引用未分配给可访问或常量变量的函数表达式,例如用于 IEFE 中的递归。
此外,命名函数在调试期间显示不同,例如在调用堆栈(跟踪(或断点列表中。通常可以使用(命名的(函数声明代替函数表达式,另请参阅 http://blog.niftysnippets.org/2010/03/anonymouses-anonymous.html。
相关文章:
- JavaScript中的正则表达式应该是什么
- 不接受0-0-0的正则表达式是什么
- var w = q||问2;这个表达式是什么意思
- 波浪号在表达式之前时会做什么
- 这个正则表达式的日期/时间有什么问题
- 匹配某个字符后所有文本的正则表达式是什么
- 什么将是日期格式的正则表达式'dd-M-y'
- 下面的Reg表达式出了什么问题
- 我应该使用什么正则表达式来验证数字模式
- 什么是英国电话号码验证表达式和语法
- 正则表达式上的重音符号有什么用
- 我的电子邮件正则表达式有什么问题
- 这个表达式在JavaScript中意味着什么:if(special_validations中的$(element).at
- 什么'用这个正则表达式查找URL是错误的
- 印地语数字的正则表达式是什么
- 什么是最不坏的正则表达式来拒绝绝对无效的电子邮件地址
- 什么's VBA和Javascript布尔表达式之间的区别
- 什么是'v!==v'表达式检查
- 以下情况的有效正则表达式是什么
- 这个正则表达式我错过了什么