我不理解本OP的一部分答案:
Javascript function scoping and hoisting
作家说:
"
此外,在这个例子中,
var a = function () {};
表现与
相同{{1}}
"
我所知道的是,函数表达式与函数声明不同,至少对于提升而言。在这种情况下,为什么它们相似?
答案 0 :(得分:1)
区别在于第一行是在运行时定义的,而第二行是在脚本块的分析时定义的。
在堆栈上查看完整的答案,在这里:var functionName = function() {} vs function functionName() {}
答案 1 :(得分:1)
为什么他们在这种情况下相似?
由于var
已悬挂(但未设置),因此函数声明会被挂起,这意味着a
中存在a = 10;
评估a
之前的本地范围,因此全局a
永远不会被修改 - 标识符查找首先找到本地var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
所以设置
其他问题的相关部分
a === 1
为什么
b
?
答案是试图说function b() {
function a() {}
a = 10;
return;
}
等于
function b() {
var a = function () {};
a = 10;
return;
}
与
相似a
即。在b
中定义了标识符function b() {
var a = 10;
return;
}
,所以
a
现在,显然,b
var
请注意function b() {
a = 10;
return;
var a;
}
的位置并不重要,只是它在那里,以下会产生相同的行为
PathProperties pathProperties =
PathProperties.parse("(id,status,name,shippingAddress(id,line1,city),billingAddress(*),contacts(*))");
List<Customer> customers = Ebean.find(Customer.class)
.apply(pathProperties)
.findList();
String jsonString = Ebean.json().toJson(customers, pathProperties);