标签:原因 javascrip fun 处理机 代码 class func undefined ext
JavaScript不会完全按照代码的顺序执行,在执行之前会对定义的函数和变量先来一边所谓的预编译处理。
先来说下对变量的预处理:
console.log(a) //undefined var a =‘hello world!‘ console.log(a) //‘hello world‘
按照常理,我们还没定义a这个变量,提前打印应该是报错的,但是确打印出undefined, 出现这个效果的原因就是预处理机制。再来说下这段代码的执行过过程:
var a; console.log(a); //undefined a = ‘hello world‘; console.log(a); //hello world
通过这段代码可以看出,在代码执行之前会找到变量,然后把该变量提升到顶部!var a;由于a未 赋值,所以打印出undefined,继续执行对a进行赋值所以再次打印的是‘hello world‘。
除此之外,对函数也会进行预处理操作:
console.log(fun1); // function f1() {} function fun1() {}
这段代码的执行过程是这样的:
function fun1() {} console.log(fun1);
与变量提升相似,函数预编译的时候函数会被提升到最前面
当变量与函数同时存在时,函数提升的更靠前!!!
标签:原因 javascrip fun 处理机 代码 class func undefined ext
原文地址:https://www.cnblogs.com/genhao7/p/12240895.html