<!DOCTYPE html> <html> <head> <Meta charset="utf-8"> <title>块级作用域</title> </head> <body> <!-- <script type="text/javascript"> // {}包含的范围 是块级作用域 // 块级作用域中,使用var声明的变量,依然是全局变量 { var a = 100; console.log(a); } console.log(a); // let 声明块级变量 只能在当前的块级作用域使用 { let b = 200; console.log(b); } console.log(b);//报错 </script> --> <!-- <script type="text/javascript"> //if 代码块 if(true){ let c = 300; console.log(c); } console.log(c); //报错 </script> --> <!-- <script type="text/javascript"> //块级作用域 没有变量提升 { // console.log(d); // let d = 400; } </script> --> <!-- <script type="text/javascript"> //块级作用域 只有块级变量概念,没有块级函数概念 { //function关键字定义的函数,就是全局函数 fn(); function fn(){ console.log(500); } let f1 = function(){} //属于块级变量,这种函数不会预加载 } fn(); </script> --> <!-- <script type="text/javascript"> //let定义块级变量,一般不要在全局直接用 //全局使用var // let num = 100; // console.log(100); // let num = 200; //会报错 { let a = 100; console.log(a); //同一个块级作用域中,块级变量可以重新赋值 a = 200; console.log(a); a = 400; console.log(a); //同一个块级作用域中,块级变量不能重复声明 // let a = 300; //报错 // console.log(a); } </script> --> <script type="text/javascript"> //for循环i丢失的问题 //循环绑定事件、循环设置定时器(指定的函数,在循环结束后才调用) /*for(var i=0; i<5; i++){ //设置定时器,1秒后,输出循环变量i的值 (function(m){ setTimeout(function(){ console.log(m); }, 1000); })(i); }*/ for(let i=0; i<5; i++){ //设置定时器,1秒后,输出循环变量i的值 //每次循环,都会产生一个块级作用域,其中的块级变量i 互相不影响 setTimeout(function(){ console.log(i); }, 1000); } </script> </body> </html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。