Skip to content

基本语法

更新: 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()方法。

本站访客数 人次      本站总访问量