教你做面膜v官方网站,玉环住房与城乡建设规划局网站,中山市建设工程 交易中心网站,网站开发培训心得javascript相对于其它语言来说是一种弱类型的语言#xff0c;在其它如java语言中#xff0c;程序的执行需要有编译的阶段#xff0c;而在javascript中也有类似的“预编译阶段”#xff08;javascript的预编译是以代码块为范围script/script#xff0c;即每…javascript相对于其它语言来说是一种弱类型的语言在其它如java语言中程序的执行需要有编译的阶段而在javascript中也有类似的“预编译阶段”javascript的预编译是以代码块为范围script/script即每遇到一个代码块都会进行 预编译执行了解javascript引擎的执行机理将有助于在写js代码过程中的思路总结 首先科普下javascript中的两种声明方式var和function前者声明的是变量后者声明的是方法 在预编译中javascript对这两种声明做出了两种处理方案 1 2 3 4 5 6 7 8 9 script var a 1; //声明变量a function b(){ //声明方法b alert(); } var c function(){ //声明变量c alert(); } /script 以上代码块中a、c为变量赋值b为函数声明当执行以上的代码时首先会进入预编译阶段对与变量赋值a、c会在内存中开辟一块内存空间并指向变量名且赋值为undefined 对于函数声明则同样会进行开辟内存空间但赋值的对象会将声明的函数赋值给函数名 预编译阶段PS不管代码中声明变量和声明函数的顺序如何在预编译阶段会先声明变量再声明函数 1 2 3 4 5 script var a undefined; var c undefined; var b function(){ alert(); } /script 执行阶段 1 2 3 4 5 6 script a 1; c function(){ alert(); } /script 整体执行步骤 1 2 3 4 5 6 7 8 9 10 11 12 script var a undefined; var c undefined; var b function(){ alert(); } a 1; c function(){ alert(); } /script 题目 1 2 3 4 5 6 7 8 script var a 1; function b(){ alert(a); var a 2; } b(); /script psjavascript的预编译 一、先预定义变量再预定义函数 二、变量的预编译只作声明不作初始化初始化在执行时 三、function语句定义的函数不仅声明了函数名而且函数体也进行了处理 四、匿名函数不会预编译 1 2 3 4 function f(){ // 声明函数f return 1; } alert(f()); // 返回1 var f function(){ // 定义匿名函数f return 2; } alert(f()); // 返回2 先预定义了变量f,然后同名函数f()覆盖了变量f,所以第一次输出1;变量的预编译 1 2 3 4 5 6 var f function(){ // 定义匿名函数f return 1; } alert(f()); // 返回1 function f(){ // 声明函数f return 2; } alert(f()); // 返回1 先预定义了变量f,然后同名函数f()覆盖了变量f.转载于:https://www.cnblogs.com/liuguniang/p/6916035.html