//let 和 const 声明变量和常量 var
//01-作用域只局限于当前代码块
{
var str1 ="张三";
console.log(str1);
let str2 ="李四"
console.log(str2);
}
console.log('+++++'+ str1);//+++++张三
console.log('-----'+ str2);//无打印结果
// 02-使用let声明的变量的作用域不会被提升
{
console.log(str1); //undefined
var str1 ="张三"
console.log(str2); // Uncaught ReferenceError: str2 is not defined
let str2 ="张三"
}
// 03-在相同作用域下不能申明相同的变量
{
var str1 ="张三";
var str1 ="李四";
console.log(str1);
let str2 ="张三";
let str2 ="李四";
console.log(str2);
//Uncaught SyntaxError: Identifier 'str2' has already been declared
}
// 04-for循环体现let的父子作用域
var btns = document.querySelectorAll('button');
for (var i =0; i
btns[i].onclick =function () {
alert('点击了第' + i +'个按钮')
}
}
var btns = document.querySelectorAll('button');
for (var i =0; i
(function (i) {
btns[i].onclick =function () {
alert('点击了第' + i +'个按钮')
}
})(i);
}
let btns = document.querySelectorAll('button');
for (let i =0; i
btns[i].onclick =function () {
alert('点击了第' + i +'个按钮')
}
}
//01-只在当前代码块中有效
{
const a ="张三";
console.log(a);
}
console.log(a);
// 02-作用域不会被提升
// 03-不能重复申明
// 04-申明的常量必须赋值
{
const name ="张三";
name ="李四";
//不能修改,报错:Assignment to constant variable.
console.log(name);
}
const obj = {name:"张三"};
console.log(obj);
obj.name ="李四"
console.log(obj);