javaScript预解析
Posted handsomenose
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript预解析相关的知识,希望对你有一定的参考价值。
1. 把var声明的变量提升到当前作用域最前面,不会提升赋值
console.log(num); var num=10; //相当于 var num; console.log(num); num=100; //得不到10的结果;
2. 把函数声明 提升到当前作用域的最前面
test(); function test(){ console.log(‘哈哈‘); } //相当于 function test(){ console.log(‘哈哈‘); } test();
fm(); var fm=function(){ console.log(‘哈哈‘); } //相当于 var fm; fm(); fm=function() { console.log(‘哈哈‘); }
得不出结果
3. 如果函数同名 ??? 后者会覆盖前者
test(); function test() { console.log(‘第一个‘) } function test() { console.log(‘第二个‘) }
4. 如果 var声明的 和 函数声明的同名 , 函数优先
console.log(test); var test=12;
//此函数被调用
function test()
{ console.log(‘帅‘);
}
练习
var num = 10; fn1(); function fn1() { console.log(num); var num = 20; }
结果:undefined;
var a = 18; fn2(); function fn2() { var b = 9; console.log(a); console.log(b); }
结果:18 9;
fn3(); console.log(c); console.log(b); console.log(a); function fn3() { var a = b = c = 9;
//var a=9; 局部变量
//b=9; 因为b没有声明所以是隐式全局变量
//c=9; c和b一样 console.log(a); console.log(b); console.log(c); }
结果:9 9 9 9 9 error
以上是关于javaScript预解析的主要内容,如果未能解决你的问题,请参考以下文章