let x =10;if(x ===10){let x =20;// 这里的 x 和外面的 x 不是同一个变量console.log(x);// 20}
console.log(x);// 10const y =5;// y = 10; // 会抛出错误,因为y是一个常量
2. 模板字符串
允许字符串内嵌表达式,可以用反引号 (``) 来定义。
let name ="world";
console.log(`Hello, ${name}!`);// "Hello, world!"
3.箭头函数
提供了一种更简洁的写法来声明匿名函数。
letadd=(a, b)=> a + b;
console.log(add(2,3));// 5
4.解构赋值
允许用类似数组或对象字面量的语法来分配值到变量中。
// 数组解构let[a, b]=[1,2];
console.log(a);// 1
console.log(b);// 2// 对象解构let{firstName, lastName}={firstName:"John",lastName:"Doe"};
console.log(firstName);// John
console.log(lastName);// Doe
5.Promise
提供了一种更好的异步编程解决方案,比传统的回调函数方式更易于理解和维护。
let promise =newPromise(function(resolve, reject){setTimeout(()=>resolve("done"),1000);});promise.then(result=> console.log(result),// "done"error=> console.log(error));
ES7 (ECMAScript 2016)
1.数组的 includes 方法
判断数组是否包含某个值。
let arr =[1,2,3];
console.log(arr.includes(2));// true
console.log(arr.includes(4));// false
2.指数运算符
简化了幂运算的书写。
console.log(2**3);// 8
ES8 (ECMAScript 2017)
1.async/await
使异步代码看起来更像同步代码。
asyncfunctionasyncCall(){console.log('calling');let result =awaitnewPromise((resolve)=>{setTimeout(()=>resolve("resolved"),1000)});console.log(result);}asyncCall();
asyncfunction*asyncGenerator(){let i =0;while(i <3){// 模拟异步操作awaitnewPromise(resolve=>setTimeout(resolve,100));yield i++;}}(async()=>{forawait(let num ofasyncGenerator()){console.log(num);}})();
let promises =[Promise.resolve(33),newPromise(resolve=>setTimeout(()=>resolve(66),0)),Promise.reject(newError('an error'))];Promise.allSettled(promises).then(results=> results.forEach((result)=> console.log(result.status)));
ES12 (ECMAScript 2021)
1.String.prototype.replaceAll()
允许替换字符串中出现的所有匹配项。
let quote ='To be or not to be';
console.log(quote.replaceAll('be','test'));// "To test or not to test"
2.逻辑赋值运算符
包含逻辑与 (&&=), 逻辑或 (||=) 和逻辑空值 (??=) 赋值运算符。
let x =0;let y =1;x &&=2;// x = x && 2
console.log(x);// 0y ||=2;// y = y || 2
console.log(y);// 1let z =null;
z ??=2;// z = z ?? 2
console.log(z);// 2
PyCharm 新建目录 [directory or folder] 1. 新建目录2. Enter new directory name -> OKReferences 1. 新建目录
right mouse click on the project -> New -> Directory 2. Enter new directory name -> OK
References
[1] Yongqiang Cheng, https:/…
go redis 快速入门
安装:
go get github.com/redis/go-redis/v9然后创建客户端:
package mainimport "github.com/redis/go-redis/v9"func main() {rdb : redis.NewClient(&redis.Options{Addr: "47.109.87.142:6379",Pa…
Spring Boot支持任务执行和调度,这可以通过Spring框架的TaskExecutor和TaskScheduler接口来实现。这些功能允许你异步执行任务和定时执行任务,这在处理批量作业、定时任务和异步服务时非常有用。 任务执行 Spring的TaskExecutor接口提供…
Eclipse - 查看工程或者文件的磁盘路径 1. Help -> Eclipse Marketplace -> Find: Explorer -> Eclipse Explorer 4.1.0 -> Install2. right-click -> Open in ExplorerReferences 1. Help -> Eclipse Marketplace -> Find: Explorer -> Eclipse Explo…