1.1.0 let命令

本文详细解读了JavaScript let命令的特点,包括块级作用域、变量提升、重复声明禁止及do表达式的应用。通过实例探讨了let在for循环、函数作用域和块级作用域中的行为,并对比了与var的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1.0 let命令

1,let只在所在的代码块内有效

例子:

{

let a=10

var b=1

}

console.log(a) ==报错

console.log(b) ==1

  • for 循环循环中就很适合使用let命令

2,let不存在变量提升的问题

var 声明变量,在声明之前使用会输出undefined,但是let变不会出现

例子:

console.log(f1) ==不报错,输出undefined

var f1=2

console.log(f2) ===报错

let f2=2

3,只要在块级作用域内存在了let命令,他就不在受到外部的影响

var temp=123

if(true)

{

temp='abc' ----->此处会报错

let temp

}

也就是说使用了let定义,同一代码块中就一定不能在let之前使用

4,不允许重复声明

例子:

function()

{

let a=1

var a=2 ---->此处会报错

}

function()

{

let a=1

let a=2 ---->此处会报错

}

5,let 为JavaScript新增加了一个块级作用域

ES5 只有全局作用域和函数作用域,没有块级作用域,导致很多场景存在问题

例子:

var temp=new Date()

function f(){

comsole.log(tmp)

if(flase){

var tmp='hello'

}

}

f() ----> undefined

我们的打算是输出一个日期(Date()),但是实际确实一个undefined,原因是内部使用了tmp 变量var,导致变量提升(上面第2点)所以输出了一个undefined

例子:

var s ='hello'

for(var i=0;i<s.length;i++)

{

console.log(s[i])

}

comsole.log(i) //5

按道理 后面一个log应该打不出来i 才对,但是却依旧能够输出,这就是var 存在变量泄露的问题

ES6 的块级别作用域

例子:

function f1()

{

let n=5

if(true)

{

let n=6

}

console.log(n) // 5

}

我们预想,要么报错(上面第4点),要么打印6,但是却打印了5,原因是 这里就是两个块级作用域,f1(){}和 if {},所以他打印出来的是5

6,do 表达式

本质上,块级作用域是一个语句,讲多个代码块封装在一起,没有返回值

例子:

{

let t=fn()

t=t*t+1

}

我们如何取到这个块的返回值呢?

可以用do 表达式

let x=do{

let t=fn()

t=t*t+1

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值