<script> window.onload = function() { // const 定义常量类型 //const a; // 编译器报错:must be initialize const a = 50; console.log(a);// 50 //a = 70; // 编译器报错:说a是readonly console.log(a);// 50 // const 定义数组对象类型:可见const定义的数组是可以被修改的, // 也仅仅支持修改数组内容,不支持修改数组引用指向 const arr = new Array(); arr.push(1); arr.push(2); console.log(arr);// 1,2 </script>
作用:定义的变量支持修改,未初始化的变量默认为undefined
<script> window.onload = function() { // var 定义常量类型 var a; // 编译器不会报错 console.log(a); // 输出undefined a = 50; // 支持修改 console.log(a); // var 定义的对象支持修改 var arr = new Array(); arr.push(1); arr.push(2); console.log(arr); arr = '2';// 支持类型修改 console.log(arr);// 2 } </script>
<script> window.onload = function() { // let 常常用于块级作用域 let a; console.log(a);// undefined a = 10; console.log(a); // 10 b = 20; var b; // 不会报错,编译期会将变量b的声明提前 //c = 30; //let c;// 报错,块级变量,编译期不会提前??? // var 在闭包循环内定义的变量外部依然可以访问 for(var j = 0;j < 2;j++) { console.log("var for:"+j); } console.log("外部依然可以访问var闭包内定义的变量:"+j); // let 常用于闭包循环 for(let i = 0;i < 2;i++) { console.log("let for:"+i); } console.log("外部可以访问let闭包内定义的变量吗?"+i); } </script>