基本语法
更新: 7/30/2025 字数: 0 字 时长: 0 分钟
let与const
在ES中let取代了var,让原本魔幻的var语法彻底退役,let创建的变量是基于块级区域进行的,也就是每个块的let变量都是在他的块里独立生效的,如果出现同名的,优先使用块中的。
所以会有这样的语法
js
let i=1
for (let i=0;i<10;i++){
console.log(i)
}
console.log(i)
结果
text
0
1
2
3
4
5
6
7
8
9
1
解构语法
一种更加方便的获取数组和类元素的方法
字符串拓展
ES6中正式支持模板字符串,现在字符串可以使用反引号的形式直接书写多行
js
let str=`
Hello
World
`
同时模板字符串还支持了${}语法,功能与Kotlin中一致
函数的扩展
函数允许添加默认值
js
function log(x,y=1){
console.log(x+y) //这里y
}
一种比较酷炫的写法是函数的默认值与解构结合在一起
js
function foo({x, y = 5}) {
console.log(x, y);
}
foo({}) // undefined 5
foo({x: 1}) // 1 5
foo({x: 1, y: 2}) // 1 2
foo() //
...运算符
...算是一个比较有特色的语法点了,它的作用就是优化结构
js
console.log([...1,2,3]) //1 2 3 相当于1,2,3
let {...a}={b:"C",d:"E"}
console.log(a) //a={b:"C",d:"E"} 这里是将剩余的所有属性,分配到指定的对象上面
Promise
Promise是ES对异步编程的答案,ES决定使用Promise来解决原本不太好用的回调函数
Promise是一个对象,其接受一个函数作为入参,函数的入参resolve和reject有js引擎提供,不用我们负责。
js
const promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
其中这两个函数用来向外表达Promise对象状态的变化,resolve函数表达Promise执行成功,rejecte表达Promise执行失败,他们都需要一个入参,表示返回的值
Promise有一个then方法,就是用来实现传统意义上的回调,他要两个函数作为入参,其中一个是resolved的处理方案一个是reject的处理方案
js
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms, 'done');
});
}
timeout(100).then((value) => {
console.log(value);
});
我们还可以使用catch方法,进而分开写正常和错误两种情况的回调
js
someAsyncThing()
.catch(function(error) {
console.log('oh no', error);
})
.then(function() {
console.log('carry on');
});
上面代码运行完catch()
方法指定的回调函数,会接着运行后面那个then()
方法指定的回调函数。如果没有报错,则会跳过catch()
方法。