在预处理阶段js引擎会扫描代码中用var定义的变量
和用声明的方式
定义的函数
- 用声明方式定义函数
function a(){
alert('hello world');
}
- 用函数表达式定义函数
var demo = function(){
alert('hello world');
}
<script>
alert(a);
// alert(b); 注释掉这行, 因为运行的时候会报错
alert(f);
alert(g);
var a = 5;
b = 6;
alert(b);
function f(){
console.log('f');
}
var g = function(){
console.log('g');
}
alert('g');
</script>
如以上代码, 在预处理阶段结果:
a: undefined
f: 指向一个函数
g: undefined 虽然g是指向一个函数, 但是它使用var来声明的, 被当做变量
在浏览器中运行结果
undefined
functino f(){
console.log('f');
}
undefined
6
function(){
console.log('g');
}