ES6 基础(let const)
1、let的新特性
let与var的区别
1、 不能重复定义相同的变量名(let特点不能重复定义,使用let定义一次即可,多次使用let定义同一个变量 会报错),//报错 Identifier 'num' has already been declared
2、let没有变量提升 有一个块级作用域 及{}就会产生一个块级作用域
// let与var的区别 不能重复定义相同的变量名,//报错 Identifier 'num' has already been declared //let没有变量提升有一个块级作用域 及{}就会产生一个块级作用域 // for(let i = 0;i<5;i++){ // var num = 10; // let num = 5; // console.log(num); // } // function fnn(name){ // let name = "李四"; // console.log(name); // } // fnn('张三');//报错,重复定义 function fun1 (){ console.log(num); var num = 1;//变量提升 undefined } fun1(); function fun2 (){ console.log(num); let num = 2;//报错 Cannot access 'num' before initialization } fun2();
// for (var i=0; i<input.length;i++){
// (function (i) {
// input[i].onclick = function(){
// alert(i)
// }
// })(i)
// }
// let定义为let声明的变量仅仅在自己的块级作用域
// 起作用,出了这个块级作用域就不起作用。
for (let i = 0; i < input.length; i++) {
input[i].onclick = function () {
alert(i)
}
}
2、conts新特性
const 声明常量
1、不能重复声明常量名
2、声明后必须赋值 字符串,数字 布尔值等基本数据类型 (当常量第一数组,对象时,只要不改变给常量指向的地址,地址内存储的内容可以改变)
3、常量特点不能修改const num1 ;
4、没有变量提升
5、具有块级作用域
//const 声明常量 //1、不能重复声明常量名 // var num =10; // const num = 15; // console.log(num)//Identifier 'num' has already been declared //声明后必须赋值 字符串,数字 布尔值等基本数据类型 常量特点不能修改const num1 ; // console.log(num1);//Missing initializer in const declaration // const person = {num:10,sex:"男"};//指向是一个地址,地址不能修改 // console.log(person.num); // person.num = 40;//可以改变地址中的值 // console.log(person.num); // person = {num:100}; // console.log(person.num);//报错 // const arr = [1,2,3]; // arr[1]=5; // console.log(arr[1]);//数组同理 // function fun() { // console.log(num); // const num = 10; // } // fn()//报错 没有变量提升 //具有块级作用域 for(var j=0;j<5;j++){ const num =10; } console.log(num);