块级作用域 模板字符串 解构结合

目录

块级作用域

let和const

临时死区(TDZ)

模板字符串

解构结合

箭头函数


块级作用域

块级作用域:块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用。通过var声明的变量存在变量提升的特性。 

let和const

  1. 块级声明用于声明在指定块的作用域之外无法访问的变量,let和const都是块级声明的一种;
  2. 不会被提升,重复声明报错,不绑定全局作用域。

临时死区(TDZ)

  1. let和const声明的变量不会被提升到作用域顶部,如果在声明之前访问这些变量,会导致报错;
  2. 因为JavaScript引擎在扫码代码发现变量声明时,要么将它们提升到作用域顶部,要么将声明放在TDZ中;
  3. 访问TDZ中的变量会触发运行时错误,只有执行过变量声明语句后,变量才会从TDZ中移出,方可访问。

模板字符串

要在字符串中使用反撇号,可以使用反斜杠转义,在模板字符串中,空格,缩进,换行都会被保留。
嵌入变量:模板字符串支持嵌入变量,只需要将变量名写在${}之中,任意的JavaScript表达式都是可以的 。

解构结合

变量的解构赋值:从对象或数组中提取数据,并赋值给变量(多个)。

let obj = {
            username: 'dance',
            age: 18,
            sex: 'man'
        }
//对象解构赋值,就是从指定对象中提取存在的属性,如果属性不存在就是undefined,只提取需要的属性。
let {username,age} = obj
console.log(username,age)
//数组解构赋值,就是从数组中提取指定下标的值,同样的不存在就是undefined,也是只提取需要的下标的值即可。
let arr = [1,'dfsd',2,4,5]
let {one,three} = arr
//形参解构函数
function descFoo({username,age}){
    console.log(username + ‘:’+age)
}
descFoo(obj)
//直接返回一个对象
let func = ({value, num}) => ({total: value * num})

// 使用
var result = func({
    value: 10,
    num: 10
})

console.log(result); // {total: 100}

箭头函数

  1. 箭头函数没有this,需要通过查找作用域链来确定this的值;
  2. 没有arguments,因为箭头函数可以访问外围函数的arguments对象;
  3. 不能通过new关键字调用,JavaScript函数有两个内部方法,【call】和【Construct】当通过new调用函数时,执行【Construct】方法,创建一个实例对象,然后再执行函数体,将this绑定到实例上,当直接调用的时候,执行【call】方法,直接执行函数体。箭头函数并没有【Construct】方法,不能被用作构造函数,如果通过new的方式调用,会报错;
  4. 没有new.target,没有原型,于是箭头函数也不存在prototype这个属性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值