let:
/*
console.log(a)//undefined 只声明未定义
var a = 1;
console.log(a)//1
*/
//1.let 定义的变量没有变量的提升(没有预解释)
//console.log(a)//a is not defined
let a = 1;
console.log(a)//1
//变量分为全局作用域,局部作用域
function fn(){
console.log(b)//b is not defined
let b = 0
}
// fn()
/*
var b=12;
var b=13;
function b(){
console.log(b)
}
console.log(b)//13
b()//报错b is not a function b不是一个函数
*/
//2.let 定义的变量不能重复定义(不管是函数还是变量用let都不能重复定义)
// let b = 12;
// let b = 13;
// console.log(b)//Identifier 'b' has already been declared
//3.虽然不进行预解释,但是代码执行前会将用let定义的变量先过滤一遍,一旦发现不合法
//就直接报错了 所以47行的代码也就不会执行了
/*
console.log(A)
let A=10
let A=20//Identifier 'A' has already been declared
*/
块级作用域:
//{},是一个私有作用域,也叫块级作用域
/*
function fn(){
let a = 0
console.log(a)
}
fn()
*/
//if(){}
//for(){}
let a=10;
if(a){
//console.log(a)//a is not defined
let a=1
console.log(a)
}
let oLis=document.getElementsByTagName('li')
// for (var i=0 ;i<oLis.length;i++){
// oLis[i].onclick=function(){
// console.log(i)//5
// //绑定事件是异步的 所以都是输出5
// }
// }
for(let i=0;i<oLis.length;i++){
oLis[i].onclick=function(){
console.log(i)
}
}
//自执行函数
{
let a=100;
console.log(a)
}
let obj={}
//注意eval将字符串转为对象的时候,一定要加一个()
const:
//const 定义的是静态变量,不能修改,而且必须要赋值
//报错 Missing initializer in const declaration
const g = 10
//g=20//Assignment to constant variable. 不能被修改
//不可以重复声明
//const g=20//Identifier 'g' has already been declared
let a=1
//不管是动态变量还是静态变量 都不可以重复定义
//const a=2//Identifier 'a' has already been declared
本文深入探讨了JavaScript中let和const关键字的使用方式、变量作用域和提升机制,详细解析了let定义的变量如何避免变量提升、不能重复定义,以及const作为静态变量的特点和局限性。同时,文章还介绍了块级作用域的概念,并通过实例展示了let与const在不同场景下的应用。
310

被折叠的 条评论
为什么被折叠?



