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

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

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

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

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

你可能知道數(shù)組有 length 屬性,但函數(shù)也有!函數(shù)的 length 屬性返回函數(shù)期望的參數(shù)個數(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,從第一個帶默認(rèn)值的參數(shù)開始后面的都不算

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

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

2. void 運算符不只是不返回值

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

// 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)">點擊</a>

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

ES2019 之后,F(xiàn)unction.prototype.toString() 會保留函數(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. 逗號運算符的隱藏用途

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

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

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

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

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

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

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

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

// 動態(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)建常量對象

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

8. Label 語句的妙用

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

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

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

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

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

11. BigInt 的特殊行為

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

12. Intl API 的強大功能

Intl API 不僅可以用于格式化日期和數(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

前端前端知識

2021-01-15 09:00:00

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

2010-08-05 11:14:12

Flex優(yōu)勢

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)

2011-11-14 10:06:16

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

2017-03-28 08:40:14

2020-08-14 10:56:17

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

2021-03-11 09:54:34

零日漏洞漏洞黑客
點贊
收藏

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

主站蜘蛛池模板: 久久国产激情视频 | av激情影院 | 五月综合激情婷婷 | 国产一级淫片a直接免费看 免费a网站 | 亚洲伊人久久综合 | 欧美日韩高清在线观看 | 曰韩一二三区 | 一区二区中文 | 久久精品视频亚洲 | 日本aa毛片a级毛片免费观看 | 激情欧美日韩一区二区 | 999免费视频| 在线观看av网站 | 精品国产精品国产偷麻豆 | 欧美 日韩 中文 | 精品久久香蕉国产线看观看亚洲 | a级在线免费视频 | 欧美日韩国产高清视频 | 欧美日韩精品中文字幕 | 五月综合激情婷婷 | 亚洲成人在线视频播放 | 一区二区av | 国产日韩一区二区三免费高清 | 亚洲精品中文在线 | 99在线免费观看视频 | 亚洲一区 | 日韩淫片免费看 | 亚洲精品中文在线 | 午夜成人在线视频 | 青青草一区二区三区 | 婷婷久久五月天 | 中文字幕不卡在线观看 | 成年人视频在线免费观看 | 日日骚网| www.久| 婷婷激情综合 | 成人在线看片 | www亚洲一区| 色综合久久天天综合网 | 免费一区二区 | 奇米久久久 |