这是我的javascript代码:
console.log(a);
c();
b();
var a = 'Hello World';
var b = function(){
console.log("B is called");
}
function c(){
console.log("C is called");
}
现在输出:
undefined
hoisting.html:12 C is called
hoisting.html:6 Uncaught TypeError: b is not a function
我的问题是关于为什么c()和b()表现不同。并且b应该抛出类似b未定义的错误。
答案 0 :(得分:2)
这就是你的代码在编译时之后“看起来”对解释器的看法 - 在运行时之前:
query.bindValue(":include_trial", include_trial ? QVariant(include_trial) : QVariant());
KISSJavaScript
答案 1 :(得分:1)
功能表达:
var b = function(){
console.log("B is called");
}
功能声明:
function c(){
console.log("C is called");
}
功能表达式仅在解释器到达该行代码时加载。另一方面,函数声明,它始终有效。因为在加载所有声明之前不能调用任何代码。
答案 2 :(得分:0)
当您致电 b 时尚未定义。您的 b 是一个包含功能的变量,而您访问 b 的时间尚未定义。
答案 3 :(得分:0)
因为使用Function Expression声明一个函数会创建一个匿名函数,除非您明确提供了一个名称:
var b = function() {} // anonymous function
并且使用“函数声明”声明函数时,设置名称为
function c() {} // c function