成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

刷新你的認(rèn)知!12 個(gè)不為人知的 JavaScript 冷知識(shí)

開發(fā) 前端
盡管我們對(duì) JavaScript 已經(jīng)相當(dāng)熟悉了,但這門語言中仍存在許多有趣的特性和行為,今天分享 12 個(gè)鮮為人知的 JavaScript 冷知識(shí)。

盡管我們對(duì) JavaScript 已經(jīng)相當(dāng)熟悉了,但這門語言中仍存在許多有趣的特性和行為,今天分享 12 個(gè)鮮為人知的 JavaScript 冷知識(shí)。

1. 函數(shù)的長度屬性

你可能知道數(shù)組有 length 屬性,但函數(shù)也有!函數(shù)的 length 屬性返回函數(shù)期望的參數(shù)個(gè)數(shù)(形參數(shù)量)。

function foo(a, b, c = 3) { return a + b + c; }
console.log(foo.length); // 2,不包括帶默認(rèn)值的參數(shù)!

function bar(a, b = 2, c) { return a + b + c; }
console.log(bar.length); // 1,從第一個(gè)帶默認(rèn)值的參數(shù)開始后面的都不算

(() => {}).length; // 0
((...args) => {}).length; // 0

這個(gè)特性在編寫高階函數(shù)或函數(shù)式編程時(shí)特別有用,可以用來進(jìn)行函數(shù)的參數(shù)匹配。

2. void 運(yùn)算符不只是不返回值

void 運(yùn)算符不僅可以用來確保表達(dá)式不返回值,還可以用來解決一些特殊問題:

// 1. 防止箭頭函數(shù)返回值
const onClick = () => void doSomething();

// 2. 創(chuàng)建純凈的 undefined
let undefined = 'hello';
console.log(void 0); // undefined

// 3. 立即執(zhí)行 Promise
void Promise.resolve().then(() => {
  console.log('異步執(zhí)行');
});

// 4. 阻止默認(rèn)的 href 跳轉(zhuǎn)
<a href="javascript:void(0)">點(diǎn)擊</a>

3. Function.prototype.toString() 的變化

ES2019 之后,F(xiàn)unction.prototype.toString() 會(huì)保留函數(shù)的原始格式,包括注釋和空格:

function /* 這是注釋 */ foo() {
  console.log("Hello");  // 這也是注釋
}

console.log(foo.toString());
// function /* 這是注釋 */ foo() {
//   console.log("Hello");  // 這也是注釋
// }

// 甚至適用于內(nèi)置函數(shù)
console.log(Array.prototype.push.toString());
// "function push() { [native code] }"

4. 逗號(hào)運(yùn)算符的隱藏用途

逗號(hào)運(yùn)算符可以在一些意想不到的地方使用,比如箭頭函數(shù)或三元運(yùn)算符中:

// 在箭頭函數(shù)中執(zhí)行多條語句
const increment = x => (console.log(x), x + 1);

// 在三元運(yùn)算符中執(zhí)行多個(gè)操作
const result = condition 
  ? (func1(), func2(), value1)
  : (func3(), func4(), value2);

// 在數(shù)組方法中巧妙運(yùn)用
const arr = [1, 2, 3];
arr.map(x => (x *= 2, x -= 1)); // [1, 3, 5]

5. 可選鏈操作符的隱藏技巧

可選鏈操作符不僅可以用于對(duì)象屬性,還可以用于函數(shù)調(diào)用和數(shù)組:

// 函數(shù)調(diào)用
const result = someFunction?.();

// 數(shù)組訪問
const arr = null;
console.log(arr?.[0]); // undefined

// 動(dòng)態(tài)屬性名
const propName = null;
console.log(obj?.[propName?.toString()]); // undefined

// 與空值合并操作符組合
const value = obj?.prop ?? 'default';

6. Symbol.asyncIterator 的妙用

你可以使用 Symbol.asyncIterator 創(chuàng)建自定義的異步迭代器:

7. 利用 Object.defineProperty 創(chuàng)建常量對(duì)象

你可以創(chuàng)建真正的常量對(duì)象,其屬性完全不可修改:

8. Label 語句的妙用

JavaScript 中的 label 語句雖然不常見,但在特定場(chǎng)景下非常有用,特別是在嵌套循環(huán)中:

9. 使用 Proxy 實(shí)現(xiàn)私有屬性

在類私有字段還未普及之前,可以使用 Proxy 來模擬私有屬性:

10. 利用 Generator 實(shí)現(xiàn)范圍數(shù)據(jù)類型

JavaScript 沒有原生的范圍類型,但我們可以用 Generator 實(shí)現(xiàn):

11. BigInt 的特殊行為

BigInt 有一些出人意料的行為:

12. Intl API 的強(qiáng)大功能

Intl API 不僅可以用于格式化日期和數(shù)字,還有很多強(qiáng)大的功能:

// 相對(duì)時(shí)間格式化
const rtf = new Intl.RelativeTimeFormat('zh', { numeric: 'auto' });
console.log(rtf.format(-1, 'day')); // "昨天"
console.log(rtf.format(7, 'day')); // "7天后"

// 復(fù)數(shù)規(guī)則
const pr = new Intl.PluralRules('en-US');
console.log(pr.select(0)); // "other"
console.log(pr.select(1)); // "one"
console.log(pr.select(2)); // "other"

// 分段器
const segmenter = new Intl.Segmenter('zh', { granularity: 'word' });
const segments = segmenter.segment('你好,世界!');
console.log([...segments].map(s => s.segment)); // ["你好", ",", "世界", "!"]
責(zé)任編輯:趙寧寧 來源: JavaScript
相關(guān)推薦

2014-04-11 14:22:25

前端前端知識(shí)

2021-01-15 09:00:00

人工智能IT數(shù)據(jù)

2010-08-05 11:14:12

Flex優(yōu)勢(shì)

2020-02-20 12:02:32

Python數(shù)據(jù)函數(shù)

2010-09-03 08:52:38

CSS

2010-09-06 14:19:54

CSS

2011-10-19 16:19:27

iOS 5蘋果

2024-05-17 13:08:46

Python代碼

2013-08-09 09:27:08

vCentervSphere

2010-04-19 16:09:22

Oracle控制文件

2011-11-08 13:41:27

蘋果siri人工智能數(shù)據(jù)中心

2011-11-15 10:25:56

IBMWindows

2014-08-18 10:44:31

斯諾登

2021-11-03 16:48:55

Flex前端特性

2012-11-30 14:13:01

2021-02-05 09:58:52

程序員Windows系統(tǒng)

2017-03-28 08:40:14

2011-11-14 10:06:16

IBM大型機(jī)支持Windows系統(tǒng)POWER7

2020-08-14 10:56:17

云安全云計(jì)算網(wǎng)絡(luò)安全

2021-03-11 09:54:34

零日漏洞漏洞黑客
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 韩日在线视频 | 久草在线影 | 操久久久 | 日韩综合在线 | 五月天婷婷久久 | 日韩中文字幕在线观看视频 | 久久久久亚洲 | 99久久精品一区二区毛片吞精 | 久久国产精品一区二区三区 | 久久99精品久久久久久 | 美女视频. | 精品国产乱码久久久久久影片 | 久久国产成人 | 国产免费av在线 | 日韩欧美一二三区 | 一区二区三区国产 | 国产色婷婷精品综合在线手机播放 | 黄色在线观看 | 久久精品视频一区二区三区 | 久久精品国产亚洲 | 91av大全| 亚洲少妇综合网 | 日韩精品免费播放 | 日本精品一区二区三区在线观看视频 | 九九成人 | 国产亚洲欧美另类一区二区三区 | 亚洲精品成人 | 看一级黄色毛片 | 久久精品国产99国产精品 | 亚洲成人精品在线观看 | 久久国产欧美一区二区三区精品 | 二区三区视频 | 亚洲喷水 | 欧美成人自拍视频 | 亚洲激精日韩激精欧美精品 | 99爱国产 | 一区二区免费视频 | 国产一区免费视频 | 国产精品自拍视频 | 91久久夜色| 在线免费观看毛片 |