ES6_常用语法
let和const命令
console.log(a) // 变量提升 undefined
var a = 1;
console.log(b) // 报错, not defined
let b = 1;
// 块级作用域
{
var a1 = 1
let b1 = 2
}
console.log(a1) // 打印1 var 变量没有块级作用域,具有函数作用域
console.log(b1) // 报错,let具有块级作用域
// const 和 let的区别
// const 一般用于定义常量,不可更改(不更改内存地址)
let a2 = 1
const b2 = 2
a2 = 2
b2 = 3 // 报错, 不可更改
const b3 = {a: 1}
b3 = {a: 2} // 报错
b3.a = 'abc' // 不更改内存地址,不会报错
模板语言
模板语言使用一对``来表示
let a = `
console.log(a)
console.log(a)
console.log(a)
`
console.log(a) // 原样输出
**模板语言使用变量**
let b = 10
let str = `hello world ${b}`
console.log(str) // hello world 10
函数默认参数,默认值
function add (flag) { return flag?true:false }
// 参数默认值
function incr(flag=true) { return flag?true:false }
console.log(add()) // 返回false
console.log(incr()) // 返回true
// 普通函数
let arr = [1,2,3]
arr.map(function(item){
return item + 2;
})
// 箭头函数
arr.map(item => item + 2);
// 1. 当参数只有一个的时候可以省略括号,
// (item, index) => item + 2 或者 () => item + 2
// 2. 当函数体只有一条语句时,表示该语句执行并return,超出2条语句必须添加{}
// item => {let b = 2; return item + b}
// 箭头函数和普通函数的区别
// 箭头函数没有this指向,普通函数this指向则是谁调用就指向谁
解构赋值
// 数组解构
let [a,b,c] = [1,2,3] // 打印a=1, b=2, c=3
// 字符串解构
let [a,b,c] = "vue" // 打印a=v, b=u, c=e
// 对象结构
let {n,m} = {n:1, m:2} // 打印n=1, m=2
// 对象结构根据key值来赋值
let {n,m} = {m:2, n:1} // 打印n=1, m=2
// {n,m}是{n:n, m:m}的简写
// 函数解构
function person ({ name }) {
console.log(name)
}
let obj = {
name: 'jack',
age: 18
}
let obj2 = {
age: 25,
}
person (obj) // 打印 jack, name = obj.name
person (obj2) // undefined, name = obj2.name
reset参数
当参数不确定几个时候用...表示
// rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
function sum (...m) {
let total = 0
for (let i of m) {
total += i
}
console.log(total)
}
sum (1,2,3,4) // => 10
sum (1,2) // => 3
// ...扩展运算符
// 数组扩展
let [a, ...b] = [1,2,3,4] // a = 1, b = [2,3,4]
console.log(...[1,2,3,4]) // => 1 2 3 4
// 合并数组
let arr1 = [1,2], arr2 = [3,4]
newArr = [...arr1, ...arr2] // => [1,2,3,4]
// 字符串扩展
let [x, ...y] = "vue" // x = 'v', y = ['u', 'e']
let str = "vue"
console.log(...str) // v u e
// 对象扩展
let obj = {name: 'jack'}
let obj2 = {age: 18}
let obj3 = {...obj, ...obj2}
console.log(obj3) // {name: 'jack', age: 18}
promise
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
Promise 简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果
Promise 特点
- 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
- 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected
const promise = new Promise(function(resolve, reject) {
axios.get(url) // axios基于promise封装
.then (res => {
resolve(res.data) // resolve表示 已完成,这里调用相当于调用.then方法
})
.catch(err => {
reject(err) // reject表示失败,相当于调用.catch方法
})
});
promise.then (res => {
console.log(res) // 这里res就是resolve传递的参数
return '11'
// 如果有返回值,不管是什么类型数据,都会封装成promise对象,所以才能使用链式语法调用.then方法
})
.then(res => {
console.log(res) // 打印 '11'
return new Promise((resolve, reject) => resolve('promise1'))
})
.catch(err => {
console.log(err) // 抛出异常就是reject传递的参数
// 注意: catch 只会捕获之前所有.then方法抛出的错误,如果后面还有.then方法则不会捕获,一般把catch方法写在最后面
})
.then(res => {
console.log(res) // promise1
throw '手动抛出异常' // 上面的catch方法并不会捕获这次的错误,需要后面链式语法调用.catch
})
// Promise.all()方法
const promise1 = new Promise((resolve, reject) => resolve('promise1'))
const promise2 = new Promise((resolve, reject) => resolve('promise2'))
// 解构赋值方式传参
Promise.all([promise1, promise2]).then(([res1, res2])=> {
console.log(res1) // promise1
console.log(res2) // promise2
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!