对函数表达式和我分配函数表达式的变量使用相同的标识符是否存在任何问题
Are there any problems with using the same identifer for both a function expression and the var I assign the function expression to?
例如:
var foo = function foo() {};
到目前为止,我还没有遇到任何问题,但我想知道为什么在了解到命名函数表达式优于匿名函数表达式后,我没有更频繁地看到这一点。
不,这绝对没问题。请注意,它几乎与
function foo() {
}
唯一的区别(但这是一个重要的区别!)是我的示例(函数声明)被提升,而你的(命名函数表达式)则没有。这也意味着我的不能出现在流量控制结构中(例如连接到if
或循环的块),而你的可以。除此之外,他们做同样的事情:
在当前作用域中创建引用函数的标识符
foo
创建一个具有名称(也是
foo
)的函数;该名称在函数的范围内
如果没有你的var foo =
,命名函数表达式会执行后者,但不能执行前者。
在一些过时的 JavaScript 引擎上,命名函数表达式处理不正确,但任何模糊的现代(所以,不是 IE8)都可以正常工作。
相关文章:
- 调用正则表达式匹配的函数
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 参数更改时,角度表达式中的函数不更新
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 是否有任何Javascript函数从指定的索引中进行正则表达式匹配
- 能够在定义函数表达式之前使用它
- 函数表达式,返回回调函数
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 函数声明与函数表达式之间的性能差异
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- 立即调用函数表达式(IIFE)相对于普通函数的优势
- 如何通过jsp表达式标记将java字符串变量传递给javascript函数
- 用正则表达式在js中进行函数修剪
- 错误-应为赋值或函数调用,但实际看到的却是表达式
- Javascript错误正则表达式不是函数
- “期望赋值或函数调用,而是看到了表达式.” - 不必要的控制台.log
- 为过滤器创建javascript正则表达式函数
- 如何修复这个正则表达式函数
- 传递变量来替换正则表达式函数
- 正则表达式函数4个字母和4个数字