JavaScript的变量作用域
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> //局部变量的优先级大于全部变量的优先级,当js引擎在当前作用域找不到此变量时,就会在外围的作用域找 //js在预编译阶段,它是以函数来划分作用域的,然后逐层为其以var显示声明的变量和定义式函数开辟内存空间,然后在对显示声明的变量进行特殊处理,通通赋初始值为undefined var a = 100; function testResult() { var b = 2 * a;//预编译时,此时存在变量a,但a还未赋值,值为undefined,相当于var a; var a=200; //a = 200; //不会对a进行预编译,当执行var b = 2 * a;时,在函数中为找到变量a,所以会在外围找,此时找到a=100,结果b=200; var c = a / 2; alert(b);//NaN alert(c);//100 } testResult(); </script> </head> <body> </body> </html>