变量声明优先级
使用var关键字和function关键字声明的变量,会被JS的解释器优先解析执行,具有优先级
使用var关键字声明变量
1. 看代码说话
// 在script中直接打印输出变量a
console.log(a); // Uncaught ReferenceError: a is not defined
2. 看代码说话
console.log(a); // 此处输出 undefined
var a = 20; // 赋值操作
console.log(a); // 此处输出 20
PS:如果两道问题都OK,请下一页!答错的小伙伴请看开眼!
// 当程序来执行时,首先var关键字声明变量优先执行,进行变量声明,却没有进行赋值
console.log(a); // 变量a已经声明,但是没有赋值
var a = 20; // 此处变量a已经进行赋值操作了
console.log(a); // 20
使用function关键字声明函数
function 关键字声明的函数会被优先执行
1. 看代码说话
// 输出变量
var test = 10;
// 定义函数
function test () {
console.log('木木哒..')
}
// 调用函数
test();
// 以上代码在执行时会发生情况?
// 页面显示错误, test is not a function
PS: 小伙伴们,来开眼!
以上代码执行过程:
1. 执行var test变量的声明
2. function关键字声明的函数生效,此刻test是一个function
3. 顺序执行程序,对test进行赋值 test = 10, 类型变为 number
4. 当调用test函数时,此刻test已经是number类型了,所以发生错误