七天前,Javascript的最新版本ECMAScript2021正式發(fā)布,為Javascript帶來(lái)了不少更新和新特性。
在新特性方面,比較引人注目的是Promise.any(),它可以接收一個(gè)Promise數(shù)組,并在其中的任何一個(gè)Promise對(duì)象狀態(tài)從等待變?yōu)槌晒r(shí),立即返回該對(duì)象的值,而忽略其他尚未解決的Promise。以下是一個(gè)示例:
const promises = [
Promise.reject(new Error("Error 1")),
Promise.resolve("Success 1"),
Promise.reject(new Error("Error 2")),
Promise.resolve("Success 2"),
Promise.reject(new Error("Error 3")),
Promise.resolve("Success 3")
];
Promise.any(promises).then(result =>console.log(result));
//輸出 "Success 1"
除此之外,Javascript也進(jìn)行了一些細(xì)節(jié)上的改進(jìn),比如在字符串模板中增加了一個(gè)新的方法trimStart()和trimEnd(),可以分別去除字符串開(kāi)頭和結(jié)尾的空格:
const str = " Hello World ";
console.log(str.trimStart() + "Javascript");
//輸出 "Hello World Javascript"
console.log("Javascript" + str.trimEnd());
//輸出 "Javascript Hello World"
另外,在Math對(duì)象中,Javascript新增了3個(gè)方法:
- Math.scale(x,y) :返回x和y中數(shù)值較小的那個(gè)
- Math.clamp(x,a,b) :限制x在a和b之間,如果x小于a,則返回a,如果x大于b,則返回b,否則返回x
- Math.degrees(x) :將弧度值x轉(zhuǎn)換為角度值
例如,我們可以使用Math.clamp()函數(shù)將數(shù)字限制在1和10之間:
console.log(Math.clamp(5,1,10)); //輸出5
console.log(Math.clamp(0,1,10)); //輸出1
console.log(Math.clamp(11,1,10));//輸出10
總的來(lái)說(shuō),ECMAScript2021為Javascript帶來(lái)了更多的有用特性和改進(jìn),將有助于開(kāi)發(fā)者提高開(kāi)發(fā)效率和代碼質(zhì)量。