//1.函数声明
var functionName = function(){
alert("1");
}
//2.函数表达式
function functionName(){
alert("2");
}
//现在调用这个方法
functionName();
弹出的结果是什么呢?
是 2 吗?
如果你觉的是 2 ,那就错了,答案应该是1
再来看一下下边这个弹出的结果是什么?
//现在调用这个方法
functionName();
//1.函数声明
var functionName = function(){
alert("1");
}
//2.函数表达式
function functionName(){
alert("2");
}
这个的结果应该是2
做一下总结吧!
上边所展示给我们的特点是函数表达式明显区别于函数声明的地方。
解释器在解析JavaScript代码时对于这两种方式并不是一视同仁的。解释器会首先读取函数声明,并使其在执行任何代码之前可用;而对于函数表达式,则必须等到解释器执行到它所在的代码行,才会被真正解析执行。
所以第一题中的2先被解释器读取,然后在执行时又读到了1,于是就把之前的2给覆盖了。
第二题也展示给我们了,无论函数声明放在哪里,JavaScript引擎也会把函数声明放到顶部;而函数表达式,只有在代码执行阶段才能把函数体赋值给 函数名,然后才能调用。
这个解释器究竟是干啥的呢?我觉得自己也有必要深入了解一下了,希望有看到文章的朋友们,有熟悉的可以一起交流分享一下,加油吧!