js中函数声明方式有三种:
console.log('--->', a);
var a = function () {
console.log('a1');
};
console.log('--->', b.toString());
function b () {
console.log('a1');
}
console.log('--->', A.toString());
function A() {
console.log('A');
};
那么上面的代码输出结果是什么样子呢:
---> undefined
---> function(){console.log("a1")}
---> function(){console.log("A")}
从结果可以看出,后面两种声明方式可以在函数声明之前直接调用,然而第一种方式,变量只会在声明之前被初始化为undifined,不能直接调用。所以结论:
1.第一种方式只会触发var的变量提升,在代码解析阶段var被初始化为undifined,执行阶段才会被赋值,所以第一种方式只能在声明语句之后才能调用
2.第二,第三种方式,都会在代码解析阶段(生成执行上下文)就被赋值,所以在执行的时候已经有值了可以被调用
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。