JavaScript -- 预解析规则
众所周知 js中 使用var声明变量会存在变量 “预解析”(变量与函数提升)
// 预解析过程
// 1. 把var声明的变量提升到当前作用域最前面,不会提升赋值 var num = 19 ; var fn = function() {..}
// 2. 把函数声明 提升到当前作用域的最前面,, function test() {....}
// 3. 如果函数同名 后者会覆盖前者
// 4. 如果 var声明的 和 函数声明的同名 , 函数覆盖var声明的
分享道关于js 预解析的面试题 var a = 4; console.log(a); a = 6; console.log(a); function a() { console.log('哈'); } a(); a = 10; console.log(a);
预解析后: 函数与变量声明重复,函数会覆盖掉变量声明,底下的a=4又覆盖掉了函数 所以执行a() 的时候会报错 底部就不执行了
function a() {
console.log('哈');
}
var a;
a = 4;
console.log(a); //4
a = 6;
console.log(a); // 6
a(); //报错
a = 10;
console.log(a); //不执行

浙公网安备 33010602011771号