Node.js 与 JavaScript 语言特性详解

Node.js 的「关键字」层 = JavaScript 语言特性。本篇覆盖 Node 工程高频的语言机制(不含浏览器 API)。

1. let / const / var

描述

const 禁重赋值(对象内容仍可改);let 块级作用域;var 函数级+提升——新代码禁用 var。

语法和示例

const list = [1, 2];   // 引用不可换
list.push(3);          // 合法
let n = 1;             // 块级
{ let n = 2; }         // 内层独立
// var a = 1; ✗:提升与循环闭包都是坑

2. 箭头函数与 this

描述

箭头函数继承定义处 this;普通函数 this 由调用方式定。

语法和示例

const obj = {
  name: 'A',
  regular() { return this.name; },        // this=obj
  arrow: () => globalThis.name,           // 定义处(模块作用域)
  delayed() { setTimeout(() => this.name, 100); },  // 正确继承
};

3. 解构与默认值

描述

对象/数组解构、重命名、默认值、剩余收集。

语法和示例

const { a, b: renamed, c = 1, ...rest } = obj;
const [first, , third] = arr;
function f({ name, port = 3000 }) {}
const merged = { ...a, ...b };
const copy = [...list];

4. 可选链与空值合并

描述

?. 深取安全;?? 只对 null/undefined 兜底(0/” 不触发)。

语法和示例

user?.profile?.name ?? '匿名';
user?.comments?.[0]?.text;
fn?.();
const port = env.PORT ?? 3000;   // PORT=0 时保留 0(?: 会误兜底)

5. 模板字符串与标签

描述

反引号插值;多行;标签函数高级用法。

语法和示例

const msg = `Hello ${user.name}, you have ${n} items`;
const sql = `SELECT * FROM t WHERE id = ${id}`;
const multi = `
  line1
  line2`;
String.raw`C:\new\path`;          // 原始反斜杠

6. async / await

描述

async 函数返回 Promise;await 只能在其内;错误用 try/catch。

语法和示例

async function load() {
  try {
    const res = await fetch(url);
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return await res.json();
  } catch (e) { log(e); throw e; }
}
const v = await load();     // 顶层 await(ESM)

7. Promise 组合

描述

all 全成才成;allSettled 各自成败;race/any 取先。

语法和示例

const [a, b] = await Promise.all([f1(), f2()]);
const settled = await Promise.allSettled([risky(), safe()]);
settled.filter(s => s.status === 'fulfilled');
await Promise.race([task(), timeout(5000)]);

8. class 与继承

描述

class 是原型的语法糖;static 字段;私有 # 前缀。

语法和示例

class Api {
  #key;                                  // 真私有
  static VERSION = '1';                  // 静态字段
  constructor(key) { this.#key = key; }
  get auth() { return `Bearer ${this.#key}`; }   // getter
  async call() { return fetch(u, { headers: { auth: this.auth } }); }
}
class V2 extends Api {
  constructor(k) { super(k); }
}

9. 迭代器与生成器

描述

Symbol.iterator 协议;function* 惰性产出。

语法和示例

function* range(n) { for (let i = 0; i < n; i++) yield i; }
[...range(3)];                      // [0,1,2]
for (const x of range(5)) {}
async function* pages() { yield await p1(); }
for await (const pg of pages()) {}   // 异步生成器

10. 模块导入导出

描述

export 命名/默认;动态 import() 异步;node: 前缀强制内置。

语法和示例

export const A = 1;
export default class {}
import Def, { A as Alias } from './m.js';
const mod = await import('./heavy.js');   // 按需加载
import fs from 'node:fs/promises';        // 内置免歧义

11. 严格相等与比较

描述

=== 无隐式转换;NaN 自身不等——Number.isNaN 判断。

语法和示例

1 === '1';              // false
Object.is(NaN, NaN);     // true(=== 是 false)
Number.isNaN(x);
[2] == 2;                // true(== 会拆箱——禁用)

12. Symbol 与枚举模式

描述

Symbol 唯一键防冲突;enum 用 frozen 对象或 const。

语法和示例

const KEY = Symbol('k');
obj[KEY] = '私有键';
const Color = Object.freeze({ Red: 'red', Blue: 'blue' });
// TS 里用 enum / as const

13. Proxy / Reflect

描述

拦截对象操作——校验、日志、响应式框架的底层。

语法和示例

const handler = {
  get(t, k) { console.log('read', k); return Reflect.get(t, k); },
  set(t, k, v) {
    if (k === 'age' && v < 0) throw new RangeError();
    return Reflect.set(t, k, v);
  },
};
const safe = new Proxy(obj, handler);

14. 错误类型

描述

TypeError/RangeError/SyntaxError;自定义继承 Error 带 cause。

语法和示例

class HttpError extends Error {
  constructor(status, msg, options) {
    super(`HTTP ${status}: ${msg}`, options);   // cause 链(ES2022)
    this.status = status;
  }
}
throw new HttpError(404, 'not found', { cause: err });

15. 位运算与数值

描述

位运算转 32 位整数;BigInt 任意精度。

语法和示例

5 & 3;  5 | 3;  5 ^ 3;  ~5;   // 位
1 << 10;                       // 1024
0b1010; 0o17; 0xff;             // 二/八/十六进制
9007199254740993n;              // BigInt(超安全整数)
Number.isSafeInteger(n);
(0.1 + 0.2).toFixed(2);         // '0.30'
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇