但如果在JS中 view sourceprint? 01 for(var i=0;i<5;i++) { 02 } 03 var obj = {name:"Lily"}; 04 for(var attr in obj) { 05 } 06 { 07 var j=10; 08 } 09 alert(i);//输出4,没有块状作用域 10 alert(attr); //输出name,没有块状作用域 11 alert(j);//输出10,没有块状作用域 这也说明一个问题,避免在全局范围内使用for循环同时声明变量,否则会造成全局命名范围的污染。 当然,JS1.7中提出了let关键字声明变量(见https://developer.mozilla.org/cn/New_in_JavaScript_1.7),只作用于for语句范围。 view sourceprint? 1 for(let i=0;i<5;i++) { 2 //todo 3 } 4 alert(i);//运行时报错,提示i未定义 JS1.7需要这样引用 <script type="application/javascript;version=1.7"/></script> ps:firefox2+实现了JS1.7 (责任编辑:admin) |