(1) var i=0;这个i如果在if 或者在for里相当于什么还是局部变量?如果在函数test里在创建一个函数这个i是否可以调用?
简单的说就是比如创建funcition text(0) 定义局部变量var i=0.只要在test函数中不管其中包含多少函数,这个i都会有效是吧?在子函数里直接调用就可以是吧?那么第二个问题如果在test的子函数中声明一个变量,这个变量是否依然可以在其他子函数中使用呢?
<html> <head> <script type="text/javascript"> function test(o) { var i = 0; if (typeof o == "object") { var j = 0; for (var k = 0; k < 10; k++) { document.write(k); } document.write(k); //还可以访问到k为10 } document.write(j); //还可以访问到j为0 } var o = new Object(); test(o); </script> </head> </html>
(2) 为什么第一个alert(scope)显示undefined,不是外面有全局函数了吗?
<html> <head> <script type="text/javascript"> var scope = "global"; function f() { alert(scope); //显示undefined var scope = "local"; alert(scope); } f(); </script> </head> </html>
(3)没错我就是(2).我又来了JS有hoisting这个东西也就是变量声明提升。var scope=local应该挤到第一个位置来,那么
就意味着先声明后执行。为什么在这里会无效呢?
<html> <head> <script type="text/javascript"> var scope = "global"; function f() { alert(scope); //显示undefined var scope = "local"; alert(scope); } f(); </script> </head> </html>
幻灭丶
柠檬酸钠