以下代码片段引发 ReferenceError:selectTen未定义
public void init()
{
ChangeListener<Number> listener = (obs, ov, nv) -> update();
node.widthProperty().addListener(listener);
node.heightProperty().addListener(listener);
}
public void update()
{
label.setText(String.format("width[%s] height[%s]", node.getWidth()), node.getHeight);
}
虽然以下代码段运行完全正常:
var select = _.pipe(
selectTen,
fetchUrls,
awaitUrlData,
connectToLoad
)
var selectTen = _.partialRight(selectItems, [4])
var connectToLoad = _.partialRight(connect, [load]);
我使用vanilla(ES5)JavaScript运行此代码作为angularjs项目的一部分,其中.js文件包含在index.html中的标记中。没有使用模块加载器
var selectTen = _.partialRight(selectItems, [4])
var connectToLoad = _.partialRight(connect, [load]);
var select = _.pipe(
selectTen,
fetchUrls,
awaitUrlData,
connectToLoad
)
符号是lodash&#39;的一部分。函数式编程库。可以说他们返回了函数,可以用_.
替换。
为什么selectTen和connectToLoad函数没有托管在第一个代码段中?
答案 0 :(得分:2)
与let
声明一样,const
声明的范围限定在它们的封闭块中,就好像变量(well,常量)被声明在块的顶部一样。但是,在声明实际出现的代码中,该值才能使用。
块的开口与声明出现点之间的间隙被称为(相当显着)“时间死区”。
答案 1 :(得分:1)
因为它们不是定义的函数,所以它们是具有函数文字作为其值的常量。
如果您这样做:
apply
然后他们将被悬挂