- 区分函数表达式与函数声明
- 有没有函数名
- 通过上下文区分,在块类的为函数表达式
- 函数表达式有声明提前,而函数表达式没有,函数表达式在运行时声明
- arguments.callee的引用一直是被调用的函数
//命名函数表达式得有名字
//这个名字只在新定义的函数作用域内有效,因为规范规定了标示符不能在外围的作用域内有效:
//调试器中的函数名
// Firebug为匿名表达式取名的功能
// 记得给函数表达式取个名字呀 😍
function foo() {
return bar()
}
function bar() {
return baz()
}
function baz() {
debugger;
}
foo();
调试器中的函数名
function foo() {
return bar()
}
// Firebug为匿名表达式取名的功能
var bar = function() {
return baz()
}
function baz() {
debugger;
}
foo();
function foo(){
return bar();
}
var bar = (function(){
if (window.addEventListener) {
return function(){
return baz();
};
}
else if (window.attachEvent) {
return function() {
return baz();
};
}
})();
function baz(){
debugger;
}
foo();
给函数表达式取个函数名后,在调试的时候方便观察调用栈信息
function foo(){
return bar();
}
var bar = (function(){
if (window.addEventListener) {
return function bar(){
return baz();
};
}
else if (window.attachEvent) {
return function bar() {
return baz();
};
}
})();
function baz(){
debugger;
}
foo();