1、理解什么是暗示全局变量(在函数中未var声明的为暗示全局变量) 2、预编译与函数使用
<script> //暗示全局变量,预编译 //暗示全局变量,如果函数中定义的变量,没有使用var关键字,则这个变量暗示为全局变量 //在传统js中只有全局变量和函数域变量 // function f(){ // var a = 1;//a为函数域中的变量,这个变量只能在函数中使用 // b = 2; //b暗示为了全局变量 // } // f(); // //console.log(a);//这里会报错,没有定义a // console.log(b);//这里不会报错,结果为2 //--------------预编译 // var a;//这里没有赋值,但是也有默认值为undefined // console.log(a);//这里打印结果为undefined //--------------- //console.log(a);//直接打印会报错,因为a没有定义 //---------------- // console.log(a);//这里不报错,结果为undefined,因为预编译过程,先把变量声明置顶 // var a; //---------------- // console.log(a);//这里显示的是undefined,因为已经把var a这个声明提前,但是赋值属于执行过程 // //所以,a = 3这个指令在这里并没有执行 // var a = 3; // console.log(a);//所以这里结果为3,因为前面那条语句才执行了将3的值赋给a //-------------- //console.log(f);//这里的值为undefined // f();//这里会报错,因为不知道f是什么,只知道有var f // var f = function(){ // a = 1; // alert(a); // } // console.log(f); </script>