前端ES6的知识点

1.什么是ES6

ES6,全称为ECMAScript 6.0,是JavaScript语言的下一代标准,于2015年6月正式发布。其目标是使JavaScript语言能够用于编写复杂的大型应用程序,并成为企业级开发语言。ES6是ECMAScript的第六个版本,是JavaScript的规范,提供语言的语法和基本对象。

ES6引入了许多新的语法特性,如let和const关键字用于声明变量和常量、箭头函数提供更简洁的函数语法、模块导入导出实现模块化开发等。这些新特性使得开发者能够更高效地编写代码,减少错误,并提高代码的可读性和可维护性。

需要注意的是,虽然ES6是JavaScript的下一代标准,但它并不是一种框架,而是一种语言的标准。因此,开发者在使用ES6时,无需额外引入任何框架或库,只需在支持ES6的环境中编写代码即可。

同时,为了兼容旧版本的浏览器或环境,开发者可以使用Babel等转码器将ES6代码转换为ES5代码,以便在旧环境中运行。此外,大多数现代浏览器已经支持ES6的大部分特性,因此开发者可以直接在浏览器中使用ES6编写代码。

2.辨析var、let、const关键字

  • var 关键字的缺点
  • let
  • const

在javascript中的声明方式只有var

但是在var声明中会遇到一些问题

1.变量提升问题

function getNumber(isNumber){
if(isNumber){
var num = 7;
}else{
var notNum = "not number!";
consele.log(num);

这段代码运行后会出现num未定义,由于javascript的提升机制

实际它在作用域的运行效果是:

function getNumber(isNumber) {
  var num;
  var notNum;
  if (isNumber) {
    num = "7";
  } else {
    notNum = "not number!";
    console.log(num);
  }
}
getNumber(false);

在这个运行机制下变量进行了声明但是未赋初值,所以在引用的时候会报错。

2.变量重复声明问题

var 关键字声明的变量可以重复赋值但是也会遇到问题例如for里面嵌套两个变量i 嵌套会出现问题

在编程中,当你使用嵌套的for循环(即一个for循环内嵌套另一个for循环)并且在这两个循环中都使用了相同的变量名(如i)时,如果这两个循环没有正确地隔离或初始化这个变量,那么内层循环的迭代会覆盖外层循环中该变量的值。这意味着在内层循环执行时,外层循环的变量i的值会被改变,这通常不是你想要的结果,因为它会干扰外层循环的正常执行。

3.非块作用域问题

用var作用域有两种,全局作用域和函数作用域。两者均不是块作用域所以也遵循提升机制。

function data(a){
    for(var i;i<6;i++){}
    document.write(i);
}
data();

在这里由于提升机制,这个i在for里面,使用后并未销毁在外部仍然可以访问。

1.为了解决提升机制这个问题ES6提供了let,它是块级的。

使用let来声明,在{ }号中,let的声明会进入暂时的死区,未声明是不可以使用的。

let 声明变量可以重新赋值,但是在在同一区域不可以重新声明。

2.解决非块级作用域问题

var关键字是非块级,但是let关键字声明的为非块级。

function fuc(){
    for(let i;i<5;i++){}
    document.write(i);
}
fuc();

这个时候我们再次与运行就不会报错了,i也会正常的销毁。

3.介绍const的用法

const用来声明一个固定常量,一旦声明就不更改它的值。

但是,使用 const 关键字定义的引用类型还是可以通过数组下标去修改值。

因为值引用和地址引用不同。数组里面引用的是地址。

可以理解为一个小房子,但是里面住的人是可以换的。

let arr = ["I like JavaScript",
        "I just finished HTML",
        "You can try anything",]
for(let i = 0;i<arr.length;i++){
    console.log(arr[i].slice(2,8));
}
  • var 语句的作用域是函数作用域或者全局作用域;它没有块作用域,故不存在暂时死区;它可分配,也可重复性声明。
  • let 语句属于块作用域,受到暂时死区的约束;它可分配,但不可重新声明。
  • const 语句也属于块作用域,同样受到暂时死区的约束;它既不可重新分配,也不可重新声明。
  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值