预解析的注意事项
变量提升
就是把所有的变量声明提升到当前的作用域最前面,但是不提升赋值的操作
下面展示一些 内联代码片
。
// 变量提升 只会提升关键字及变量名 提升后的样子如下
var b;
console.log(b);
b=20;
如上,因此结果为undefined,赋值在下,所以没值
函数提升
就是把所有的函数声明提升到当前作用域最前面,不调用函数
下面展示一些 内联代码片
。
// 函数提升 只会提升关键字及变量名 提升后的样子如下
//3.正常情况下
function fn() {
console.log('我能被输出');
}
fn();
//4.函数提升
fun();
function fun() {
console.log('我也能被输出出来');
}
//5.函数表达式
var fnc = function () {
console.log('正常情况下,我能被输出');
}
fnc();
//6.fnc1是一个变量不是函数,所以无法输出,报错 fnc1 is not a function
fnc1();
var fnc1 = function () {
console.log('这样子,我就不能被输出了');
}
注意函数表达式不能跟函数混为一谈,函数表示中提升的是变量,多加注意!!!