关于ES6的初步学习

本文深入探讨ECMAScript 6(ES6)带来的创新特性,包括let和const变量声明、块级作用域、变量解构、箭头函数、模板字符串、Promise异步处理等,解析这些特性如何革新JavaScript编程。

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

ECMAscript 是javascript 的一种规则 一种定义规范 其中
actionscript 还有 typescript 也是这种规则
ES6 关键字 let const
let 定义的变量是块级作用域变量 {....}大括号内部 声明范围
例子:for(var i =0;i<10;i++){
arr [i] = function(){
console.log(i)
}
}
此时因为i是全局变量 所以 每一个console 输出的都是10
如果 把var 换成let 此时let 直接作用于循环体中的部分
所以就完成隔离了

变量声明的提升在es6没有了
console.log(a)
let a =10;
这个会输出undifine

let会引发暂时性死区-当一个{}中出现let 此时let会把这个区域
锁死,如果在这个区域外看到这个定义的变量 则会报错
引用阮大神的一句话 : 在代码块内,使用let命令声明变量之前
该变量都是不可用的,在语法称为:暂时性死区 TDZ
temporal dead zone

const 表示定义一个常量 不允许被更改 和C++的一个定义词
挺像,但是可以去指向一个引用类型值。这个不允许被修改指
的是定义的这个常量指向了内存中固定的一个位置,不允许去
改变这个常量的指向位置,但是可以对其进行操作。一般
require 中接受的引用类型 都是const 接受 比较和谐

object.freeze() 冻结一个对象 不允许被修改 但是可以使用
但是只冻结第一层 比如二维数组 或者对象中再有数组

变量的解构
example: var [a,b,c] = [1,2,3];
这是关于数组的 对象当然也有 左侧可以列出K 右侧 K:V结构
就不需要用对象打点来调用了 可以直接通过K来调用

...运算符
var [a,b,c] = [1,2,3,4,5,6,7]
var [a,b,...c] = [1,2,3,4,5,6,7]
... 是rest运算符 俗称尾巴解构 可以直接把后面几项当做一个
数组一起输出

函数的参数也可以解构 apply用法差不多
apply基本上被这种方法取代 我认为 ......
甚至和arguement 的用法也可以代替 所以ES6真的很强大

对于对象 来说 还有一个K:V的一个解构模式
let obj = {"a :1,"b":2}
let { m : n} = obj;
console.log(n);
冒号右边的变量被赋值,左边的表示对象的属性
也就是说 let n = obj.m

字符串和数组也增加了很多方法
incudes() startsWith(),endsWith()
在原先的用法中 一般只有类似的 indexOf()判断前者是否
包含后者
repeat()表示重复多少次

模板字符串
‘哈${a}哈哈${b}哈哈哈’模板字符串
中间可以直接添加其他字符串,可以有效去减少“”+“”
这种形式
中间可以添加计算式 只能是轻微的运算不能有复杂的语法

isNAN()
Number.isNAN()

数组的增强
Array.form() 可以将类数组对象变成数组
Array.of()可以将一些零散值 变为数组,相当于解构的
逆运算

寻找数组是否有某项 里面是callback
arr.find(function(value,index,arr){
其中有3项参数 第一个是数值 第二个是下标 第三个是数组
!!返回第一个返回true的那一项
arr.findIndex() 则是返回那一项的下标 也是第一个返回true
的那一项
上面这两个方法 如果没有匹配 则会返回-1

增加了一种数组的遍历方法
for of 遍历
for(let v of arr.values())这样遍历值
for(let v of arr.keys()) 遍历主键 如果没有则是0123
for(let [k,v] of arr.entries())遍历整体
通常 arr.entries() 比较常用
includes()返回布尔值 判断数组中是否有某个项,不需要
遍历整个数组

对象的增强
可以在定义的时候 V在外侧定义 K在对象里定义 省略了一个:
KV一致时 可以省略
定义属性的时候 可以用【】包裹,然后可以直接打点调用
相当于【】包裹之后 这里面就可以完成一些基本的解析了
或者说是运算 表示变量key
判定两个值是否相等 Object.is(a,b)

对象枚举
for in
Object.keys()得到对象的所有键 这是一个Arr
然后在可以调用数组的遍历来继续操作
对象的拓展运算符... 很有用

关于异步函数得到promise对象
这是一个处理对象的一个构造函数,传统编程写异步函数的
函数的时候,经常要有回调函数套用回调函数这样的写法
promise 返回的东西都会返回一个标准接口
这个对象都三种状态 pending resolved rejected
也就是将回调函数换了一种方式写出来了
就是一个异步函数可以返回一个promise对象
然后.then(function)然后在继续执行
例子:
var fs = require("fs")
function read(){
return new Promise(function(reslve,reject){
fs.readFile("",function(err,data){
resolve(data.tostring());
)}
read().then(function(data){
....
就是基本的模式就是先定义一个函数 然后在其中new一个
promise对象,这个对象的参数是一个函数,其中放置了2个
参数,一个resolve 一个reject 就是完成和失败的意思
接着下面放入异步语句
在函数外部就可以调用这个函数直接打.then 写回调函数
就是相当于在一个函数的参数内加一个callback 然后异步语句
执行完之后在执行这个callback 就是换了一种写法更加一目了然
注意 这个then执行完毕之后还会 返回一个promise对象

原生JS中有这样一个语法
try{}
catch{}捕获错误 就是在try运行的代码有错误 则catch会捕获异常
捕获异常 可以抑制 不会输出错误不会终止程序执行
但是这个语句不能捕获异步的异常
es6中promise对象的实例提供了一个catch(函数)方法
捕获异常

promise.all().then

Promise.resolve()这个函数可以把对象转为Promise对象
这里面放置的函数必须是异步函数

finally 就是try catch finally 不论有错没有错 都回到finally里

转载于:https://www.cnblogs.com/ljy0414/p/11132677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值