Baseline Widely available
è§£æè¯æ³æ¯ä¸ç§ Javascript è¯æ³ãå¯ä»¥å°æ°ç»ä¸çå¼æå¯¹è±¡ç屿§ååºï¼èµå¼ç»å ¶ä»åéãå®å¯ä»¥å¨æ¥æ¶æ°æ®çä½ç½®ä½¿ç¨ï¼ä¾å¦èµå¼ç左侧æåå»ºæ°æ è¯ç¬¦ç»å®çä»»ä½ä½ç½®ï¼ã
å°è¯ä¸ä¸let a, b, rest;
[a, b] = [10, 20];
console.log(a);
// ææè¾åºï¼10
console.log(b);
// ææè¾åºï¼20
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(rest);
// ææè¾åºï¼Array [30, 40, 50]
è¯æ³
const [a, b] = array;
const [a, , b] = array;
const [a = aDefault, b] = array;
const [a, b, ...rest] = array;
const [a, , b, ...rest] = array;
const [a, b, ...{ pop, push }] = array;
const [a, b, ...[c, d]] = array;
const { a, b } = obj;
const { a: a1, b: b1 } = obj;
const { a: a1 = aDefault, b = bDefault } = obj;
const { a, b, ...rest } = obj;
const { a: a1, b: b1, ...rest } = obj;
const { [key]: a } = obj;
let a, b, a1, b1, c, d, rest, pop, push;
[a, b] = array;
[a, , b] = array;
[a = aDefault, b] = array;
[a, b, ...rest] = array;
[a, , b, ...rest] = array;
[a, b, ...{ pop, push }] = array;
[a, b, ...[c, d]] = array;
({ a, b } = obj); // brackets are required
({ a: a1, b: b1 } = obj);
({ a: a1 = aDefault, b = bDefault } = obj);
({ a, b, ...rest } = obj);
({ a: a1, b: b1, ...rest } = obj);
æè¿°
å¯¹è±¡åæ°ç»åé¢éè¡¨è¾¾å¼æä¾äºä¸ç§ç®åçæ¹æ³æ¥å建临æ¶çæ°æ®å ã
è§£æä½¿ç¨ç±»ä¼¼çè¯æ³ï¼ä½å¨èµå¼ç左侧å®ä¹äºè¦ä»ååéä¸ååºåªäºå¼ã
const arr = [1, 2, 3];
const [a, b, c] = arr;
// a = 1, b = 2, c = 3
åæ ·ï¼ä½ å¯ä»¥å¨èµå¼è¯å¥ç左侧解æå¯¹è±¡ã
const obj = { a, b, c };
const { a, b, c } = obj;
// çåäºï¼
// const a = obj.a, b = obj.b, c = obj.c;
const obj = { prop1: x, prop2: y, prop3: z };
const { prop1: x, prop2: y, prop3: z } = obj;
// çåäºï¼
// const x = obj.prop1, y = obj.prop2, z = obj.prop3;
è¿ç§åè½ç±»ä¼¼äº Perl å Python çè¯è¨ä¸åå¨çç¹æ§ã
æå ³æ°ç»æå¯¹è±¡è§£æçç¹å®åè½ï¼è¯·åé ä¸é¢çå个示ä¾ã
ç»å®ä¸èµå¼å¯¹äºå¯¹è±¡åæ°ç»çè§£æï¼æä¸¤ç§è§£ææ¨¡å¼ï¼ç»å®æ¨¡å¼åèµå¼æ¨¡å¼ï¼å®ä»¬çè¯æ³ç¥æä¸åã
å¨ç»å®æ¨¡å¼ä¸ï¼æ¨¡å¼ä»¥å£°æå
³é®åï¼var
ãlet
æ const
ï¼å¼å§ãç¶åï¼æ¯ä¸ªåç¬ç屿§å¿
é¡»ç»å®å°ä¸ä¸ªåéæè¿ä¸æ¥è§£æã
const obj = { a: 1, b: { c: 2 } };
const {
a,
b: { c: d },
} = obj;
// åé `a` å `d` 被ç»å®
ææåéå
±äº«ç¸åç声æï¼å æ¤ï¼å¦æä½ 叿æäºåéå¯éæ°åé
ï¼èå
¶ä»å鿝åªè¯»çï¼åå¯è½éè¦è§£æä¸¤æ¬¡ââ䏿¬¡ä½¿ç¨ let
ï¼ä¸æ¬¡ä½¿ç¨ const
ã
const obj = { a: 1, b: { c: 2 } };
const { a } = obj; // a 为常é
let {
b: { c: d },
} = obj; // d å¯è¢«éæ°èµå¼
ä½ ä¹å¯ä»¥å¨å ¶ä»è®¸å¤ä¸ºä½ ç»å®åéçè¯æ³ä¸ï¼ä½¿ç¨ç»å®è§£ææ¨¡å¼ãè¿äºå æ¬ï¼
for...in
ãfor...of
å for await...of
循ç¯ä¸ç循ç¯åéï¼catch
ç»å®åéãå¨èµå¼æ¨¡å¼ä¸ï¼æ¨¡å¼ä¸ä»¥å
³é®åå¼å¤´ãæ¯ä¸ªè§£æå±æ§é½è¢«èµå¼ç»ä¸ä¸ªèµå¼ç®æ ââè¿ä¸ªèµå¼ç®æ å¯ä»¥äºå
ç¨ var
æ let
声æï¼ä¹å¯ä»¥æ¯å¦ä¸ä¸ªå¯¹è±¡ç屿§ââä¸è¬æ¥è¯´ï¼å¯ä»¥æ¯ä»»ä½å¯ä»¥åºç°å¨èµå¼è¡¨è¾¾å¼å·¦ä¾§çä¸è¥¿ã
const numbers = [];
const obj = { a: 1, b: 2 };
({ a: numbers[0], b: numbers[1] } = obj);
// 屿§ `a` å `b` 被èµå¼ç»äº `numbers` ç屿§
夿³¨ï¼ å½ä½¿ç¨å¯¹è±¡åé¢éè§£æèä¸å¸¦å£°ææ¶ï¼å¨èµå¼è¯å¥å¨å´å¿
é¡»æ·»å æ¬å· ( ... )
ã
{ a, b } = { a: 1, b: 2 }
䏿¯ææçç¬ç«è¯æ³ï¼å 为左侧ç {a, b}
被è§ä¸ºåè䏿¯å¯¹è±¡åé¢éã使¯ï¼({ a, b } = { a: 1, b: 2 })
æ¯ææçï¼const { a, b } = { a: 1ï¼ b: 2 }
乿¯ææçã
å¦æä½ çç¼ç 飿 ¼ä¸å
æ¬å°¾éåå·ï¼å ( ... )
表达å¼åé¢éè¦æä¸ä¸ªåå·ï¼å¦åå®å¯è½ç¨äºæ§è¡åä¸è¡ç彿°ã
请注æï¼ä¸è¿°ä»£ç å¨çæçç»å®æ¨¡å¼ä¸ä¸æ¯ææçè¯æ³ï¼
const numbers = [];
const obj = { a: 1, b: 2 };
const { a: numbers[0], b: numbers[1] } = obj;
// çåäºï¼
// const numbers[0] = obj.a;
// const numbers[1] = obj.b;
// æ æä»£ç
ä½ åªè½å¨èµå¼è¿ç®ç¬¦ç左侧使ç¨èµå¼æ¨¡å¼ãä¸è½ä¸å¤åèµå¼è¿ç®ç¬¦å¦ +=
æ *=
ä¸èµ·ä½¿ç¨ã
æ¯ä¸ªè§£æå±æ§é½å¯ä»¥æä¸ä¸ªé»è®¤å¼ãå½å±æ§ä¸å卿å¼ä¸º undefined
æ¶ï¼å°ä½¿ç¨é»è®¤å¼ã妿屿§çå¼ä¸º null
ï¼åä¸ä½¿ç¨é»è®¤å¼ã
const [a = 1] = []; // a æ¯ 1
const { b = 2 } = { b: undefined }; // b æ¯ 2
const { c = 2 } = { c: null }; // c æ¯ null
é»è®¤å¼å¯ä»¥æ¯ä»»ä½è¡¨è¾¾å¼ãä» å¨å¿ è¦æ¶å¯¹å ¶è¿è¡æ±å¼ã
const { b = console.log("hey") } = { b: 2 };
// ä¸ä¼è¾åºä»»ä½ä¸è¥¿ï¼å 为 `b` çå¼å·²ç»è¢«å®ä¹ï¼æä»¥ä¸éè¦æ±é»è®¤å¼ã
å©ä½å±æ§åå©ä½å
ç´
ä½ å¯ä»¥ä½¿ç¨å©ä½å±æ§ï¼...rest
ï¼ç»æè§£ææ¨¡å¼ã对æ°ç»è§£ææ¶ï¼æ¤æ¨¡å¼ä¼å°æ°ç»çå©ä½å
ç´ åå¨å°æ°çå为 rest
ï¼æå¨ä»£ç 䏿å®çå
¶ä»ååï¼çæ°ç»ä¸ãå¯¹å¯¹è±¡è§£ææ¶ï¼æ¤æ¨¡å¼ä¼å°å¯¹è±¡å©ä½ç坿䏾屿§åå¨å°æ°çå为 rest
ç对象ä¸ã
æ´æ£å¼ç说ï¼...rest
è¯æ³å¨æ°ç»è§£æä¸è¢«ç§°ä½âå©ä½å
ç´ âï¼å¨å¯¹è±¡è§£æä¸è¢«ç§°ä½âå©ä½å±æ§âï¼ä½æä»¬é常ç»ç§°å
¶ä¸ºâå©ä½å±æ§âã
const { a, ...others } = { a: 1, b: 2, c: 3 };
console.log(others); // { b: 2, c: 3 }
const [first, ...others2] = [1, 2, 3];
console.log(others2); // [2, 3]
å©ä½å±æ§å¿ é¡»æ¯æ¨¡å¼ä¸çæåä¸ä¸ªï¼å¹¶ä¸ä¸è½æå°¾ééå·ã
const [a, ...b,] = [1, 2, 3];
// SyntaxError: rest element may not have a trailing comma
// å§ç»èèå°å©ä½è¿ç®ç¬¦ä½ä¸ºæåä¸ä¸ªå
ç´
ç¤ºä¾ è§£ææ°ç» åºæ¬åéèµå¼
const foo = ["one", "two", "three"];
const [red, yellow, green] = foo;
console.log(red); // "one"
console.log(yellow); // "two"
console.log(green); // "three"
è§£ææ¯æºæ´å¤çå
ç´
å¨ä»èµå¼è¯å¥å³ä¾§æå®çé¿åº¦ä¸º N çæ°ç»è§£æçæ°ç»ä¸ï¼å¦æèµå¼è¯å¥å·¦ä¾§æå®çåéæ°éå¤§äº Nï¼ååªæå N 个åé被èµå¼ãå ¶ä½åéçå¼å°æ¯æªå®ä¹ã
const foo = ["one", "two"];
const [red, yellow, green, blue] = foo;
console.log(red); // "one"
console.log(yellow); // "two"
console.log(green); // undefined
console.log(blue); //undefined
交æ¢åé
å¯ä»¥å¨ä¸ä¸ªè§£æè¡¨è¾¾å¼ä¸äº¤æ¢ä¸¤ä¸ªåéçå¼ã
没æè§£æçæ åµä¸ï¼äº¤æ¢ä¸¤ä¸ªåééè¦ä¸ä¸ªä¸´æ¶åéï¼æè ç¨ä½çº§è¯è¨ä¸çå¼æäº¤æ¢æå·§ï¼ã
let a = 1;
let b = 3;
[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
const arr = [1, 2, 3];
[arr[2], arr[1]] = [arr[1], arr[2]];
console.log(arr); // [1, 3, 2]
è§£æä¸ä¸ªä»å½æ°è¿åçæ°ç»
ä»ä¸ä¸ªå½æ°è¿åä¸ä¸ªæ°ç»æ¯åå常è§çæ åµãè§£æä½¿å¾å¤çè¿åå¼ä¸ºæ°ç»æ¶æ´å æ¹ä¾¿ã
å¨ä¸é¢ä¾åä¸ï¼è¦è®© f()
è¿åå¼ [1, 2]
ä½ä¸ºå
¶è¾åºï¼å¯ä»¥ä½¿ç¨è§£æå¨ä¸è¡å
å®æè§£æã
function f() {
return [1, 2];
}
const [a, b] = f();
console.log(a); // 1
console.log(b); // 2
å¿½ç¥æäºè¿åå¼
ä½ å¯ä»¥å¿½ç¥ä½ ä¸æå ´è¶£çè¿åå¼ï¼
function f() {
return [1, 2, 3];
}
const [a, , b] = f();
console.log(a); // 1
console.log(b); // 3
const [c] = f();
console.log(c); // 1
ä½ ä¹å¯ä»¥å¿½ç¥å ¨é¨è¿åå¼ï¼
使ç¨ç»å®æ¨¡å¼ä½ä¸ºå©ä½å±æ§æ°ç»è§£æçå©ä½å±æ§å¯ä»¥æ¯å¦ä¸ä¸ªæ°ç»æå¯¹è±¡ç»å®æ¨¡å¼ãè¿å è®¸ä½ åæ¶æåæ°ç»ç屿§åç´¢å¼ã
const [a, b, ...{ pop, push }] = [1, 2];
console.log(a, b); // 1 2
console.log(pop, push); // [Function pop] [Function push]
const [a, b, ...[c, d]] = [1, 2, 3, 4];
console.log(a, b, c, d); // 1 2 3 4
è¿äºç»å®æ¨¡å¼çè³å¯ä»¥åµå¥ï¼åªè¦æ¯ä¸ªå©ä½å±æ§é½å¨å表çæåã
const [a, b, ...[c, d, ...[e, f]]] = [1, 2, 3, 4, 5, 6];
console.log(a, b, c, d, e, f); // 1 2 3 4 5 6
å¦ä¸æ¹é¢ï¼å¯¹è±¡è§£æåªè½æä¸ä¸ªæ è¯ç¬¦ä½ä¸ºå©ä½å±æ§ã
const { a, ...{ b } } = { a: 1, b: 2 };
// SyntaxError: `...` must be followed by an identifier in declaration contexts
let a, b;
({ a, ...{ b } } = { a: 1, b: 2 });
// SyntaxError: `...` must be followed by an assignable reference in assignment contexts
仿£å表达å¼å¹é
项䏿åå¼
彿£å表达å¼ç exec()
æ¹æ³æ¾å°å¹é
项æ¶ï¼å®å°è¿åä¸ä¸ªæ°ç»ï¼è¯¥æ°ç»é¦å
å
å«åç¬¦ä¸²çæ´ä¸ªå¹é
é¨åï¼ç¶åè¿å䏿£å表达å¼ä¸æ¯ä¸ªæ¬å·ç»å¹é
çå符串é¨åãè§£æå
è®¸ä½ è½»æå°æååºéè¦çé¨åï¼å¦æä¸éè¦ï¼å忽ç¥å®æ´å¹é
ã
function parseProtocol(url) {
const parsedURL = /^(\w+):\/\/([^/]+)\/(.*)$/.exec(url);
if (!parsedURL) {
return false;
}
console.log(parsedURL);
// ["https://developer.mozilla.org/zh-CN/docs/Web/JavaScript",
// "https", "developer.mozilla.org", "zh-CN/docs/Web/JavaScript"]
const [, protocol, fullhost, fullpath] = parsedURL;
return protocol;
}
console.log(
parseProtocol("https://developer.mozilla.org/zh-CN/docs/Web/JavaScript"),
);
// "https"
å¨ä»»ä½å¯è¿ä»£å¯¹è±¡ä¸ä½¿ç¨æ°ç»è§£æ
æ°ç»è§£æè°ç¨å³ä¾§çè¿ä»£åè®®ãå æ¤ï¼ä»»ä½å¯è¿ä»£å¯¹è±¡ï¼ä¸ä¸å®æ¯æ°ç»ï¼é½å¯ä»¥è§£æã
const [a, b] = new Map([
[1, 2],
[3, 4],
]);
console.log(a, b); // [1, 2] [3, 4]
ä¸å¯è¿ä»£å¯¹è±¡ä¸è½è§£æä¸ºæ°ç»ã
const obj = { 0: "a", 1: "b", length: 2 };
const [a, b] = obj;
// TypeError: obj is not iterable
åªæå¨åé ææç»å®ä¹åï¼æä¼è¿ä»£å¯è¿ä»£å¯¹è±¡ã
const obj = {
*[Symbol.iterator]() {
for (const v of [0, 1, 2, 3]) {
console.log(v);
yield v;
}
},
};
const [a, b] = obj; // Only logs 0 and 1
å ¶ä½çç»å®ä¼æåæ±å¼å¹¶å建ä¸ä¸ªæ°æ°ç»ï¼è䏿¯ä½¿ç¨æ§çè¿ä»£å¨ã
const obj = {
*[Symbol.iterator]() {
for (const v of [0, 1, 2, 3]) {
console.log(v);
yield v;
}
},
};
const [a, b, ...rest] = obj; // Logs 0 1 2 3
console.log(rest); // [2, 3] (an array)
è§£æå¯¹è±¡ åºæ¬èµå¼
const user = {
id: 42,
isVerified: true,
};
const { id, isVerified } = user;
console.log(id); // 42
console.log(isVerified); // true
èµå¼ç»æ°çåéå
å¯ä»¥ä»å¯¹è±¡ä¸æå屿§ï¼å¹¶å°å ¶èµå¼ç»åç§°ä¸å¯¹è±¡å±æ§ä¸åçåéã
const o = { p: 42, q: true };
const { p: foo, q: bar } = o;
console.log(foo); // 42
console.log(bar); // true
举个ä¾åï¼const { p: foo } = o
ä»å¯¹è±¡ o
ä¸è·åå为 p
ç屿§ï¼å¹¶å°å
¶èµå¼ç»å为 foo
çå±é¨åéã
ä¸ä¸ªå±æ§å¯ä»¥åæ¶æ¯ä¸¤è ï¼
undefined
ãconst { a: aa = 10, b: bb = 5 } = { a: 3 };
console.log(aa); // 3
console.log(bb); // 5
ä»ä½ä¸ºå½æ°åæ°ä¼ éçå¯¹è±¡ä¸æå屿§
ä¼ éç»å½æ°åæ°ç对象ä¹å¯ä»¥æåå°åéä¸ï¼ç¶åå¯ä»¥å¨å½æ°ä½å 访é®è¿äºåéãè³äºå¯¹è±¡èµå¼ï¼è§£æè¯æ³å 许æ°åéå ·æä¸åå§å±æ§ç¸åæä¸åçåç§°ï¼å¹¶ä¸ºåå§å¯¹è±¡æªå®ä¹å±æ§çæ åµåé é»è®¤å¼ã
请èèæ¤å¯¹è±¡ï¼å ¶ä¸å å«æå ³ç¨æ·çä¿¡æ¯ã
const user = {
id: 42,
displayName: "jdoe",
fullName: {
firstName: "Jane",
lastName: "Doe",
},
};
å¨è¿éï¼æä»¬å±ç¤ºäºå¦ä½å°ä¼ é对象ç屿§æåå°å
·æç¸ååç§°çåéãåæ°å¼ { id }
è¡¨ç¤ºä¼ éç»å½æ°ç对象ç id
屿§åºè¯¥è¢«æåå°ä¸ä¸ªåååéä¸ï¼ç¶åå¯ä»¥å¨å½æ°ä¸ä½¿ç¨ã
function userId({ id }) {
return id;
}
console.log(userId(user)); // 42
ä½ å¯ä»¥å®ä¹æååéçåç§°ãå¨è¿éï¼æä»¬æåå为 displayName
ç屿§ï¼å¹¶å°å
¶éå½å为 dname
ï¼ä»¥ä¾¿å¨å½æ°ä½å
使ç¨ã
function userDisplayName({ displayName: dname }) {
return dname;
}
console.log(userDisplayName(user)); // `jdoe`
åµå¥å¯¹è±¡ä¹å¯ä»¥æåãä¸é¢ç示ä¾å±ç¤ºäºå±æ§ fullname.firstName
被æåå°å为 name
çåéä¸ã
function whois({ displayName, fullName: { firstName: name } }) {
return `${displayName} is ${name}`;
}
console.log(whois(user)); // "jdoe is Jane"
è®¾ç½®å½æ°åæ°çé»è®¤å¼
é»è®¤å¼å¯ä»¥ä½¿ç¨ =
æå®ï¼å¦ææå®ç屿§å¨ä¼ éç对象ä¸ä¸åå¨ï¼åå°å
¶ç¨ä½åéå¼ã
ä¸é¢æä»¬å±ç¤ºäºä¸ä¸ªé»è®¤å¤§å°ä¸º big
ç彿°ï¼é»è®¤åæ 为 x: 0, y: 0
ï¼é»è®¤åå¾ä¸º 25ã
function drawChart({
size = "big",
coords = { x: 0, y: 0 },
radius = 25,
} = {}) {
console.log(size, coords, radius);
// do some chart drawing
}
drawChart({
coords: { x: 18, y: 30 },
radius: 30,
});
å¨ä¸é¢ drawChart
ç彿°ç¾åä¸ï¼è§£æç左侧å
·æç©ºå¯¹è±¡ = {}
çé»è®¤å¼ã
ä½ ä¹å¯ä»¥å¨æ²¡æè¯¥é»è®¤å¼çæ
åµä¸ç¼åè¯¥å½æ°ã使¯ï¼å¦æä½ çç¥è¯¥é»è®¤å¼ï¼è¯¥å½æ°å°å¨è°ç¨æ¶å¯»æ¾è³å°ä¸ä¸ªåæ°æ¥æä¾ï¼èå¨å½åå½¢å¼ä¸ï¼ä½ å¯ä»¥å¨ä¸æä¾ä»»ä½åæ°çæ
åµä¸è°ç¨ drawChart()
ãå¦åï¼ä½ è³å°éè¦æä¾ä¸ä¸ªç©ºå¯¹è±¡åé¢éã
æå ³è¯¦ç»ä¿¡æ¯ï¼è¯·åé é»è®¤åæ°å¼ > æé»è®¤å¼çè§£æåæ°ã
è§£æåµå¥å¯¹è±¡åæ°ç»const metadata = {
title: "Scratchpad",
translations: [
{
locale: "de",
localization_tags: [],
last_edit: "2014-04-14T08:43:37",
url: "/de/docs/Tools/Scratchpad",
title: "JavaScript-Umgebung",
},
],
url: "/zh-CN/docs/Tools/Scratchpad",
};
let {
title: englishTitle, // rename
translations: [
{
title: localeTitle, // rename
},
],
} = metadata;
console.log(englishTitle); // "Scratchpad"
console.log(localeTitle); // "JavaScript-Umgebung"
For of è¿ä»£åè§£æ
const people = [
{
name: "Mike Smith",
family: {
mother: "Jane Smith",
father: "Harry Smith",
sister: "Samantha Smith",
},
age: 35,
},
{
name: "Tom Jones",
family: {
mother: "Norah Jones",
father: "Richard Jones",
brother: "Howard Jones",
},
age: 25,
},
];
for (const {
name: n,
family: { father: f },
} of people) {
console.log(`Name: ${n}, Father: ${f}`);
}
// "Name: Mike Smith, Father: Harry Smith"
// "Name: Tom Jones, Father: Richard Jones"
å¯¹è±¡å±æ§è®¡ç®ååè§£æ
计ç®å±æ§åï¼å¦å¯¹è±¡åé¢éï¼å¯ä»¥è¢«è§£æã
const key = "z";
const { [key]: foo } = { z: "bar" };
console.log(foo); // "bar"
æ æç JavaScript æ è¯ç¬¦ä½ä¸ºå±æ§åç§°
éè¿æä¾ææçæ¿ä»£æ è¯ç¬¦ï¼è§£æå¯ä»¥ä¸ä¸æ¯ææç JavaScript æ è¯ç¬¦ç屿§åç§°ä¸èµ·ä½¿ç¨ã
const foo = { "fizz-buzz": true };
const { "fizz-buzz": fizzBuzz } = foo;
console.log(fizzBuzz); // true
è§£æåºæ¬ç±»å
对象解æå ä¹çåäºå±æ§è®¿é®ãè¿æå³çï¼å¦æå°è¯è§£æåºæ¬ç±»åçå¼ï¼è¯¥å¼å°è¢«å è£ å°ç¸åºçå è£ å¨å¯¹è±¡ä¸ï¼å¹¶ä¸å¨å è£ å¨å¯¹è±¡ä¸è®¿é®è¯¥å±æ§ã
const { a, toFixed } = 1;
console.log(a, toFixed); // undefined Æ toFixed() { [native code] }
ä¸è®¿é®å±æ§ç¸åï¼è§£æ null
æ undefined
ä¼æåº TypeError
ã
const { a } = undefined; // TypeError: Cannot destructure property 'a' of 'undefined' as it is undefined.
const { a } = null; // TypeError: Cannot destructure property 'b' of 'null' as it is null.
å³ä½¿æ¨¡å¼ä¸ºç©ºï¼ä¹ä¼åçè¿ç§æ åµã
const {} = null; // TypeError: Cannot destructure 'null' as it is null.
ç»åæ°ç»å对象解æ
æ°ç»å对象解æå¯ä»¥ç»å使ç¨ãåè®¾ä½ æ³è¦ä¸é¢ props
æ°ç»ä¸ç第ä¸ä¸ªå
ç´ ï¼ç¶åä½ æ³è¦å¯¹è±¡ä¸ç name
屿§ï¼ä½ å¯ä»¥æ§è¡ä»¥ä¸æä½ï¼
const props = [
{ id: 1, name: "Fizz" },
{ id: 2, name: "Buzz" },
{ id: 3, name: "FizzBuzz" },
];
const [, , { name }] = props;
console.log(name); // "FizzBuzz"
è§£æå¯¹è±¡æ¶æ¥æ¾ååé¾
å½è§£æä¸ä¸ªå¯¹è±¡æ¶ï¼å¦æå±æ§æ¬èº«æ²¡æè¢«è®¿é®ï¼å®å°æ²¿çååé¾ç»§ç»æ¥æ¾ã
const obj = {
self: "123",
__proto__: {
prot: "456",
},
};
const { self, prot } = obj;
console.log(self); // "123"
console.log(prot); // "456"
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4