JavaScript -- ES6

【点赞收藏加关注,前端技术不迷路~】

一、ES6都有哪些东西

1.模板字符串:${}

${}规则和今后各种框架中的绑定语法规则完全一样

        可以放:一切有返回值的js的东西 (变量、算术计算、三目运算、对象属性、创建对象、调用函数、访问数组元素 —— 有返回值的合法的js表达式)

        不能放:没有返回值的js表达式、分支/判断/循环等程序结构 —— 比如:if else for while……等

        例子:${name}、${sex==1?'男':'女'}、${price.toFixed(2)}、${count}、${price*count}、${arr[num1]}、${new Date().toLocaleString()}……

2.let
1)var的问题:

        1.声明提前:hoist,提升的不止是变量,还有函数 —— 打乱程序正常的执行顺序

        2.没有块级作用域:for循环,if else 分支等不是作用域,拦不住声明提前 —— 代码块内的变量会超出代码块范围,影响外部的变量。比如:if(false)会导致原本并不执行的代码,影响当前作用域。虽然if(false){}内的代码不执行,但是var t=new Date()仍会拆分出声明语句var t;,然后提前到当前函数的顶部,那么fun1中原本想加到全局变量t上的0.8,就因为if(false)内不执行代码的声明提前,导致加到了局部变量t中。

2)什么是块级作用域?js中是没有的

除了对象{}和function的{}之外,其余if else、for等分支和循环结构的{}范围,在其他语言中称为块级作用域。其他语言中,程序块{}内的变量,出了所在的程序块{},就不能使用。

而在js中,for()内声明的i,在{}外依然可以使用,不会报错。

3)用let替换掉var

let特点

        1.声明不提前 —— 保证程序顺序执行

        2.块级作用域 —— 让程序块,也变成了”块级作用域“,保证块内的变量,不会影响块外的变量

let根本:底层会被翻译成匿名函数自调

let t=new Date();

console.log(t);

自动添加匿名函数自调:

(function(){

    var t=new Date(); //这里的t当然是局部变量,而不会影响外部了

    console.log(t);

})();
4)let特别注意:

        1.因为不会声明提前,所以不能在声明变量之前,提前使用该变量

                底层相当于匿名函数自调,包裹不了之上的代码,相当于外部变量没声明

        2.在相同作用域内,禁止声明两个同名的变量

        3.因为let底层相当于匿名函数自调,所以,即使在全局创建的let变量,在window中也找不到

3.箭头函数:()=>{}
1)箭头函数中的this,指向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值