以下代码片段抛出引用错误:未定义 selectTen
var select = _.pipe(
selectTen,
fetchUrls,
awaitUrlData,
connectToLoad
)
var selectTen = _.partialRight(selectItems, [4])
var connectToLoad = _.partialRight(connect, [load]);
虽然以下代码片段运行良好:
var selectTen = _.partialRight(selectItems, [4])
var connectToLoad = _.partialRight(connect, [load]);
var select = _.pipe(
selectTen,
fetchUrls,
awaitUrlData,
connectToLoad
)
我正在使用vanilla(ES5)JavaScript将这段代码作为angularjs项目的一部分运行,其中.js文件包含在index.html的标签中。未使用模块加载程序
_.
符号是 Lodash 函数式编程库的一部分。可以说它们返回功能并且可以替换为 function(param){...}
.
为什么 selectTen 和 connectToLoad 函数没有托管在第一个代码段中?
与let
声明一样,const
声明的作用域为其封闭块,就好像变量(嗯,常量)是在块的顶部声明的一样。但是,在代码中实际显示声明的点之前,不能使用该值。
块的打开点和声明出现的点之间的间隙被称为(相当戏剧性的)"时间死区"。
因为它们不是定义的函数,所以它们是将函数文字作为其值的常量。
如果您这样做,例如:
function selectTen(selectedItems) { return _.partialRight(selectedItems, [4]); }
然后他们会被吊起来