在返回表达式之后定义函数的使用场景或优点是什么
What are the usage scenarios or advantages of defining functions after the return expression
En示例可以在Twitter'atypeahead.js中找到:
function () {
// ...
return this.each(initialize);
function initialize() {
// ...
}
}
问题:
- 作用域是什么,什么函数看到什么
- 使用这种构造的原因是什么(使用场景和优势)
Javascript具有基于函数的作用域,这意味着函数中定义的每一件事都可以从第一行开始使用,因为定义是由编译器"提升"的。
这适用于变量和函数定义——然而,变量值直到赋值之后才可用。
您可以在此处阅读有关javascript作用域和提升的所有信息
这意味着函数initialize
可以从包装匿名函数的第一行获得。
这样做没有真正的理由,也没有任何优势,除非你把代码结构视为一种优势。
就我个人而言,我认为没有任何理由这么做。对我来说,甚至这看起来有点奇怪。马丁是对的。您应该小心,因为定义的变量不像函数那样可访问。例如,这不起作用:
var getValue = function(func) {
return func();
}
var f = function() {
return getValue(now);
var now = function() {
return 10;
}
}
alert(f());
然而,这是有效的:
var getValue = function(func) {
return func();
}
var f = function() {
return getValue(now);
function now() {
return 10;
}
}
alert(f());
相关文章:
- JavaScript中的正则表达式应该是什么
- 不接受0-0-0的正则表达式是什么
- var w = q||问2;这个表达式是什么意思
- 匹配某个字符后所有文本的正则表达式是什么
- 印地语数字的正则表达式是什么
- 以下情况的有效正则表达式是什么
- 在这种情况下,正则表达式中的“[”是什么( 2 个问题)
- 匹配正确字符串的确切正则表达式是什么
- 正则表达式中 /gi 的含义是什么
- 赋值表达式的标准格式是什么
- 这个 JavaScript 正则表达式 /[^d.-] 是什么意思
- 从 JMeter 的正则表达式提取器中的字符串“什么是 (123+43)”中提取 123+43 的正则表达式是什么?
- 使用 Javascript 函数表达式的首选方法是什么
- JavaScript.这个表达式是什么意思:“ var a = b === c && d;".
- 这个 JavaScript 对象数组表达式 {}[] 是什么意思
- Javascript 正则表达式中 [^] 的含义是什么
- 正则表达式中的“匹配 x 并记住匹配”是什么意思
- 保存正则表达式匹配项的全局变量名称是什么
- ?=^ 在正则表达式中是什么意思
- 用于验证范围内十进制值的正则表达式是什么 - 0 到 99999.00