{"id":537,"date":"2024-04-18T16:03:59","date_gmt":"2024-04-18T08:03:59","guid":{"rendered":"https:\/\/levin.ink\/?p=537"},"modified":"2024-06-17T23:34:59","modified_gmt":"2024-06-17T15:34:59","slug":"js-3-javascript","status":"publish","type":"post","link":"https:\/\/levin.ink\/?p=537","title":{"rendered":"JS &#8211; 3 JavaScript"},"content":{"rendered":"<h1>Java\uff1fJavaScript\uff01<\/h1>\n<p><a href=\"https:\/\/objtube.github.io\/front-end-roadmap\/#\/front-end-roadmap\/guide\/javascript\">JavaScript<\/a><br \/>\n\u5927\u90e8\u5206\u6284\u81ea\u73b0\u4ee3js\u6307\u5357QwQ<\/p>\n<h2>\u5f15<\/h2>\n<h3>JavaScript \u5f15\u64ce<\/h3>\n<p>\u6d4f\u89c8\u5668\u4e2d\u5d4c\u5165\u4e86 JavaScript \u5f15\u64ce\uff0c\u6709\u65f6\u4e5f\u79f0\u4f5c\u201cJavaScript \u865a\u62df\u673a\u201d\u3002<br \/>\n\u4e0d\u540c\u7684\u5f15\u64ce\u6709\u4e0d\u540c\u7684\u201c\u4ee3\u53f7\u201d\uff0c\u4f8b\u5982\uff1a<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/V8_(JavaScript_engine)\">V8<\/a>\u00a0\u2014\u2014 Chrome\u3001Opera \u548c Edge \u4e2d\u7684 JavaScript \u5f15\u64ce\u3002<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/SpiderMonkey\">SpiderMonkey<\/a>\u00a0\u2014\u2014 Firefox \u4e2d\u7684 JavaScript \u5f15\u64ce\u3002<\/li>\n<li>\u201cChakra\u201d \u7528\u4e8e IE\uff0c\u201cJavaScriptCore\u201d\u3001\u201cNitro\u201d \u548c \u201cSquirrelFish\u201d \u7528\u4e8e Safari\uff0c\u7b49\u7b49\u3002<\/li>\n<\/ul>\n<blockquote>\n<p>\u5f15\u64ce\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff1f<br \/>\n\u5f15\u64ce\u5f88\u590d\u6742\uff0c\u4f46\u662f\u57fa\u672c\u539f\u7406\u5f88\u7b80\u5355\u3002<\/p>\n<ol>\n<li>\u5f15\u64ce\uff08\u5982\u679c\u662f\u6d4f\u89c8\u5668\uff0c\u5219\u5f15\u64ce\u88ab\u5d4c\u5165\u5728\u5176\u4e2d\uff09\u8bfb\u53d6\uff08\u201c\u89e3\u6790\u201d\uff09\u811a\u672c\u3002<\/li>\n<li>\u7136\u540e\uff0c\u5f15\u64ce\u5c06\u811a\u672c\u8f6c\u5316\uff08\u201c\u7f16\u8bd1\u201d\uff09\u4e3a\u673a\u5668\u8bed\u8a00\u3002<\/li>\n<li>\u7136\u540e\uff0c\u673a\u5668\u4ee3\u7801\u5feb\u901f\u5730\u6267\u884c\u3002<\/li>\n<li>\u5f15\u64ce\u4f1a\u5bf9\u6d41\u7a0b\u4e2d\u7684\u6bcf\u4e2a\u9636\u6bb5\u90fd\u8fdb\u884c\u4f18\u5316\u3002\u5b83\u751a\u81f3\u53ef\u4ee5\u5728\u7f16\u8bd1\u7684\u811a\u672c\u8fd0\u884c\u65f6\u76d1\u89c6\u5b83\uff0c\u5206\u6790\u6d41\u7ecf\u8be5\u811a\u672c\u7684\u6570\u636e\uff0c\u5e76\u6839\u636e\u83b7\u5f97\u7684\u4fe1\u606f\u8fdb\u4e00\u6b65\u4f18\u5316\u673a\u5668\u4ee3\u7801\u3002<\/li>\n<\/ol>\n<\/blockquote>\n<h3>\u6d4f\u89c8\u5668\u4e2d\u7684JavaScript<\/h3>\n<p>js\u662f\u4e00\u79cd\u201c\u5b89\u5168\u7684\u201d\u7f16\u7a0b\u8bed\u8a00\uff0c\u4e0d\u63d0\u4f9b\u5bf9\u5185\u5b58\u6216CPU\u7684\u5e95\u5c42\u8bbf\u95ee\u3002<\/p>\n<ul>\n<li>\u7f51\u9875\u4e2d\u7684 JavaScript \u4e0d\u80fd\u8bfb\u3001\u5199\u3001\u590d\u5236\u548c\u6267\u884c\u786c\u76d8\u4e0a\u7684\u4efb\u610f\u6587\u4ef6\u3002\u5b83\u6ca1\u6709\u76f4\u63a5\u8bbf\u95ee\u64cd\u4f5c\u7cfb\u7edf\u7684\u529f\u80fd\u3002<\/li>\n<li>\u73b0\u4ee3\u6d4f\u89c8\u5668\u5141\u8bb8 JavaScript \u505a\u4e00\u4e9b\u6587\u4ef6\u76f8\u5173\u7684\u64cd\u4f5c\uff0c\u4f46\u662f\u8fd9\u4e2a\u64cd\u4f5c\u662f\u53d7\u5230\u9650\u5236\u7684\u3002\u4ec5\u5f53\u7528\u6237\u505a\u51fa\u7279\u5b9a\u7684\u884c\u4e3a\uff0cJavaScript \u624d\u80fd\u64cd\u4f5c\u8fd9\u4e2a\u6587\u4ef6\u3002\u4f8b\u5982\uff0c\u7528\u6237\u628a\u6587\u4ef6\u201c\u62d6\u653e\u201d\u5230\u6d4f\u89c8\u5668\u4e2d\uff0c\u6216\u8005\u901a\u8fc7\u00a0<code>&lt;input&gt;<\/code>\u00a0\u6807\u7b7e\u9009\u62e9\u4e86\u6587\u4ef6\u3002<\/li>\n<li>\u6709\u5f88\u591a\u4e0e\u76f8\u673a\/\u9ea6\u514b\u98ce\u548c\u5176\u5b83\u8bbe\u5907\u8fdb\u884c\u4ea4\u4e92\u7684\u65b9\u5f0f\uff0c\u4f46\u662f\u8fd9\u4e9b\u90fd\u9700\u8981\u83b7\u5f97\u7528\u6237\u7684\u660e\u786e\u8bb8\u53ef\u3002\u56e0\u6b64\uff0c\u542f\u7528\u4e86 JavaScript \u7684\u7f51\u9875\u5e94\u8be5\u4e0d\u4f1a\u5077\u5077\u5730\u542f\u52a8\u7f51\u7edc\u6444\u50cf\u5934\u89c2\u5bdf\u4f60\uff0c\u5e76\u628a\u4f60\u7684\u4fe1\u606f\u53d1\u9001\u5230\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/National_Security_Agency\">\u7f8e\u56fd\u56fd\u5bb6\u5b89\u5168\u5c40<\/a>\u3002\uff08lol\uff09<\/li>\n<li>\u4e0d\u540c\u7684\u6807\u7b7e\u9875\/\u7a97\u53e3\u4e4b\u95f4\u901a\u5e38\u4e92\u4e0d\u4e86\u89e3\u3002\u6709\u65f6\u5019\uff0c\u4e5f\u4f1a\u6709\u4e00\u4e9b\u8054\u7cfb\uff0c\u4f8b\u5982\u4e00\u4e2a\u6807\u7b7e\u9875\u901a\u8fc7 JavaScript \u6253\u5f00\u7684\u53e6\u5916\u4e00\u4e2a\u6807\u7b7e\u9875\u3002\u4f46\u5373\u4f7f\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5982\u679c\u4e24\u4e2a\u6807\u7b7e\u9875\u6253\u5f00\u7684\u4e0d\u662f\u540c\u4e00\u4e2a\u7f51\u7ad9\uff08\u57df\u540d\u3001\u534f\u8bae\u6216\u8005\u7aef\u53e3\u4efb\u4e00\u4e0d\u76f8\u540c\u7684\u7f51\u7ad9\uff09\uff0c\u5b83\u4eec\u90fd\u4e0d\u80fd\u76f8\u4e92\u901a\u4fe1\u3002<\/li>\n<li>\u8fd9\u5c31\u662f\u6240\u8c13\u7684\u201c\u540c\u6e90\u7b56\u7565\u201d\u3002\u4e3a\u4e86\u89e3\u51b3\u201c\u540c\u6e90\u7b56\u7565\u201d\u95ee\u9898\uff0c\u4e24\u4e2a\u6807\u7b7e\u9875\u5fc5\u987b\u00a0<strong>\u90fd<\/strong>\u00a0\u5305\u542b\u4e00\u4e9b\u5904\u7406\u8fd9\u4e2a\u95ee\u9898\u7684\u7279\u5b9a\u7684 JavaScript \u4ee3\u7801\uff0c\u5e76\u5747\u5141\u8bb8\u6570\u636e\u4ea4\u6362\u3002\u672c\u6559\u7a0b\u4f1a\u8bb2\u5230\u8fd9\u90e8\u5206\u76f8\u5173\u7684\u77e5\u8bc6\u3002<\/li>\n<li>\u8fd9\u4e2a\u9650\u5236\u4e5f\u662f\u4e3a\u4e86\u7528\u6237\u7684\u4fe1\u606f\u5b89\u5168\u3002\u4f8b\u5982\uff0c\u7528\u6237\u6253\u5f00\u7684\u00a0<code>http:\/\/anysite.com<\/code>\u00a0\u7f51\u9875\u5fc5\u987b\u4e0d\u80fd\u8bbf\u95ee\u00a0<code>http:\/\/gmail.com<\/code>\uff08\u53e6\u5916\u4e00\u4e2a\u6807\u7b7e\u9875\u6253\u5f00\u7684\u7f51\u9875\uff09\u4e5f\u4e0d\u80fd\u4ece\u90a3\u91cc\u7a83\u53d6\u4fe1\u606f\u3002<\/li>\n<li>JavaScript \u53ef\u4ee5\u8f7b\u677e\u5730\u901a\u8fc7\u4e92\u8054\u7f51\u4e0e\u5f53\u524d\u9875\u9762\u6240\u5728\u7684\u670d\u52a1\u5668\u8fdb\u884c\u901a\u4fe1\u3002\u4f46\u662f\u4ece\u5176\u4ed6\u7f51\u7ad9\/\u57df\u7684\u670d\u52a1\u5668\u4e2d\u63a5\u6536\u6570\u636e\u7684\u80fd\u529b\u88ab\u524a\u5f31\u4e86\u3002\u5c3d\u7ba1\u53ef\u4ee5\uff0c\u4f46\u662f\u9700\u8981\u6765\u81ea\u8fdc\u7a0b\u670d\u52a1\u5668\u7684\u660e\u786e\u534f\u8bae\uff08\u5728 HTTP header \u4e2d\uff09\u3002\u8fd9\u4e5f\u662f\u4e3a\u4e86\u7528\u6237\u7684\u4fe1\u606f\u5b89\u5168\u3002<\/li>\n<\/ul>\n<p>\u5f53\u7136\u5728\u6d4f\u89c8\u5668\u73af\u5883\u5916\uff0c\u6bd4\u5982\u670d\u52a1\u5668\u4e0a\uff0c\u4e0d\u5b58\u5728\u6b64\u7c7b\u9650\u5236\u3002<\/p>\n<h3>JavaScript \u201c\u4e0a\u5c42\u201d\u8bed\u8a00<\/h3>\n<p>\u8fd9\u4e9b\u8bed\u8a00\u5728\u6d4f\u89c8\u5668\u4e2d\u6267\u884c\u4e4b\u524d\uff0c\u90fd\u4f1a\u88ab<strong>\u7f16\u8bd1<\/strong>\uff08\u8f6c\u5316\uff09\u6210 JavaScript\u3002<\/p>\n<ul>\n<li><a href=\"https:\/\/coffeescript.org\/\">CoffeeScript<\/a>\u00a0\u662f JavaScript \u7684\u4e00\u79cd\u8bed\u6cd5\u7cd6\u3002\u5b83\u5f15\u5165\u4e86\u66f4\u52a0\u7b80\u77ed\u7684\u8bed\u6cd5\uff0c\u4f7f\u6211\u4eec\u53ef\u4ee5\u7f16\u5199\u66f4\u6e05\u6670\u7b80\u6d01\u7684\u4ee3\u7801\u3002\u901a\u5e38\uff0cRuby \u5f00\u53d1\u8005\u559c\u6b22\u5b83\u3002<\/li>\n<li><a href=\"https:\/\/www.typescriptlang.org\/\">TypeScript<\/a>\u00a0\u4e13\u6ce8\u4e8e\u6dfb\u52a0\u201c\u4e25\u683c\u7684\u6570\u636e\u7c7b\u578b\u201d\u4ee5\u7b80\u5316\u5f00\u53d1\uff0c\u4ee5\u66f4\u597d\u5730\u652f\u6301\u590d\u6742\u7cfb\u7edf\u7684\u5f00\u53d1\u3002\u7531\u5fae\u8f6f\u5f00\u53d1\u3002<\/li>\n<li><a href=\"https:\/\/flow.org\/\">Flow<\/a>\u00a0\u4e5f\u6dfb\u52a0\u4e86\u6570\u636e\u7c7b\u578b\uff0c\u4f46\u662f\u4ee5\u4e00\u79cd\u4e0d\u540c\u7684\u65b9\u5f0f\u3002\u7531 Facebook \u5f00\u53d1\u3002<\/li>\n<li><a href=\"https:\/\/www.dartlang.org\/\">Dart<\/a>\u00a0\u662f\u4e00\u95e8\u72ec\u7acb\u7684\u8bed\u8a00\u3002\u5b83\u62e5\u6709\u81ea\u5df1\u7684\u5f15\u64ce\uff0c\u8be5\u5f15\u64ce\u53ef\u4ee5\u5728\u975e\u6d4f\u89c8\u5668\u73af\u5883\u4e2d\u8fd0\u884c\uff08\u4f8b\u5982\u624b\u673a\u5e94\u7528\uff09\uff0c\u5b83\u4e5f\u53ef\u4ee5\u88ab\u7f16\u8bd1\u6210 JavaScript\u3002\u7531 Google \u5f00\u53d1\u3002<\/li>\n<li><a href=\"https:\/\/brython.info\/\">Brython<\/a>\u00a0\u662f\u4e00\u4e2a Python \u5230 JavaScript \u7684\u8f6c\u8bd1\u5668\uff0c\u8ba9\u6211\u4eec\u53ef\u4ee5\u5728\u4e0d\u4f7f\u7528 JavaScript \u7684\u60c5\u51b5\u4e0b\uff0c\u4ee5\u7eaf Python \u7f16\u5199\u5e94\u7528\u7a0b\u5e8f\u3002<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/js-overview.html\">Kotlin<\/a>\u00a0\u662f\u4e00\u4e2a\u73b0\u4ee3\u3001\u7b80\u6d01\u4e14\u5b89\u5168\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u7f16\u5199\u51fa\u7684\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u5728\u6d4f\u89c8\u5668\u548c Node \u73af\u5883\u4e2d\u8fd0\u884c\u3002<\/li>\n<\/ul>\n<h3>\u89c4\u8303<\/h3>\n<p><strong>ECMA-262 \u89c4\u8303<\/strong>\u00a0\u5305\u542b\u4e86\u5927\u90e8\u5206\u6df1\u5165\u7684\u3001\u8be6\u7ec6\u7684\u3001\u89c4\u8303\u5316\u7684\u5173\u4e8e JavaScript \u7684\u4fe1\u606f\u3002\u8fd9\u4efd\u89c4\u8303\u660e\u786e\u5730\u5b9a\u4e49\u4e86\u8fd9\u95e8\u8bed\u8a00\u3002<br \/>\n\u4f46\u6b63\u56e0\u5176\u89c4\u8303\u5316\uff0c\u5bf9\u4e8e\u65b0\u624b\u6765\u8bf4\u96be\u4ee5\u7406\u89e3\u3002\u6240\u4ee5\uff0c\u5982\u679c\u4f60\u9700\u8981\u5173\u4e8e\u8fd9\u95e8\u8bed\u8a00\u7ec6\u8282\u6700\u6743\u5a01\u7684\u4fe1\u606f\u6765\u6e90\uff0c\u8fd9\u4efd\u89c4\u8303\u5c31\u5f88\u9002\u5408\u4f60\uff08\u53bb\u9605\u8bfb\uff09\u3002\u4f46\u5b83\u5e76\u4e0d\u9002\u5408\u65e5\u5e38\u4f7f\u7528\u3002<br \/>\n\u6bcf\u5e74\u90fd\u4f1a\u53d1\u5e03\u4e00\u4e2a\u65b0\u7248\u672c\u7684\u89c4\u8303\u3002\u6700\u65b0\u7684\u89c4\u8303\u8349\u6848\u8bf7\u89c1\u00a0<a href=\"https:\/\/tc39.es\/ecma262\/\">https:\/\/tc39.es\/ecma262\/<\/a>\u3002<br \/>\n\u60f3\u4e86\u89e3\u6700\u65b0\u6700\u524d\u6cbf\u7684\u529f\u80fd\uff0c\u5305\u62ec\u201c\u5373\u5c06\u7eb3\u5165\u89c4\u8303\u7684\u201d\uff08\u6240\u8c13\u7684 \u201cstage 3\u201d\uff09\uff0c\u8bf7\u770b\u8fd9\u91cc\u7684\u63d0\u6848\u00a0<a href=\"https:\/\/github.com\/tc39\/proposals\">https:\/\/github.com\/tc39\/proposals<\/a>\u3002<\/p>\n<h3>\u624b\u518c<\/h3>\n<ul>\n<li><strong>MDN\uff08Mozilla\uff09JavaScript \u7d22\u5f15<\/strong>\u00a0\u662f\u4e00\u4e2a\u5e26\u6709\u7528\u4f8b\u548c\u5176\u4ed6\u4fe1\u606f\u7684\u4e3b\u8981\u7684\u624b\u518c\u3002\u5b83\u662f\u4e00\u4e2a\u83b7\u53d6\u5173\u4e8e\u4e2a\u522b\u8bed\u8a00\u51fd\u6570\u3001\u65b9\u6cd5\u7b49\u6df1\u5165\u4fe1\u606f\u7684\u5f88\u597d\u7684\u4fe1\u606f\u6765\u6e90\u3002\u4f60\u53ef\u4ee5\u5728\u00a0<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\">\u6b64\u5904\u9605\u8bfb<\/a><br \/>\n\u4e0d\u8fc7\uff0c\u5229\u7528\u4e92\u8054\u7f51\u641c\u7d22\u901a\u5e38\u662f\u6700\u597d\u7684\u9009\u62e9\u3002\u53ea\u9700\u5728\u67e5\u8be2\u65f6\u8f93\u5165\u201cMDN [\u5173\u952e\u5b57]\u201d\uff0c\u4f8b\u5982\u00a0<a href=\"https:\/\/google.com\/search?q=MDN+parseInt\">https:\/\/google.com\/search?q=MDN+parseInt<\/a>\u00a0\u641c\u7d22\u00a0<code>parseInt<\/code>\u00a0\u51fd\u6570\u3002<\/li>\n<\/ul>\n<h3>\u5f00\u53d1\u8005\u63a7\u5236\u53f0 F12\uff01<\/h3>\n<p>\u591a\u884c\u8f93\u5165<br \/>\n\u901a\u5e38\uff0c\u5f53\u6211\u4eec\u5411\u63a7\u5236\u53f0\u8f93\u5165\u4e00\u884c\u4ee3\u7801\u540e\uff0c\u6309\u00a0Enter\uff0c\u8fd9\u884c\u4ee3\u7801\u5c31\u4f1a\u7acb\u5373\u6267\u884c\u3002<br \/>\n\u5982\u679c\u60f3\u8981\u63d2\u5165\u591a\u884c\u4ee3\u7801\uff0c\u8bf7\u6309\u00a0Shift+Enter\u00a0\u6765\u8fdb\u884c\u6362\u884c\u3002\u8fd9\u6837\u5c31\u53ef\u4ee5\u8f93\u5165\u957f\u7247\u6bb5\u7684 JavaScript \u4ee3\u7801\u4e86\u3002<\/p>\n<h2>JavaScript \u57fa\u7840<\/h2>\n<h3>&lt;script&gt; \u6807\u7b7e<\/h3>\n<blockquote>\n<p>\u5982\u679c\u8bbe\u7f6e\u4e86\u00a0<code>src<\/code>\u00a0\u7279\u6027\uff0c<code>script<\/code>\u00a0\u6807\u7b7e\u5185\u5bb9\u5c06\u4f1a\u88ab\u5ffd\u7565\u3002<br \/>\n\u4e00\u4e2a\u5355\u72ec\u7684\u00a0<code>&lt;script&gt;<\/code>\u00a0\u6807\u7b7e\u4e0d\u80fd\u540c\u65f6\u6709\u00a0<code>src<\/code>\u00a0\u7279\u6027\u548c\u5185\u90e8\u5305\u88f9\u7684\u4ee3\u7801\u3002<\/p>\n<\/blockquote>\n<h3>\u5206\u53f7<\/h3>\n<blockquote>\n<p>\u7701\u6d41\uff1a\u7ed9\u6211\u52a0\u5206\u53f7<\/p>\n<\/blockquote>\n<p>\u53ef\u4ee5\u4e0d\u52a0\u5206\u53f7\uff0cJavaScript \u5c06\u6362\u884c\u7b26\u7406\u89e3\u6210\u201c\u9690\u5f0f\u201d\u7684\u5206\u53f7\u3002\u8fd9\u4e5f\u88ab\u79f0\u4e3a\u00a0<a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-automatic-semicolon-insertion\">\u81ea\u52a8\u5206\u53f7\u63d2\u5165<\/a>\u3002<br \/>\n<strong>\u5728\u5927\u591a\u6570\u60c5\u51b5\uff08\u4e0d\u603b\u662f\uff09\u4e0b\uff0c\u6362\u884c\u610f\u5473\u7740\u4e00\u4e2a\u5206\u53f7\u3002<\/strong><\/p>\n<pre><code class=\"language-javascript\">alert(3 + \n\t  1 \n\t  + 2);\n<\/code><\/pre>\n<p>JavaScript \u5e76\u6ca1\u6709\u5728\u8fd9\u91cc\u63d2\u5165\u5206\u53f7\u3002<br \/>\n<strong>HOWEVER<\/strong><br \/>\n<strong>\u5b58\u5728 JavaScript \u65e0\u6cd5\u786e\u5b9a\u662f\u5426\u771f\u7684\u9700\u8981\u81ea\u52a8\u63d2\u5165\u5206\u53f7\u7684\u60c5\u51b5\u3002<\/strong><\/p>\n<pre><code class=\"language-js\">alert(&quot;Hello&quot;);\n[1, 2].forEach(alert);\n\/\/\u6b63\u5e38\u8fd0\u884c\uff0c\u8f93\u51faHello 1 2\nalert(&quot;Hello&quot;)\n[1, 2].forEach(alert);\n\/\/\u53ea\u8f93\u51faHello\uff0c\u5e76\u6709\u62a5\u9519\nalert(&quot;Hello&quot;)[1, 2].forEach(alert);\n\/\/\u5728\u5f15\u64ce\u770b\u6765\u662f\u8fd9\u6837\u7684\n<\/code><\/pre>\n<h3>\u6ce8\u91ca<\/h3>\n<p>\/\/\u5355\u884c<br \/>\n\/*<br \/>\n\u591a\u884c<br \/>\n*\/<br \/>\n\u4f7f\u7528\u5feb\u6377\u952e\uff01<br \/>\n\u5728\u5927\u591a\u6570\u7684\u7f16\u8f91\u5668\u4e2d\uff0c\u4e00\u884c\u4ee3\u7801\u53ef\u4ee5\u4f7f\u7528\u00a0Ctrl+\/\u00a0\u5feb\u6377\u952e\u8fdb\u884c\u5355\u884c\u6ce8\u91ca\uff0c\u8bf8\u5982\u00a0Ctrl+Shift+\/\u00a0\u7684\u5feb\u6377\u952e\u53ef\u4ee5\u8fdb\u884c\u591a\u884c\u6ce8\u91ca\uff08\u9009\u62e9\u4ee3\u7801\uff0c\u7136\u540e\u6309\u4e0b\u5feb\u6377\u952e\uff09\u3002<br \/>\n<strong>\u4e0d\u652f\u6301\u6ce8\u91ca\u5d4c\u5957\uff01<\/strong><br \/>\n\u4e0d\u8981\u5728\u00a0<code>\/*...*\/<\/code>\u00a0\u5185\u5d4c\u5957\u53e6\u4e00\u4e2a\u00a0<code>\/*...*\/<\/code>\u3002<\/p>\n<pre><code class=\"language-js\">\/*\n\t\/*\u9519\u8bef*\/\n*\/\nalert\uff08'world'\uff09\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u770b\u5230\u6700\u540e\u4e00\u4e2a*\/\u88ab\u8bc6\u522b\u5230\u6ce8\u91ca\u5916\u3002<\/p>\n<h3>\u73b0\u4ee3\u6a21\u5f0f &quot;use strict&quot;<\/h3>\n<blockquote>\n<p>\u7701\u6d41\uff1a<strong>\u6b22\u8fce\u5c06\u00a0<code>&quot;use strict&quot;;<\/code>\u00a0\u5199\u5728\u811a\u672c\u7684\u9876\u90e8\u3002\u5f53\u4f60\u7684\u4ee3\u7801\u5168\u90fd\u5199\u5728\u4e86 class \u548c module \u4e2d\u65f6\uff0c\u5219\u53ef\u4ee5\u5c06\u00a0<code>&quot;use strict&quot;;<\/code>\u00a0\u7701\u7565\u6389\u3002<\/strong><\/p>\n<\/blockquote>\n<p>ES5 \u89c4\u8303\u589e\u52a0\u4e86\u65b0\u7684\u8bed\u8a00\u7279\u6027\u5e76\u4e14\u4fee\u6539\u4e86\u4e00\u4e9b\u5df2\u7ecf\u5b58\u5728\u7684\u7279\u6027\u3002\u4e3a\u4e86\u4fdd\u8bc1\u65e7\u7684\u529f\u80fd\u80fd\u591f\u4f7f\u7528\uff0c\u5927\u90e8\u5206\u7684\u4fee\u6539\u662f\u9ed8\u8ba4\u4e0d\u751f\u6548\u7684\u3002\u4f60\u9700\u8981\u4e00\u4e2a\u7279\u6b8a\u7684\u6307\u4ee4 \u2014\u2014\u00a0<code>&quot;use strict&quot;<\/code>\u00a0\u6765\u660e\u786e\u5730\u6fc0\u6d3b\u8fd9\u4e9b\u7279\u6027\u3002<br \/>\n\u8fd9\u4e2a\u6307\u4ee4\u770b\u4e0a\u53bb\u50cf\u4e00\u4e2a\u5b57\u7b26\u4e32\u00a0<code>&quot;use strict&quot;<\/code>\u00a0\u6216\u8005\u00a0<code>'use strict'<\/code>\u3002\u5f53\u5b83\u5904\u4e8e\u811a\u672c\u6587\u4ef6\u7684\u9876\u90e8\u65f6\uff0c\u5219\u6574\u4e2a\u811a\u672c\u6587\u4ef6\u90fd\u5c06\u4ee5\u201c\u73b0\u4ee3\u201d\u6a21\u5f0f\u8fdb\u884c\u5de5\u4f5c\u3002<\/p>\n<blockquote>\n<p>\u786e\u4fdd \u201cuse strict\u201d \u51fa\u73b0\u5728\u6700\u9876\u90e8<br \/>\n\u8bf7\u786e\u4fdd\u00a0<code>&quot;use strict&quot;<\/code>\u00a0\u51fa\u73b0\u5728\u811a\u672c\u7684\u6700\u9876\u90e8\uff0c\u5426\u5219\u4e25\u683c\u6a21\u5f0f\u53ef\u80fd\u65e0\u6cd5\u542f\u7528\u3002<br \/>\n\u53ea\u6709\u6ce8\u91ca\u53ef\u4ee5\u51fa\u73b0\u5728\u00a0<code>&quot;use strict&quot;<\/code>\u00a0\u7684\u4e0a\u9762\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u6ca1\u6709\u56de\u5934\u8def\uff0c\u6ca1\u6709\u529e\u6cd5\u53d6\u6d88\u00a0<code>use strict<\/code><br \/>\n\u6ca1\u6709\u7c7b\u4f3c\u4e8e\u00a0<code>&quot;no use strict&quot;<\/code>\u00a0\u8fd9\u6837\u7684\u6307\u4ee4\u53ef\u4ee5\u4f7f\u7a0b\u5e8f\u8fd4\u56de\u9ed8\u8ba4\u6a21\u5f0f\u3002<br \/>\n\u4e00\u65e6\u8fdb\u5165\u4e86\u4e25\u683c\u6a21\u5f0f\uff0c\u5c31\u6ca1\u6709\u56de\u5934\u8def\u4e86\u3002<\/p>\n<\/blockquote>\n<p>\u5982\u4f55\u5728\u6d4f\u89c8\u5668\u4e2d\u4f7f\u7528\u3002<br \/>\n\u5f00\u53d1\u8005\u63a7\u5236\u53f0\u9ed8\u8ba4\u4e0d\u542f\u52a8use strict\u3002<br \/>\n\u4f7f\u7528\u00a0Shift+Enter\u00a0\u6309\u952e\u53bb\u8f93\u5165\u591a\u884c\u4ee3\u7801\uff0c\u7136\u540e\u5c06\u00a0<code>use strict<\/code>\u00a0\u653e\u5728\u4ee3\u7801\u6700\u9876\u90e8\u3002<br \/>\n\u5f88\u4e11\u4f46\u53ef\u9760\u7684\u542f\u7528\u00a0<code>use strict<\/code>\u00a0\u7684\u65b9\u6cd5\u3002like this<\/p>\n<pre><code class=\"language-js\">(function() {\n  'use strict';\n\n  \/\/ ...\u4f60\u7684\u4ee3\u7801...\n})()\n<\/code><\/pre>\n<blockquote>\n<p>\u73b0\u4ee3 JavaScript \u652f\u6301 \u201cclass\u201d \u548c \u201cmodule\u201d \u2014\u2014 \u9ad8\u7ea7\u8bed\u8a00\u7ed3\u6784\uff0c\u5b83\u4eec\u4f1a\u81ea\u52a8\u542f\u7528\u00a0<code>use strict<\/code>\u3002\u56e0\u6b64\uff0c\u5982\u679c\u6211\u4eec\u4f7f\u7528\u5b83\u4eec\uff0c\u5219\u65e0\u9700\u6dfb\u52a0\u00a0<code>&quot;use strict&quot;<\/code>\u00a0\u6307\u4ee4\u3002<\/p>\n<\/blockquote>\n<h3>\u53d8\u91cf let<\/h3>\n<p>\u8001\u7248\u672c\u4e2d\u5b58\u5728var\uff0c\u5927\u4f53\u76f8\u540c\uff0c\u540e\u7eed\u4ecb\u7ecd<\/p>\n<blockquote>\n<p>\u51fd\u6570\u5f0f\u8bed\u8a00<br \/>\n\u6709\u8da3\u7684\u662f\uff0c\u4e5f\u5b58\u5728\u7981\u6b62\u66f4\u6539\u53d8\u91cf\u503c\u7684\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\">\u51fd\u6570\u5f0f<\/a>\u00a0\u7f16\u7a0b\u8bed\u8a00\u3002\u6bd4\u5982\u00a0<a href=\"http:\/\/www.scala-lang.org\/\">Scala<\/a>\u00a0\u6216\u00a0<a href=\"http:\/\/www.erlang.org\/\">Erlang<\/a>\u3002<br \/>\n\u5728\u8fd9\u79cd\u7c7b\u578b\u7684\u8bed\u8a00\u4e2d\uff0c\u4e00\u65e6\u503c\u4fdd\u5b58\u5728\u76d2\u5b50\u4e2d\uff0c\u5c31\u6c38\u8fdc\u5b58\u5728\u3002\u5982\u679c\u4f60\u8bd5\u56fe\u4fdd\u5b58\u5176\u4ed6\u503c\uff0c\u5b83\u4f1a\u5f3a\u5236\u521b\u5efa\u4e00\u4e2a\u65b0\u76d2\u5b50\uff08\u58f0\u660e\u4e00\u4e2a\u65b0\u53d8\u91cf\uff09\uff0c\u65e0\u6cd5\u91cd\u7528\u4e4b\u524d\u7684\u53d8\u91cf\u3002<br \/>\n\u867d\u7136\u7b2c\u4e00\u6b21\u770b\u4e0a\u53bb\u6709\u70b9\u5947\u602a\uff0c\u4f46\u662f\u8fd9\u4e9b\u8bed\u8a00\u6709\u5f88\u5927\u7684\u53d1\u5c55\u6f5c\u529b\u3002\u4e0d\u4ec5\u5982\u6b64\uff0c\u5728\u67d0\u4e9b\u9886\u57df\uff0c\u6bd4\u5982\u5e76\u884c\u8ba1\u7b97\uff0c\u8fd9\u4e2a\u9650\u5236\u6709\u4e00\u5b9a\u7684\u597d\u5904\u3002\u7814\u7a76\u8fd9\u6837\u7684\u4e00\u95e8\u8bed\u8a00\uff08\u5373\u4f7f\u4e0d\u6253\u7b97\u5f88\u5feb\u5c31\u7528\u4e0a\u5b83\uff09\u6709\u52a9\u4e8e\u5f00\u9614\u89c6\u91ce\u3002<\/p>\n<\/blockquote>\n<p>\u547d\u540d<\/p>\n<ol>\n<li>\u53d8\u91cf\u540d\u79f0\u5fc5\u987b\u4ec5\u5305\u542b\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7b26\u53f7\u00a0<code>$<\/code>\u00a0\u548c\u00a0<code>_<\/code>\u3002<\/li>\n<li>\u9996\u5b57\u7b26\u5fc5\u987b\u975e\u6570\u5b57\u3002<br \/>\n\u5927\u5c0f\u5199\u654f\u611f<br \/>\n\u652f\u6301\u5176\u4ed6\u8bed\u8a00\uff0c\u4f46\u4e0d\u5efa\u8bae<br \/>\n\u4fdd\u7559\u5b57\u3002\u3002\u3002<\/li>\n<\/ol>\n<blockquote>\n<p>\u65e0\u4e25\u683c\u6a21\u5f0f<br \/>\n\u53d8\u91cf\u4e0d\u9700\u8981\u63d0\u524d\u58f0\u660e<\/p>\n<\/blockquote>\n<h3>\u5e38\u91cf const<\/h3>\n<p>\u666e\u904d\u505a\u6cd5\uff1a\u5927\u5199\u547d\u540d\uff0c\u8bb0\u4f4f\u90a3\u4e9b\u5728\u6267\u884c\u4e4b\u524d\u5c31\u5df2\u77e5\u7684\u96be\u4ee5\u8bb0\u4f4f\u7684\u503c\u3002<br \/>\n\u6709\u4e9b\u5728\u6267\u884c\u671f\u95f4\u88ab\u201c\u8ba1\u7b97\u201d\u51fa\u6765\uff0c\u4f46\u521d\u59cb\u8d4b\u503c\u4e4b\u540e\u5c31\u4e0d\u4f1a\u6539\u53d8\u3002<\/p>\n<pre><code class=\"language-js\">const pageLoadTime = \/* \u7f51\u9875\u52a0\u8f7d\u6240\u9700\u7684\u65f6\u95f4 *\/;\n<\/code><\/pre>\n<p><code>pageLoadTime<\/code>\u00a0\u7684\u503c\u5728\u9875\u9762\u52a0\u8f7d\u4e4b\u524d\u662f\u672a\u77e5\u7684\uff0c\u6240\u4ee5\u91c7\u7528\u5e38\u89c4\u547d\u540d\u3002\u4f46\u662f\u5b83\u4ecd\u7136\u662f\u4e2a\u5e38\u91cf\uff0c\u56e0\u4e3a\u8d4b\u503c\u4e4b\u540e\u4e0d\u4f1a\u6539\u53d8\u3002<br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c\u5927\u5199\u547d\u540d\u7684\u5e38\u91cf\u4ec5\u7528\u4f5c\u201c\u786c\u7f16\u7801\uff08hard-coded\uff09\u201d\u503c\u7684\u522b\u540d\u3002<\/p>\n<h3>\u91cd\u7528\u8fd8\u662f\u65b0\u5efa\uff1f<\/h3>\n<p>\u6700\u540e\u4e00\u70b9\uff0c\u6709\u4e00\u4e9b\u61d2\u60f0\u7684\u7a0b\u5e8f\u5458\uff0c\u503e\u5411\u4e8e\u91cd\u7528\u73b0\u6709\u7684\u53d8\u91cf\uff0c\u800c\u4e0d\u662f\u58f0\u660e\u4e00\u4e2a\u65b0\u7684\u53d8\u91cf\u3002<br \/>\n\u7ed3\u679c\u662f\uff0c\u8fd9\u4e2a\u53d8\u91cf\u5c31\u50cf\u662f\u88ab\u6254\u8fdb\u4e0d\u540c\u4e1c\u897f\u76d2\u5b50\uff0c\u4f46\u6ca1\u6709\u6539\u53d8\u5b83\u7684\u8d34\u7eb8\u3002\u73b0\u5728\u91cc\u9762\u662f\u4ec0\u4e48\uff1f\u8c01\u77e5\u9053\u5462\u3002\u6211\u4eec\u9700\u8981\u9760\u8fd1\u4e00\u70b9\uff0c\u4ed4\u7ec6\u68c0\u67e5\u624d\u80fd\u77e5\u9053\u3002<br \/>\n\u8fd9\u6837\u7684\u7a0b\u5e8f\u5458\u8282\u7701\u4e86\u4e00\u70b9\u53d8\u91cf\u58f0\u660e\u7684\u65f6\u95f4\uff0c\u4f46\u5374\u5728\u8c03\u8bd5\u4ee3\u7801\u7684\u65f6\u5019\u635f\u5931\u6570\u5341\u500d\u65f6\u95f4\u3002<br \/>\n\u989d\u5916\u58f0\u660e\u4e00\u4e2a\u53d8\u91cf\u7edd\u5bf9\u662f\u5229\u5927\u4e8e\u5f0a\u7684\u3002<br \/>\n\u73b0\u4ee3\u7684 JavaScript \u538b\u7f29\u5668\u548c\u6d4f\u89c8\u5668\u90fd\u80fd\u591f\u5f88\u597d\u5730\u5bf9\u4ee3\u7801\u8fdb\u884c\u4f18\u5316\uff0c\u6240\u4ee5\u4e0d\u4f1a\u4ea7\u751f\u6027\u80fd\u95ee\u9898\u3002\u4e3a\u4e0d\u540c\u7684\u503c\u4f7f\u7528\u4e0d\u540c\u7684\u53d8\u91cf\u53ef\u4ee5\u5e2e\u52a9\u5f15\u64ce\u5bf9\u4ee3\u7801\u8fdb\u884c\u4f18\u5316\u3002<\/p>\n<h3>\u6570\u636e\u7c7b\u578b<\/h3>\n<p>\u6211\u4eec\u53ef\u4ee5\u5c06\u4efb\u4f55\u7c7b\u578b\u7684\u503c\u5b58\u5165\u540c\u4e00\u53d8\u91cf\u3002<br \/>\n\u5141\u8bb8\u8fd9\u79cd\u64cd\u4f5c\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u4f8b\u5982 JavaScript\uff0c\u88ab\u79f0\u4e3a\u201c\u52a8\u6001\u7c7b\u578b\u201d\uff08dynamically typed\uff09\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u610f\u601d\u662f\u867d\u7136\u7f16\u7a0b\u8bed\u8a00\u4e2d\u6709\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0c\u4f46\u662f\u4f60\u5b9a\u4e49\u7684\u53d8\u91cf\u5e76\u4e0d\u4f1a\u5728\u5b9a\u4e49\u540e\uff0c\u88ab\u9650\u5236\u4e3a\u67d0\u4e00\u6570\u636e\u7c7b\u578b\u3002<\/p>\n<h4>Number<\/h4>\n<p>\u201c\u7279\u6b8a\u6570\u503c\uff08\u201cspecial numeric values\u201d\uff09\u201d\u4e5f\u5c5e\u4e8e\u8fd9\u79cd\u7c7b\u578b\uff1aInfinity\u3001-Infinity \u548c NaN\u3002<br \/>\nInfinity(\u65e0\u9650)\uff1a\u96640\u5f97\u5230\u6216\u76f4\u63a5\u4f7f\u7528<br \/>\nNaN\uff1a\u8ba1\u7b97\u9519\u8bef\uff0c\u4e0d\u6b63\u786e\u7684\u6216\u8005\u4e00\u4e2a\u672a\u5b9a\u4e49\u7684\u6570\u5b66\u64cd\u4f5c\u6240\u5f97\u5230\u7684\u7ed3\u679c\uff0c<code>NaN<\/code>\u00a0\u662f\u7c98\u6027\u7684\u3002\u4efb\u4f55\u5bf9\u00a0<code>NaN<\/code>\u00a0\u7684\u8fdb\u4e00\u6b65\u6570\u5b66\u8fd0\u7b97\u90fd\u4f1a\u8fd4\u56de\u00a0<code>NaN<\/code><br \/>\n\u5982\u679c\u5728\u6570\u5b66\u8868\u8fbe\u5f0f\u4e2d\u6709\u4e00\u4e2a\u00a0<code>NaN<\/code>\uff0c\u4f1a\u88ab\u4f20\u64ad\u5230\u6700\u7ec8\u7ed3\u679c\uff08\u53ea\u6709\u4e00\u4e2a\u4f8b\u5916\uff1a<code>NaN ** 0<\/code>\u00a0\u7ed3\u679c\u4e3a\u00a0<code>1<\/code>\uff09\u3002<\/p>\n<blockquote>\n<p>\u6570\u5b66\u8fd0\u7b97\u662f\u5b89\u5168\u7684<br \/>\n\u5728 JavaScript \u4e2d\u505a\u6570\u5b66\u8fd0\u7b97\u662f\u5b89\u5168\u7684\u3002\u6211\u4eec\u53ef\u4ee5\u505a\u4efb\u4f55\u4e8b\uff1a\u9664\u4ee5 0\uff0c\u5c06\u975e\u6570\u5b57\u5b57\u7b26\u4e32\u89c6\u4e3a\u6570\u5b57\uff0c\u7b49\u7b49\u3002<br \/>\n\u811a\u672c\u6c38\u8fdc\u4e0d\u4f1a\u56e0\u4e3a\u4e00\u4e2a\u81f4\u547d\u7684\u9519\u8bef\uff08\u201c\u6b7b\u4ea1\u201d\uff09\u800c\u505c\u6b62\u3002\u6700\u574f\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4f1a\u5f97\u5230\u00a0<code>NaN<\/code>\u00a0\u7684\u7ed3\u679c\u3002<\/p>\n<\/blockquote>\n<h4>Bigint<\/h4>\n<p>\u5728 JavaScript \u4e2d\uff0c\u201cnumber\u201d \u7c7b\u578b\u65e0\u6cd5\u5b89\u5168\u5730\u8868\u793a\u5927\u4e8e\u00a0<code>(2^53-1)<\/code>\uff08\u5373\u00a0<code>9007199254740991<\/code>\uff09\uff0c\u6216\u5c0f\u4e8e\u00a0<code>-(2^53-1)<\/code>\u00a0\u7684\u6574\u6570\u3002<br \/>\n\u66f4\u51c6\u786e\u7684\u8bf4\uff0c\u201cnumber\u201d \u7c7b\u578b\u53ef\u4ee5\u5b58\u50a8\u66f4\u5927\u7684\u6574\u6570\uff08\u6700\u591a\u00a0<code>1.7976931348623157 * 10^308<\/code>\uff09\uff0c\u4f46\u8d85\u51fa\u5b89\u5168\u6574\u6570\u8303\u56f4\u00a0<code>\u00b1(2^53-1)<\/code>\u00a0\u4f1a\u51fa\u73b0\u7cbe\u5ea6\u95ee\u9898\uff0c\u56e0\u4e3a\u5e76\u975e\u6240\u6709\u6570\u5b57\u90fd\u9002\u5408\u56fa\u5b9a\u7684 64 \u4f4d\u5b58\u50a8\u3002\u56e0\u6b64\uff0c\u53ef\u80fd\u5b58\u50a8\u7684\u662f\u201c\u8fd1\u4f3c\u503c\u201d\u3002<\/p>\n<p><code>BigInt<\/code>\u00a0\u7c7b\u578b\u662f\u6700\u8fd1\u88ab\u6dfb\u52a0\u5230 JavaScript \u8bed\u8a00\u4e2d\u7684\uff0c\u7528\u4e8e\u8868\u793a\u4efb\u610f\u957f\u5ea6\u7684\u6574\u6570\u3002<br \/>\n\u53ef\u4ee5\u901a\u8fc7\u5c06\u00a0<code>n<\/code>\u00a0\u9644\u52a0\u5230\u6574\u6570\u5b57\u6bb5\u7684\u672b\u5c3e\u6765\u521b\u5efa\u00a0<code>BigInt<\/code>\u00a0\u503c\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ \u5c3e\u90e8\u7684 &quot;n&quot; \u8868\u793a\u8fd9\u662f\u4e00\u4e2a BigInt \u7c7b\u578b\nconst bigInt = 1234567890123456789012345678901234567890n;\n<\/code><\/pre>\n<h4>String<\/h4>\n<p>\u5728 JavaScript \u4e2d\uff0c\u6709\u4e09\u79cd\u5305\u542b\u5b57\u7b26\u4e32\u7684\u65b9\u5f0f\u3002<\/p>\n<ol>\n<li>\u53cc\u5f15\u53f7\uff1a<code>&quot;Hello&quot;<\/code>.<\/li>\n<li>\u5355\u5f15\u53f7\uff1a<code>'Hello'<\/code>.<\/li>\n<li>\u53cd\u5f15\u53f7\uff1a<code>`Hello`<\/code>.<br \/>\n\u53cc\u5f15\u53f7\u548c\u5355\u5f15\u53f7\u90fd\u662f\u201c\u7b80\u5355\u201d\u5f15\u7528\uff0c\u5728 JavaScript \u4e2d\u4e24\u8005\u51e0\u4e4e\u6ca1\u6709\u4ec0\u4e48\u5dee\u522b\u3002<br \/>\n\u53cd\u5f15\u53f7\u662f\u00a0<strong>\u529f\u80fd\u6269\u5c55<\/strong>\u00a0\u5f15\u53f7\u3002\u5b83\u4eec\u5141\u8bb8\u6211\u4eec\u901a\u8fc7\u5c06\u53d8\u91cf\u548c\u8868\u8fbe\u5f0f\u5305\u88c5\u5728\u00a0<code>${\u2026}<\/code>\u00a0\u4e2d\uff0c\u6765\u5c06\u5b83\u4eec\u5d4c\u5165\u5230\u5b57\u7b26\u4e32\u4e2d\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-js\">let name = &quot;Levin&quot;;\nalert(`Hello, ${name}!`);\n<\/code><\/pre>\n<blockquote>\n<p>JavaScript \u4e2d\u6ca1\u6709\u00a0<em>character<\/em>\u00a0\u7c7b\u578b\u3002<br \/>\n\u5728\u4e00\u4e9b\u8bed\u8a00\u4e2d\uff0c\u5355\u4e2a\u5b57\u7b26\u6709\u4e00\u4e2a\u7279\u6b8a\u7684 \u201ccharacter\u201d \u7c7b\u578b\uff0c\u5728 C \u8bed\u8a00\u548c Java \u8bed\u8a00\u4e2d\u88ab\u79f0\u4e3a \u201cchar\u201d\u3002<br \/>\n\u5728 JavaScript \u4e2d\u6ca1\u6709\u8fd9\u79cd\u7c7b\u578b\u3002\u53ea\u6709\u4e00\u79cd\u00a0<code>string<\/code>\u00a0\u7c7b\u578b\uff0c\u4e00\u4e2a\u5b57\u7b26\u4e32\u53ef\u4ee5\u5305\u542b\u96f6\u4e2a\uff08\u4e3a\u7a7a\uff09\u3001\u4e00\u4e2a\u6216\u591a\u4e2a\u5b57\u7b26\u3002<\/p>\n<\/blockquote>\n<h4>Boolean<\/h4>\n<p>\u5e03\u5c14\u503c\u4e5f\u53ef\u4f5c\u4e3a\u6bd4\u8f83\u7684\u7ed3\u679c<\/p>\n<pre><code class=\"language-js\">let isGreater = 4 &gt; 1;\n<\/code><\/pre>\n<h4>Null<\/h4>\n<p>\u7279\u6b8a\u7684\u00a0<code>null<\/code>\u00a0\u503c\u4e0d\u5c5e\u4e8e\u4e0a\u8ff0\u4efb\u4f55\u4e00\u79cd\u7c7b\u578b\u3002<br \/>\n\u5b83\u6784\u6210\u4e86\u4e00\u4e2a\u72ec\u7acb\u7684\u7c7b\u578b\uff0c\u53ea\u5305\u542b\u00a0<code>null<\/code>\u00a0\u503c<br \/>\n\u76f8\u6bd4\u8f83\u4e8e\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\uff0cJavaScript \u4e2d\u7684\u00a0<code>null<\/code>\u00a0<strong>\u4e0d\u662f<\/strong>\u4e00\u4e2a\u201c\u5bf9\u4e0d\u5b58\u5728\u7684\u00a0<code>object<\/code>\u00a0\u7684\u5f15\u7528\u201d\u6216\u8005 \u201cnull \u6307\u9488\u201d\u3002<br \/>\nJavaScript \u4e2d\u7684\u00a0<code>null<\/code>\u00a0\u4ec5\u4ec5\u662f\u4e00\u4e2a\u4ee3\u8868\u201c\u65e0\u201d\u3001\u201c\u7a7a\u201d\u6216\u201c\u503c\u672a\u77e5\u201d\u7684\u7279\u6b8a\u503c\u3002<\/p>\n<h4>Undefined<\/h4>\n<p>\u7279\u6b8a\u503c\u00a0<code>undefined<\/code>\u00a0\u548c\u00a0<code>null<\/code>\u00a0\u4e00\u6837\u81ea\u6210\u7c7b\u578b\u3002<br \/>\n<code>undefined<\/code>\u00a0\u7684\u542b\u4e49\u662f\u00a0<code>\u672a\u88ab\u8d4b\u503c<\/code>\u3002<br \/>\n\u5982\u679c\u4e00\u4e2a\u53d8\u91cf\u5df2\u88ab\u58f0\u660e\uff0c\u4f46\u672a\u88ab\u8d4b\u503c\uff0c\u90a3\u4e48\u5b83\u7684\u503c\u5c31\u662f\u00a0<code>undefined<\/code><\/p>\n<pre><code class=\"language-js\">let age;\nalert(age); \/\/ \u5f39\u51fa &quot;undefined&quot;\n<\/code><\/pre>\n<p>\u4ece\u6280\u672f\u4e0a\u8bb2\uff0c\u53ef\u4ee5\u663e\u5f0f\u5730\u5c06\u00a0<code>undefined<\/code>\u00a0\u8d4b\u503c\u7ed9\u53d8\u91cf\u2026\u2026\u4f46\u662f\u4e0d\u5efa\u8bae\u8fd9\u6837\u505a\u3002\u901a\u5e38\uff0c\u4f7f\u7528\u00a0<code>null<\/code>\u00a0\u5c06\u4e00\u4e2a\u201c\u7a7a\u201d\u6216\u8005\u201c\u672a\u77e5\u201d\u7684\u503c\u5199\u5165\u53d8\u91cf\u4e2d\uff0c\u800c\u00a0<code>undefined<\/code>\u00a0\u5219\u4fdd\u7559\u4f5c\u4e3a\u672a\u8fdb\u884c\u521d\u59cb\u5316\u7684\u4e8b\u7269\u7684\u9ed8\u8ba4\u521d\u59cb\u503c\u3002<\/p>\n<h4>Object Symbol<\/h4>\n<p><code>object<\/code>\u00a0\u7c7b\u578b\u662f\u4e00\u4e2a\u7279\u6b8a\u7684\u7c7b\u578b\u3002<br \/>\n\u5176\u4ed6\u6240\u6709\u7684\u6570\u636e\u7c7b\u578b\u90fd\u88ab\u79f0\u4e3a\u201c\u539f\u59cb\u7c7b\u578b\u201d\uff0c\u56e0\u4e3a\u5b83\u4eec\u7684\u503c\u53ea\u5305\u542b\u4e00\u4e2a\u5355\u72ec\u7684\u5185\u5bb9\uff08\u5b57\u7b26\u4e32\u3001\u6570\u5b57\u6216\u8005\u5176\u4ed6\uff09\u3002\u76f8\u53cd\uff0c<code>object<\/code>\u00a0\u5219\u7528\u4e8e\u50a8\u5b58\u6570\u636e\u96c6\u5408\u548c\u66f4\u590d\u6742\u7684\u5b9e\u4f53\u3002<\/p>\n<p><code>symbol<\/code>\u00a0\u7c7b\u578b\u7528\u4e8e\u521b\u5efa\u5bf9\u8c61\u7684\u552f\u4e00\u6807\u8bc6\u7b26\u3002\u6211\u4eec\u5728\u8fd9\u91cc\u63d0\u5230\u00a0<code>symbol<\/code>\u00a0\u7c7b\u578b\u662f\u4e3a\u4e86\u5b8c\u6574\u6027\uff0c\u4f46\u6211\u4eec\u8981\u5728\u5b66\u5b8c\u00a0<code>object<\/code>\u00a0\u7c7b\u578b\u540e\u518d\u5b66\u4e60\u5b83\u3002<\/p>\n<h4>typeof \u8fd0\u7b97\u7b26<\/h4>\n<p>typeof x | typeof(x)<\/p>\n<blockquote>\n<p><code>typeof null<\/code>\u00a0\u7684\u7ed3\u679c\u4e3a\u00a0<code>&quot;object&quot;<\/code>\u3002\u8fd9\u662f\u5b98\u65b9\u627f\u8ba4\u7684\u00a0<code>typeof<\/code>\u00a0\u7684\u9519\u8bef\uff0c\u8fd9\u4e2a\u95ee\u9898\u6765\u81ea\u4e8e JavaScript \u8bed\u8a00\u7684\u65e9\u671f\u9636\u6bb5\uff0c\u5e76\u4e3a\u4e86\u517c\u5bb9\u6027\u800c\u4fdd\u7559\u4e86\u4e0b\u6765\u3002<code>null<\/code>\u00a0\u7edd\u5bf9\u4e0d\u662f\u4e00\u4e2a\u00a0<code>object<\/code>\u3002<code>null<\/code>\u00a0\u6709\u81ea\u5df1\u7684\u7c7b\u578b\uff0c\u5b83\u662f\u4e00\u4e2a\u7279\u6b8a\u503c\u3002<code>typeof<\/code>\u00a0\u7684\u884c\u4e3a\u5728\u8fd9\u91cc\u662f\u9519\u8bef\u7684\u3002<\/p>\n<p><code>typeof alert<\/code>\u00a0\u7684\u7ed3\u679c\u662f\u00a0<code>&quot;function&quot;<\/code>\uff0c\u56e0\u4e3a\u00a0<code>alert<\/code>\u00a0\u5728 JavaScript \u8bed\u8a00\u4e2d\u662f\u4e00\u4e2a\u51fd\u6570\u3002\u5728 JavaScript \u8bed\u8a00\u4e2d\u6ca1\u6709\u4e00\u4e2a\u7279\u522b\u7684 \u201cfunction\u201d \u7c7b\u578b\u3002\u51fd\u6570\u96b6\u5c5e\u4e8e\u00a0<code>object<\/code>\u00a0\u7c7b\u578b\u3002\u4f46\u662f\u00a0<code>typeof<\/code>\u00a0\u4f1a\u5bf9\u51fd\u6570\u533a\u5206\u5bf9\u5f85\uff0c\u5e76\u8fd4\u56de\u00a0<code>&quot;function&quot;<\/code>\u3002\u8fd9\u4e5f\u662f\u6765\u81ea\u4e8e JavaScript \u8bed\u8a00\u65e9\u671f\u7684\u95ee\u9898\u3002\u4ece\u6280\u672f\u4e0a\u8bb2\uff0c\u8fd9\u79cd\u884c\u4e3a\u662f\u4e0d\u6b63\u786e\u7684\uff0c\u4f46\u5728\u5b9e\u9645\u7f16\u7a0b\u4e2d\u5374\u975e\u5e38\u65b9\u4fbf\u3002<\/p>\n<\/blockquote>\n<h3>\u4ea4\u4e92 alert prompt confirm<\/h3>\n<h4>alert<\/h4>\n<p>\u5b83\u4f1a\u663e\u793a\u4e00\u6761\u4fe1\u606f\uff0c\u5e76\u7b49\u5f85\u7528\u6237\u6309\u4e0b \u201cOK\u201d\u3002<br \/>\n\u4f8b\u5982\uff1a<br \/>\n<code>alert(&quot;Hello&quot;);<\/code><br \/>\n\u5f39\u51fa\u7684\u8fd9\u4e2a\u5e26\u6709\u4fe1\u606f\u7684\u5c0f\u7a97\u53e3\u88ab\u79f0\u4e3a\u00a0<strong>\u6a21\u6001\u7a97<\/strong>\u3002\u201cmodal\u201d \u610f\u5473\u7740\u7528\u6237\u4e0d\u80fd\u4e0e\u9875\u9762\u7684\u5176\u4ed6\u90e8\u5206\uff08\u4f8b\u5982\u70b9\u51fb\u5176\u4ed6\u6309\u94ae\u7b49\uff09\u8fdb\u884c\u4ea4\u4e92\uff0c\u76f4\u5230\u4ed6\u4eec\u5904\u7406\u5b8c\u7a97\u53e3\u3002\u5728\u4e0a\u9762\u793a\u4f8b\u8fd9\u79cd\u60c5\u51b5\u4e0b \u2014\u2014 \u76f4\u5230\u7528\u6237\u70b9\u51fb\u201c\u786e\u5b9a\u201d\u6309\u94ae\u3002<\/p>\n<h4>prompt<\/h4>\n<p><code>prompt<\/code>\u00a0\u51fd\u6570\u63a5\u6536\u4e24\u4e2a\u53c2\u6570\uff1a<br \/>\n<code>result = prompt(title, [default]);<\/code><br \/>\n\u6d4f\u89c8\u5668\u4f1a\u663e\u793a\u4e00\u4e2a\u5e26\u6709\u6587\u672c\u6d88\u606f\u7684\u6a21\u6001\u7a97\u53e3\uff0c\u8fd8\u6709 input \u6846\u548c\u786e\u5b9a\/\u53d6\u6d88\u6309\u94ae\u3002<br \/>\n<code>title<\/code><br \/>\n\u663e\u793a\u7ed9\u7528\u6237\u7684\u6587\u672c<br \/>\n<code>default<\/code><br \/>\n\u53ef\u9009\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\uff0c\u6307\u5b9a input \u6846\u7684\u521d\u59cb\u503c\u3002<\/p>\n<blockquote>\n<p>\u4e0a\u8ff0\u8bed\u6cd5\u4e2d\u00a0<code>default<\/code>\u00a0\u5468\u56f4\u7684\u65b9\u62ec\u53f7\u8868\u793a\u8be5\u53c2\u6570\u662f\u53ef\u9009\u7684\uff0c\u4e0d\u662f\u5fc5\u9700\u7684\u3002<\/p>\n<\/blockquote>\n<p>\u8bbf\u95ee\u8005\u53ef\u4ee5\u5728\u63d0\u793a\u8f93\u5165\u680f\u4e2d\u8f93\u5165\u4e00\u4e9b\u5185\u5bb9\uff0c\u7136\u540e\u6309\u201c\u786e\u5b9a\u201d\u952e\u3002\u7136\u540e\u6211\u4eec\u5728\u00a0<code>result<\/code>\u00a0\u4e2d\u83b7\u53d6\u8be5\u6587\u672c\u3002\u6216\u8005\u4ed6\u4eec\u53ef\u4ee5\u6309\u53d6\u6d88\u952e\u6216\u6309\u00a0Esc\u00a0\u952e\u53d6\u6d88\u8f93\u5165\uff0c\u7136\u540e\u6211\u4eec\u5f97\u5230\u00a0<code>null<\/code>\u00a0\u4f5c\u4e3a\u00a0<code>result<\/code>\u3002<\/p>\n<blockquote>\n<p>IE \u6d4f\u89c8\u5668\u4f1a\u63d0\u4f9b\u9ed8\u8ba4\u503c<br \/>\n\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u53ef\u9009\u7684\u3002\u4f46\u662f\u5982\u679c\u6211\u4eec\u4e0d\u63d0\u4f9b\u7684\u8bdd\uff0cInternet Explorer \u4f1a\u628a\u00a0<code>&quot;undefined&quot;<\/code>\u00a0\u63d2\u5165\u5230 prompt\u3002<br \/>\n\u6240\u4ee5\uff0c\u4e3a\u4e86 prompt \u5728 IE \u4e2d\u6709\u597d\u7684\u6548\u679c\uff0c\u6211\u4eec\u5efa\u8bae\u59cb\u7ec8\u63d0\u4f9b\u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let test = prompt(&quot;test&quot;, '');\n<\/code><\/pre>\n<h4>confirm<\/h4>\n<p>\u8bed\u6cd5\uff1a<br \/>\n<code>result = confirm(question);<\/code><br \/>\n<code>confirm<\/code>\u00a0\u51fd\u6570\u663e\u793a\u4e00\u4e2a\u5e26\u6709\u00a0<code>question<\/code>\u00a0\u4ee5\u53ca\u786e\u5b9a\u548c\u53d6\u6d88\u4e24\u4e2a\u6309\u94ae\u7684\u6a21\u6001\u7a97\u53e3\u3002<br \/>\n\u70b9\u51fb\u786e\u5b9a\u8fd4\u56de\u00a0<code>true<\/code>\uff0c\u70b9\u51fb\u53d6\u6d88\u8fd4\u56de\u00a0<code>false<\/code>\u3002<\/p>\n<p>\u8fd9\u4e9b\u65b9\u6cd5\u90fd\u662f\u6a21\u6001\u7684\uff1a\u5b83\u4eec\u6682\u505c\u811a\u672c\u7684\u6267\u884c\uff0c\u5e76\u4e14\u4e0d\u5141\u8bb8\u7528\u6237\u4e0e\u8be5\u9875\u9762\u7684\u5176\u4f59\u90e8\u5206\u8fdb\u884c\u4ea4\u4e92\uff0c\u76f4\u5230\u7a97\u53e3\u88ab\u89e3\u9664\u3002<br \/>\n\u4e0a\u8ff0\u6240\u6709\u65b9\u6cd5\u5171\u6709\u4e24\u4e2a\u9650\u5236\uff1a<\/p>\n<ol>\n<li>\u6a21\u6001\u7a97\u53e3\u7684\u786e\u5207\u4f4d\u7f6e\u7531\u6d4f\u89c8\u5668\u51b3\u5b9a\u3002\u901a\u5e38\u5728\u9875\u9762\u4e2d\u5fc3\u3002<\/li>\n<li>\u7a97\u53e3\u7684\u786e\u5207\u5916\u89c2\u4e5f\u53d6\u51b3\u4e8e\u6d4f\u89c8\u5668\u3002\u6211\u4eec\u4e0d\u80fd\u4fee\u6539\u5b83\u3002<\/li>\n<\/ol>\n<h3>\u7c7b\u578b\u8f6c\u6362<\/h3>\n<p>\u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u8fd0\u7b97\u7b26\u548c\u51fd\u6570\u4f1a\u81ea\u52a8\u5c06\u8d4b\u4e88\u5b83\u4eec\u7684\u503c\u8f6c\u6362\u4e3a\u6b63\u786e\u7684\u7c7b\u578b\u3002<\/p>\n<blockquote>\n<p>\u503c\u5f97\u6ce8\u610f\uff1a<\/p>\n<ul>\n<li>\u5bf9\u00a0<code>undefined<\/code>\u00a0\u8fdb\u884c\u6570\u5b57\u578b\u8f6c\u6362\u65f6\uff0c\u8f93\u51fa\u7ed3\u679c\u4e3a\u00a0<code>NaN<\/code>\uff0c\u800c\u975e\u00a0<code>0<\/code>\u3002<\/li>\n<li>\u5bf9\u00a0<code>&quot;0&quot;<\/code>\u00a0\u548c\u53ea\u6709\u7a7a\u683c\u7684\u5b57\u7b26\u4e32\uff08\u6bd4\u5982\uff1a<code>&quot; &quot;<\/code>\uff09\u8fdb\u884c\u5e03\u5c14\u578b\u8f6c\u6362\u65f6\uff0c\u8f93\u51fa\u7ed3\u679c\u4e3a\u00a0<code>true<\/code>\u3002<\/li>\n<\/ul>\n<\/blockquote>\n<h4>\u5b57\u7b26\u4e32<\/h4>\n<p><code>alert()<\/code>\u4f1a\u5c06\u81ea\u52a8\u8fdb\u884c\u5b57\u7b26\u4e32\u8f6c\u6362\u3002<\/p>\n<pre><code class=\"language-js\">value = String(value); \n<\/code><\/pre>\n<p><code>false<\/code>\u00a0\u53d8\u6210\u00a0<code>&quot;false&quot;<\/code>\uff0c<code>null<\/code>\u00a0\u53d8\u6210\u00a0<code>&quot;null&quot;<\/code><\/p>\n<h4>\u6570\u5b57<\/h4>\n<p>\u5728\u7b97\u672f\u51fd\u6570\u548c\u8868\u8fbe\u5f0f\u4e2d\uff0c\u4f1a\u81ea\u52a8\u8fdb\u884c number \u7c7b\u578b\u8f6c\u6362\u3002<\/p>\n<pre><code class=\"language-js\">num = Number(str);\n<\/code><\/pre>\n<p>\u5982\u679c\u8be5\u5b57\u7b26\u4e32\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u6570\u5b57\uff0c\u8f6c\u6362\u7684\u7ed3\u679c\u4f1a\u662f<code>NaN<\/code>\u3002<br \/>\n\u8f6c\u6362\u89c4\u5219<\/p>\n<table>\n<thead>\n<tr>\n<th>\u503c<\/th>\n<th>\u53d8\u6210\u2026\u2026<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>undefined<\/code><\/td>\n<td><code>NaN<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>null<\/code><\/td>\n<td><code>0<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>true\u00a0\u548c\u00a0false<\/code><\/td>\n<td><code>1<\/code>\u00a0and\u00a0<code>0<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>string<\/code><\/td>\n<td>\u53bb\u6389\u9996\u5c3e\u7a7a\u767d\u5b57\u7b26\uff08\u7a7a\u683c\u3001\u6362\u884c\u7b26\u00a0<code>\\n<\/code>\u3001\u5236\u8868\u7b26\u00a0<code>\\t<\/code>\u00a0\u7b49\uff09\u540e\u7684\u7eaf\u6570\u5b57\u5b57\u7b26\u4e32\u4e2d\u542b\u6709\u7684\u6570\u5b57\u3002\u5982\u679c\u5269\u4f59\u5b57\u7b26\u4e32\u4e3a\u7a7a\uff0c\u5219\u8f6c\u6362\u7ed3\u679c\u4e3a\u00a0<code>0<\/code>\u3002\u5426\u5219\uff0c\u5c06\u4f1a\u4ece\u5269\u4f59\u5b57\u7b26\u4e32\u4e2d\u201c\u8bfb\u53d6\u201d\u6570\u5b57\u3002\u5f53\u7c7b\u578b\u8f6c\u6362\u51fa\u73b0 error \u65f6\u8fd4\u56de\u00a0<code>NaN<\/code>\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-js\">alert( Number(&quot;   123   &quot;) ); \/\/ 123\n\/\/ NaN\uff08\u4ece\u5b57\u7b26\u4e32\u201c\u8bfb\u53d6\u201d\u6570\u5b57\uff0c\u8bfb\u5230 &quot;z&quot; \u65f6\u51fa\u73b0\u9519\u8bef\uff0c\u8fd4\u56deNaN\uff09\nalert( Number(&quot;123z&quot;) );\n<\/code><\/pre>\n<h4>\u5e03\u5c14\u578b<\/h4>\n<p>\u53d1\u751f\u5728\u903b\u8f91\u8fd0\u7b97\u4e2d\uff08\u6761\u4ef6\u5224\u65ad\u548c\u5176\u4ed6\u7c7b\u4f3c\u7684\u4e1c\u897f\uff09<br \/>\n\u8f6c\u6362\u89c4\u5219<\/p>\n<ul>\n<li>\u76f4\u89c2\u4e0a\u4e3a\u201c\u7a7a\u201d\u7684\u503c\uff08\u5982\u00a0<code>0<\/code>\u3001\u7a7a\u5b57\u7b26\u4e32\u3001<code>null<\/code>\u3001<code>undefined<\/code>\u00a0\u548c\u00a0<code>NaN<\/code>\uff09\u5c06\u53d8\u4e3a\u00a0<code>false<\/code>\u3002<\/li>\n<li>\u5176\u4ed6\u503c\u53d8\u6210\u00a0<code>true<\/code>\u3002<br \/>\n<strong>\u6ce8\u610f\uff01<\/strong><br \/>\n\u5b57\u7b26\u4e32&quot;0&quot;\uff0c&quot; &quot;\u662ftrue\uff0c\u5728 JavaScript \u4e2d\uff0c\u975e\u7a7a\u7684\u5b57\u7b26\u4e32\u603b\u662f\u00a0<code>true<\/code>\u3002<\/li>\n<\/ul>\n<h3>\u8fd0\u7b97\u7b26<\/h3>\n<p>\u548cpython\u5dee\u4e0d\u591a\uff0c<br \/>\n\u53d6\u4f59<code>%<\/code>,\u6c42\u5e42\u00a0<code>**<\/code>\u3002<br \/>\n<code>+<\/code>\u53ef\u4ee5\u8fde\u63a5\u5b57\u7b26\u4e32\uff08\u53ea\u8981\u6709\u4e00\u8fb9\u662fstring\u53e6\u4e00\u8fb9\u4e5f\u4f1a\u8f6c\u6362\u4e3astring\uff0c\u4ec5\u52a0\u6cd5\u4f1a\u8fd9\u6837\u8f6c\u6362\uff09(*\u4e0d\u53ef\u4ee5\u7528\u4e8e\u91cd\u590d\u5b57\u7b26\u4e32)<br \/>\n<code>+<\/code>\u53ef\u4ee5\u7528\u4e8e\u8f6c\u6362\u6570\u5b57<\/p>\n<pre><code class=\"language-js\">y = +true; \/\/ 1\n<\/code><\/pre>\n<p>\u6839\u636e\u4ee5\u4e0a\u7279\u6027\uff0c\u6709\u4e9b\u60c5\u51b5\u4e0b\u987b\u8fd9\u6837\u4f7f\u7528\uff1a<\/p>\n<pre><code class=\"language-js\">\/\/ apples:&quot;2&quot; oranges:&quot;3&quot;\n+apples + +oranges\n<\/code><\/pre>\n<p>\u7b49\u53f7\u8fd0\u7b97\u7b26\uff0c\u8fd4\u56de\u53f3\u8fb9\u7684\u503c\uff08\u77e5\u9053\u5373\u53ef\uff0c\u5c11\u5199\uff09<\/p>\n<pre><code class=\"language-js\">let a = 1;\nlet b = 2;\nlet c = 3 - (a = b + 1);\n\/\/c = 0\n<\/code><\/pre>\n<p>\u94fe\u5f0f\u8d4b\u503c<\/p>\n<pre><code class=\"language-js\">a = b = c = 2 + 2;\/\/a = b = c = 4\n<\/code><\/pre>\n<p>\u4f4d\u8fd0\u7b97\u7b26\u628a\u8fd0\u7b97\u5143\u5f53\u505a 32 \u4f4d\u6574\u6570\uff0c\u5e76\u5728\u5b83\u4eec\u7684\u4e8c\u8fdb\u5236\u8868\u73b0\u5f62\u5f0f\u4e0a\u64cd\u4f5c\u3002<br \/>\n\u8fd9\u4e9b\u8fd0\u7b97\u7b26\u4e0d\u662f JavaScript \u7279\u6709\u7684\u3002\u5927\u90e8\u5206\u7684\u7f16\u7a0b\u8bed\u8a00\u90fd\u652f\u6301\u8fd9\u4e9b\u8fd0\u7b97\u7b26\u3002<br \/>\n\u4e0b\u9762\u662f\u4f4d\u8fd0\u7b97\u7b26\uff1a<\/p>\n<ul>\n<li>\u6309\u4f4d\u4e0e (\u00a0<code>&amp;<\/code>\u00a0)<\/li>\n<li>\u6309\u4f4d\u6216 (\u00a0<code>|<\/code>\u00a0)<\/li>\n<li>\u6309\u4f4d\u5f02\u6216 (\u00a0<code>^<\/code>\u00a0)<\/li>\n<li>\u6309\u4f4d\u975e (\u00a0<code>~<\/code>\u00a0)<\/li>\n<li>\u5de6\u79fb (\u00a0<code>&lt;&lt;<\/code>\u00a0)<\/li>\n<li>\u53f3\u79fb (\u00a0<code>&gt;&gt;<\/code>\u00a0)<\/li>\n<li>\u65e0\u7b26\u53f7\u53f3\u79fb (\u00a0<code>&gt;&gt;&gt;<\/code>\u00a0)<br \/>\n\u8fd9\u4e9b\u8fd0\u7b97\u7b26\u5f88\u5c11\u88ab\u4f7f\u7528<\/li>\n<\/ul>\n<p>\u9017\u53f7\u8fd0\u7b97\u7b26\u53ea\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c<br \/>\n\u8bf7\u6ce8\u610f\u9017\u53f7\u8fd0\u7b97\u7b26\u7684\u4f18\u5148\u7ea7\u975e\u5e38\u4f4e\uff0c\u6bd4\u00a0<code>=<\/code>\u00a0\u8fd8\u8981\u4f4e<\/p>\n<h4>\u903b\u8f91\u8fd0\u7b97\u7b26<\/h4>\n<h5>||<\/h5>\n<pre><code class=\"language-js\">result = value1 || value2 || value3;\n<\/code><\/pre>\n<p>\u6216\u8fd0\u7b97\u7b26\u00a0<code>||<\/code>\u00a0\u505a\u5982\u4e0b\u7684\u4e8b\u60c5\uff1a<\/p>\n<ul>\n<li>\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8ba1\u7b97\u64cd\u4f5c\u6570\u3002<\/li>\n<li>\u5904\u7406\u6bcf\u4e00\u4e2a\u64cd\u4f5c\u6570\u65f6\uff0c\u90fd\u5c06\u5176\u8f6c\u5316\u4e3a\u5e03\u5c14\u503c\u3002\u5982\u679c\u7ed3\u679c\u662f\u00a0<code>true<\/code>\uff0c\u5c31\u505c\u6b62\u8ba1\u7b97\uff0c\u8fd4\u56de\u8fd9\u4e2a\u64cd\u4f5c\u6570\u7684\u521d\u59cb\u503c\u3002<\/li>\n<li>\u5982\u679c\u6240\u6709\u7684\u64cd\u4f5c\u6570\u90fd\u88ab\u8ba1\u7b97\u8fc7\uff08\u4e5f\u5c31\u662f\uff0c\u8f6c\u6362\u7ed3\u679c\u90fd\u662f\u00a0<code>false<\/code>\uff09\uff0c\u5219\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u64cd\u4f5c\u6570\u3002<br \/>\n\u8fd4\u56de\u7684\u503c\u662f\u64cd\u4f5c\u6570\u7684\u521d\u59cb\u5f62\u5f0f\uff0c\u4e0d\u4f1a\u505a\u5e03\u5c14\u8f6c\u6362\u3002<br \/>\n\u6839\u636e\u4ee5\u4e0a\u7279\u6027\uff0c\u8bde\u751f\u4e86\u8bb8\u591a\u6709\u8da3\u7684\u7528\u6cd5<br \/>\n<strong>1. \u83b7\u53d6\u53d8\u91cf\u5217\u8868\u6216\u8005\u8868\u8fbe\u5f0f\u4e2d\u7684\u7b2c\u4e00\u4e2a\u771f\u503c<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-js\">let firstName = &quot;&quot;;\nlet lastName = &quot;&quot;;\nlet nickName = &quot;SuperCoder&quot;;\n\nalert( firstName || lastName || nickName || &quot;Anonymous&quot;);\n\/\/ SuperCoder\n<\/code><\/pre>\n<p><strong>2. \u77ed\u8def\u6c42\u503c\uff08Short-circuit evaluation\uff09<\/strong><br \/>\n\u6216\u8fd0\u7b97\u7b26\u00a0<code>||<\/code>\u00a0\u7684\u53e6\u4e00\u4e2a\u7528\u9014\u662f\u6240\u8c13\u7684\u201c\u77ed\u8def\u6c42\u503c\u201d\u3002<br \/>\n\u8fd9\u6307\u7684\u662f\uff0c<code>||<\/code>\u00a0\u5bf9\u5176\u53c2\u6570\u8fdb\u884c\u5904\u7406\uff0c\u76f4\u5230\u8fbe\u5230\u7b2c\u4e00\u4e2a\u771f\u503c\uff0c\u7136\u540e\u7acb\u5373\u8fd4\u56de\u8be5\u503c\uff0c\u800c\u65e0\u9700\u5904\u7406\u5176\u4ed6\u53c2\u6570\u3002<br \/>\n\u5982\u679c\u64cd\u4f5c\u6570\u4e0d\u4ec5\u4ec5\u662f\u4e00\u4e2a\u503c\uff0c\u800c\u662f\u4e00\u4e2a\u6709\u526f\u4f5c\u7528\u7684\u8868\u8fbe\u5f0f\uff0c\u4f8b\u5982\u53d8\u91cf\u8d4b\u503c\u6216\u51fd\u6570\u8c03\u7528\uff0c\u90a3\u4e48\u8fd9\u4e00\u7279\u6027\u7684\u91cd\u8981\u6027\u5c31\u53d8\u5f97\u663e\u800c\u6613\u89c1\u4e86\u3002<\/p>\n<pre><code class=\"language-js\">true || alert(&quot;not printed&quot;);\nfalse || alert(&quot;printed&quot;);\n<\/code><\/pre>\n<h5>&amp;&amp;<\/h5>\n<p><strong>\u7c7b\u4f3c\u5730\uff0c\u4e0e\u8fd0\u7b97\u7b26\u5bfb\u627e\u7b2c\u4e00\u4e2a\u5047\u503c<\/strong><br \/>\n\u4e0e\u8fd0\u7b97\u00a0<code>&amp;&amp;<\/code>\u00a0\u505a\u5982\u4e0b\u7684\u4e8b\uff1a<\/p>\n<ul>\n<li>\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u8ba1\u7b97\u64cd\u4f5c\u6570\u3002<\/li>\n<li>\u5728\u5904\u7406\u6bcf\u4e00\u4e2a\u64cd\u4f5c\u6570\u65f6\uff0c\u90fd\u5c06\u5176\u8f6c\u5316\u4e3a\u5e03\u5c14\u503c\u3002\u5982\u679c\u7ed3\u679c\u662f\u00a0<code>false<\/code>\uff0c\u5c31\u505c\u6b62\u8ba1\u7b97\uff0c\u5e76\u8fd4\u56de\u8fd9\u4e2a\u64cd\u4f5c\u6570\u7684\u521d\u59cb\u503c\u3002<\/li>\n<li>\u5982\u679c\u6240\u6709\u7684\u64cd\u4f5c\u6570\u90fd\u88ab\u8ba1\u7b97\u8fc7\uff08\u4f8b\u5982\u90fd\u662f\u771f\u503c\uff09\uff0c\u5219\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u64cd\u4f5c\u6570\u3002<\/li>\n<\/ul>\n<blockquote>\n<p>\u4e0e\u8fd0\u7b97\u00a0<code>&amp;&amp;<\/code>\u00a0\u5728\u6216\u8fd0\u7b97\u00a0<code>||<\/code>\u00a0\u4e4b\u524d\u8fdb\u884c<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u6700\u597d\u4e0d\u8981\u7528\u00a0<code>||<\/code>\u00a0\u6216\u00a0<code>&amp;&amp;<\/code>\u00a0\u6765\u53d6\u4ee3\u00a0<code>if<\/code><br \/>\n\u6709\u65f6\u5019\uff0c\u6709\u4eba\u4f1a\u5c06\u4e0e\u8fd0\u7b97\u7b26\u00a0<code>&amp;&amp;<\/code>\u00a0\u4f5c\u4e3a\u201c\u7b80\u5316\u00a0<code>if<\/code>\u201d\u7684\u4e00\u79cd\u65b9\u5f0f\u3002<\/p>\n<\/blockquote>\n<h5>\uff01<\/h5>\n<p>\u4e24\u4e2a\u975e\u8fd0\u7b97\u00a0<code>!!<\/code>\u00a0\u6709\u65f6\u5019\u7528\u6765\u5c06\u67d0\u4e2a\u503c\u8f6c\u5316\u4e3a\u5e03\u5c14\u7c7b\u578b<\/p>\n<h5>\u7a7a\u503c\u5408\u5e76\u8fd0\u7b97\u7b26 '??'<\/h5>\n<p>\u5f53\u4e00\u4e2a\u503c\u65e2\u4e0d\u662f\u00a0<code>null<\/code>\u00a0\u4e5f\u4e0d\u662f\u00a0<code>undefined<\/code>\u00a0\u65f6\uff0c\u6211\u4eec\u5c06\u5176\u79f0\u4e3a\u201c\u5df2\u5b9a\u4e49\u7684\uff08defined\uff09\u201d\u3002<\/p>\n<ul>\n<li><code>??<\/code>\u00a0\u8fd4\u56de\u7b2c\u4e00\u4e2a\u00a0<strong>\u5df2\u5b9a\u4e49\u7684<\/strong>\u00a0\u503c\u3002\u4e00\u79cd\u83b7\u5f97\u4e24\u8005\u4e2d\u7684\u7b2c\u4e00\u4e2a\u201c\u5df2\u5b9a\u4e49\u7684\u201d\u503c\u7684\u4e0d\u9519\u7684\u8bed\u6cd5\u3002<br \/>\n<code>??<\/code>\u00a0\u7684\u5e38\u89c1\u4f7f\u7528\u573a\u666f\u662f\u63d0\u4f9b\u9ed8\u8ba4\u503c\u3002<\/li>\n<\/ul>\n<blockquote>\n<ul>\n<li><code>||<\/code>\u00a0\u8fd4\u56de\u7b2c\u4e00\u4e2a\u00a0<strong>\u771f<\/strong>\u00a0\u503c\u3002<\/li>\n<li><code>??<\/code>\u00a0\u8fd4\u56de\u7b2c\u4e00\u4e2a\u00a0<strong>\u5df2\u5b9a\u4e49\u7684<\/strong>\u00a0\u503c\u3002<\/li>\n<\/ul>\n<\/blockquote>\n<p>\u51fa\u4e8e\u5b89\u5168\u539f\u56e0\uff0cJavaScript \u7981\u6b62\u5c06\u00a0<code>??<\/code>\u00a0\u8fd0\u7b97\u7b26\u4e0e\u00a0<code>&amp;&amp;<\/code>\u00a0\u548c\u00a0<code>||<\/code>\u00a0\u8fd0\u7b97\u7b26\u4e00\u8d77\u4f7f\u7528\uff0c\u9664\u975e\u4f7f\u7528\u62ec\u53f7\u660e\u786e\u6307\u5b9a\u4e86\u4f18\u5148\u7ea7\u3002\u4f1a\u89e6\u53d1\u8bed\u6cd5\u9519\u8bef\u3002<\/p>\n<h3>\u6bd4\u8f83\uff08\u6761\u4ef6\u5224\u65ad\uff09<\/h3>\n<p>try<\/p>\n<pre><code class=\"language-js\">5 &gt; 4 \u2192 true\n&quot;apple&quot; &gt; &quot;pineapple&quot; \u2192 false\n&quot;2&quot; &gt; &quot;12&quot; \u2192 true\nundefined == null \u2192 true\nundefined === null \u2192 false\nnull == &quot;\\n0\\n&quot; \u2192 false\nnull === +&quot;\\n0\\n&quot; \u2192 false\n<\/code><\/pre>\n<p>throw<\/p>\n<ol>\n<li>\u6570\u5b57\u95f4\u6bd4\u8f83\u5927\u5c0f\uff0c\u663e\u7136\u5f97 true\u3002<\/li>\n<li>\u6309\u8bcd\u5178\u987a\u5e8f\u6bd4\u8f83\uff0c\u5f97 false\u3002<code>&quot;a&quot;<\/code>\u00a0\u6bd4\u00a0<code>&quot;p&quot;<\/code>\u00a0\u5c0f\u3002<\/li>\n<li>\u4e0e\u7b2c 2 \u9898\u540c\u7406\uff0c\u9996\u4f4d\u5b57\u7b26\u00a0<code>&quot;2&quot;<\/code>\u00a0\u5927\u4e8e\u00a0<code>&quot;1&quot;<\/code>\u3002<\/li>\n<li><code>null<\/code>\u00a0\u53ea\u4e0e\u00a0<code>undefined<\/code>\u00a0\u4e92\u7b49\u3002<\/li>\n<li>\u4e25\u683c\u76f8\u7b49\u6a21\u5f0f\u4e0b\uff0c\u7c7b\u578b\u4e0d\u540c\u5f97 false\u3002<\/li>\n<li>\u4e0e\u7b2c 4 \u9898\u540c\u7406\uff0c<code>null<\/code>\u00a0\u53ea\u4e0e\u00a0<code>undefined<\/code>\u00a0\u76f8\u7b49\u3002<\/li>\n<li>\u4e0d\u540c\u7c7b\u578b\u4e25\u683c\u4e0d\u76f8\u7b49\u3002<\/li>\n<\/ol>\n<p>memes:<br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240419165200.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240419165200.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"Pasted image 20240419165200.png\"><\/div><br \/>\n\u6709\u70b9\u4e1c\u897f|\u6ca1\u4e86\u4e1c\u897f<br \/>\n\u6ca1\u653e\u4e1c\u897f|\u5565\u4e1c\u897f\uff1f<\/p>\n<p>\u548cc\u7cfb\u4ee3\u7801\u7c7b\u4f3c<\/p>\n<p>\u5b57\u7b26\u4e32\u6bd4\u8f83\uff0c\u5b57\u5178\u5e8f\uff08\u51c6\u786e\u8bf4\u662fUnicode \u7f16\u7801\u987a\u5e8f\uff09<\/p>\n<p><strong>\u4e0d\u540c\u7c7b\u578b<\/strong>\u6bd4\u8f83\uff0c\u5c06\u4f1a\u8f6c\u6362\u4e3anumber<\/p>\n<blockquote>\n<p>\u4e00\u4e2a\u6709\u8da3\u7684\u73b0\u8c61<br \/>\n\u6709\u65f6\u5019\uff0c\u4ee5\u4e0b\u4e24\u79cd\u60c5\u51b5\u4f1a\u540c\u65f6\u53d1\u751f\uff1a<\/p>\n<ul>\n<li>\u82e5\u76f4\u63a5\u6bd4\u8f83\u4e24\u4e2a\u503c\uff0c\u5176\u7ed3\u679c\u662f\u76f8\u7b49\u7684\u3002<\/li>\n<li>\u82e5\u628a\u4e24\u4e2a\u503c\u8f6c\u4e3a\u5e03\u5c14\u503c\uff0c\u5b83\u4eec\u53ef\u80fd\u5f97\u51fa\u5b8c\u5168\u76f8\u53cd\u7684\u7ed3\u679c\uff0c\u5373\u4e00\u4e2a\u662f\u00a0<code>true<\/code>\uff0c\u4e00\u4e2a\u662f\u00a0<code>false<\/code>\u3002<\/li>\n<li>\u4f8b\u5982\uff1a<\/li>\n<\/ul>\n<\/blockquote>\n<pre><code class=\"language-js\">let a = 0;\nalert( Boolean(a) ); \/\/ false\n\nlet b = &quot;0&quot;;\nalert( Boolean(b) ); \/\/ true\n\nalert(a == b); \/\/ true!\n<\/code><\/pre>\n<blockquote>\n<p>\u5bf9\u4e8e JavaScript \u800c\u8a00\uff0c\u8fd9\u79cd\u73b0\u8c61\u5176\u5b9e\u633a\u6b63\u5e38\u7684\u3002\u56e0\u4e3a JavaScript \u4f1a\u628a\u5f85\u6bd4\u8f83\u7684\u503c\u8f6c\u5316\u4e3a\u6570\u5b57\u540e\u518d\u505a\u6bd4\u8f83\uff08\u56e0\u6b64\u00a0<code>&quot;0&quot;<\/code>\u00a0\u53d8\u6210\u4e86\u00a0<code>0<\/code>\uff09\u3002\u82e5\u53ea\u662f\u5c06\u4e00\u4e2a\u53d8\u91cf\u8f6c\u5316\u4e3a\u00a0<code>Boolean<\/code>\u00a0\u503c\uff0c\u5219\u4f1a\u4f7f\u7528\u5176\u4ed6\u7684\u7c7b\u578b\u8f6c\u6362\u89c4\u5219\u3002<\/p>\n<\/blockquote>\n<h4>\u4e25\u683c\uff08\u4e0d\uff09\u76f8\u7b49<\/h4>\n<pre><code class=\"language-js\">\/\/\u65e0\u6cd5\u533a\u5206\u7a7a\u5b57\u7b26\u4e32\u548c0\u548cfalse\uff0c\u56e0\u4e3a\u90fd\u88ab\u8f6c\u6362\u4e3a\u4e860\n0 == false \/\/ true\n'' == false \/\/ true\n\n\/\/ \u82e5\u5c5e\u4e8e\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\uff0c\u90a3\u4e48\u4e0d\u4f1a\u505a\u4efb\u4f55\u7684\u7c7b\u578b\u8f6c\u6362\u800c\u7acb\u523b\u8fd4\u56de\u00a0`false`\u3002\n0 === false \/\/ false\n<\/code><\/pre>\n<p><strong>\u4e25\u683c\u76f8\u7b49\u8fd0\u7b97\u7b26\u00a0<code>===<\/code>\u00a0\u5728\u8fdb\u884c\u6bd4\u8f83\u65f6\u4e0d\u4f1a\u505a\u4efb\u4f55\u7684\u7c7b\u578b\u8f6c\u6362\u3002<\/strong><br \/>\n**\u540c\u6837\u5730\uff1a\u4e25\u683c\u4e0d\u76f8\u7b49\u8fd0\u7b97\u7b26\u00a0<code>!==<\/code> **<\/p>\n<h4>null \u4e0e undefined<\/h4>\n<pre><code class=\"language-js\">null === undefined \/\/ false\nnull == undefined \/\/ true\n<\/code><\/pre>\n<p>\u4f7f\u7528\u6570\u5b66\u5f0f\u6216\u5176\u4ed6\u6bd4\u8f83\u65b9\u6cd5\u00a0<code>&lt; &gt; &lt;= &gt;=<\/code>\u00a0\u65f6\uff1a<br \/>\n<code>null\/undefined<\/code>\u00a0\u4f1a\u88ab\u8f6c\u5316\u4e3a\u6570\u5b57\uff1a<code>null<\/code>\u00a0\u88ab\u8f6c\u5316\u4e3a\u00a0<code>0<\/code>\uff0c<code>undefined<\/code>\u00a0\u88ab\u8f6c\u5316\u4e3a\u00a0<code>NaN<\/code>\u3002<\/p>\n<h5>\u5947\u602a\u7684\u7ed3\u679c null vs 0<\/h5>\n<pre><code class=\"language-js\">null &gt; 0 \/\/ false\uff081\uff09\nnull == 0 \/\/ false\uff082\uff09\nnull &gt;= 0 \/\/ true\uff083\uff09\n<\/code><\/pre>\n<p>what happened\uff1f<br \/>\n\u56e0\u4e3a\u76f8\u7b49\u6027\u68c0\u67e5\u00a0<code>==<\/code>\u00a0\u548c\u666e\u901a\u6bd4\u8f83\u7b26\u00a0<code>&gt; &lt; &gt;= &lt;=<\/code>\u00a0\u7684\u4ee3\u7801\u903b\u8f91\u662f\u76f8\u4e92\u72ec\u7acb\u7684\u3002\u8fdb\u884c\u503c\u7684\u6bd4\u8f83\u65f6\uff0c<code>null<\/code>\u00a0\u4f1a\u88ab\u8f6c\u5316\u4e3a\u6570\u5b57\uff0c\u56e0\u6b64\u5b83\u88ab\u8f6c\u5316\u4e3a\u4e86\u00a0<code>0<\/code>\u3002\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\uff083\uff09\u4e2d\u00a0<code>null &gt;= 0<\/code>\u00a0\u8fd4\u56de\u503c\u662f true\uff0c\uff081\uff09\u4e2d\u00a0<code>null &gt; 0<\/code>\u00a0\u8fd4\u56de\u503c\u662f false\u3002<br \/>\n\u53e6\u4e00\u65b9\u9762\uff0c<strong><code>undefined<\/code>\u00a0\u548c\u00a0<code>null<\/code>\u00a0\u5728\u76f8\u7b49\u6027\u68c0\u67e5\u00a0<code>==<\/code>\u00a0\u4e2d\u4e0d\u4f1a\u8fdb\u884c\u4efb\u4f55\u7684\u7c7b\u578b\u8f6c\u6362<\/strong>\uff0c\u5b83\u4eec\u6709\u81ea\u5df1\u72ec\u7acb\u7684\u6bd4\u8f83\u89c4\u5219\uff0c\u6240\u4ee5\u9664\u4e86\u5b83\u4eec\u4e4b\u95f4\u4e92\u7b49\u5916\uff0c\u4e0d\u4f1a\u7b49\u4e8e\u4efb\u4f55\u5176\u4ed6\u7684\u503c\u3002\u8fd9\u5c31\u89e3\u91ca\u4e86\u4e3a\u4ec0\u4e48\uff082\uff09\u4e2d\u00a0<code>null == 0<\/code>\u00a0\u4f1a\u8fd4\u56de false\u3002<\/p>\n<h5>\u7279\u7acb\u72ec\u884c\u7684 undefined<\/h5>\n<p><code>undefined<\/code>\u00a0\u4e0d\u5e94\u8be5\u88ab\u4e0e\u5176\u4ed6\u503c\u8fdb\u884c\u6bd4\u8f83\uff1a<\/p>\n<pre><code class=\"language-js\">undefined &gt; 0 \/\/ false (1)\nundefined &lt; 0 \/\/ false (2)\nundefined == 0 \/\/ false (3)\n<\/code><\/pre>\n<p>\u4e3a\u4f55\u5b83\u770b\u8d77\u6765\u5982\u6b64\u538c\u6076 0\uff1f<\/p>\n<ul>\n<li><code>(1)<\/code>\u00a0\u548c\u00a0<code>(2)<\/code>\u00a0\u90fd\u8fd4\u56de\u00a0<code>false<\/code>\u00a0\u662f\u56e0\u4e3a\u00a0<code>undefined<\/code>\u00a0\u5728\u6bd4\u8f83\u4e2d\u88ab\u8f6c\u6362\u4e3a\u4e86\u00a0<code>NaN<\/code>\uff0c\u800c\u00a0<code>NaN<\/code>\u00a0\u662f\u4e00\u4e2a\u7279\u6b8a\u7684\u6570\u503c\u578b\u503c\uff0c\u5b83\u4e0e\u4efb\u4f55\u503c\u8fdb\u884c\u6bd4\u8f83\u90fd\u4f1a\u8fd4\u56de\u00a0<code>false<\/code>\u3002<\/li>\n<li><code>(3)<\/code>\u00a0\u8fd4\u56de\u00a0<code>false<\/code>\u00a0\u662f\u56e0\u4e3a\u8fd9\u662f\u4e00\u4e2a\u76f8\u7b49\u6027\u68c0\u67e5\uff0c\u800c\u00a0<code>undefined<\/code>\u00a0\u53ea\u4e0e\u00a0<code>null<\/code>\u00a0\u76f8\u7b49\uff0c\u4e0d\u4f1a\u4e0e\u5176\u4ed6\u503c\u76f8\u7b49\u3002<\/li>\n<\/ul>\n<h3>\u6761\u4ef6\u5206\u652f<\/h3>\n<pre><code class=\"language-js\">if (condition)\n{\n\tcommand;\n}\n<\/code><\/pre>\n<p>\u7c7bc<br \/>\n\uff1f\u8fd0\u7b97\u7b26\uff0c\u53ef\u5957\u5a03<\/p>\n<pre><code class=\"language-js\">let result = condition ? value1 : value2;\n<\/code><\/pre>\n<p>\uff1f\u7684\u975e\u5e38\u89c4\u4f7f\u7528<\/p>\n<pre><code class=\"language-js\">let company = prompt('Which company created JavaScript?', '');\n\n(company == 'Netscape') ?\n   alert('Right!') : alert('Wrong.');\n<\/code><\/pre>\n<p>switch:<br \/>\n\u4efb\u4f55\u8868\u8fbe\u5f0f\u90fd\u53ef\u4ee5\u6210\u4e3a\u00a0<code>switch\/case<\/code>\u00a0\u7684\u53c2\u6570<br \/>\nswitch \u7684\u76f8\u7b49\u5224\u65ad\u662f\u4e25\u683c\u76f8\u7b49\uff08===\uff09<\/p>\n<h3>\u5faa\u73af<\/h3>\n<p>\u7c7bc<br \/>\n\u4e00\u4e9b\u7279\u70b9<\/p>\n<blockquote>\n<p>\u7981\u6b62\u00a0<code>break\/continue<\/code>\u00a0\u5728 \u2018?\u2019 \u7684\u53f3\u8fb9<br \/>\n\u8bf7\u6ce8\u610f\u975e\u8868\u8fbe\u5f0f\u7684\u8bed\u6cd5\u7ed3\u6784\u4e0d\u80fd\u4e0e\u4e09\u5143\u8fd0\u7b97\u7b26\u00a0<code>?<\/code>\u00a0\u4e00\u8d77\u4f7f\u7528\u3002\u7279\u522b\u662f\u00a0<code>break\/continue<\/code>\u00a0\u8fd9\u6837\u7684\u6307\u4ee4\u662f\u4e0d\u5141\u8bb8\u8fd9\u6837\u4f7f\u7528\u7684\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">if (i &gt; 5) {\n  alert(i);\n} else {\n  continue;\n}\n\n(i &gt; 5) ? alert(i) : continue; \/\/ continue \u4e0d\u5141\u8bb8\u5728\u8fd9\u4e2a\u4f4d\u7f6e\n<\/code><\/pre>\n<p>break\/continue\u591a\u5c42\u5faa\u73af\u53ea\u80fd\u8df3\u4e00\u7ea7\u7684\u95ee\u9898\uff0c\u6807\u7b7e\u8bde\u751f\u4e86\uff01<\/p>\n<pre><code class=\"language-js\">labelName: for (...) {\n  ...\n}\n<\/code><\/pre>\n<pre><code class=\"language-js\">outer: for (let i = 0; i &lt; 3; i++) {\n\n  for (let j = 0; j &lt; 3; j++) {\n\n    let input = prompt(`Value at coords (${i},${j})`, '');\n\n    \/\/ \u5982\u679c\u662f\u7a7a\u5b57\u7b26\u4e32\u6216\u88ab\u53d6\u6d88\uff0c\u5219\u4e2d\u65ad\u5e76\u8df3\u51fa\u8fd9\u4e24\u4e2a\u5faa\u73af\u3002\n    if (!input) break outer; \/\/ (*)\n\n    \/\/ \u7528\u5f97\u5230\u7684\u503c\u505a\u4e9b\u4e8b\u2026\u2026\n  }\n}\n\nalert('Done!');\n<\/code><\/pre>\n<blockquote>\n<p>\u6807\u7b7e\u5e76\u4e0d\u5141\u8bb8\u201c\u8df3\u5230\u201d\u6240\u6709\u4f4d\u7f6e<br \/>\n\u6807\u7b7e\u4e0d\u5141\u8bb8\u6211\u4eec\u8df3\u5230\u4ee3\u7801\u7684\u4efb\u610f\u4f4d\u7f6e\u3002<\/p>\n<\/blockquote>\n<h4>for...of\/for...in<\/h4>\n<p>#TODO<\/p>\n<h3>\u51fd\u6570<\/h3>\n<h4>SIMPLE<\/h4>\n<pre><code class=\"language-js\">function func(parameter1, parameter1 = xxx\/func()) {\n\t...\n\treturn xxx;\n}\n\nfunc(args)\n<\/code><\/pre>\n<p>\u53ea\u6709\u5728\u6ca1\u6709\u5c40\u90e8\u53d8\u91cf\u7684\u60c5\u51b5\u4e0b\u624d\u4f1a\u4f7f\u7528\u5916\u90e8\u53d8\u91cf\u3002<br \/>\n\u5982\u679c\u5728\u51fd\u6570\u5185\u90e8\u58f0\u660e\u4e86\u540c\u540d\u53d8\u91cf\uff0c\u90a3\u4e48\u51fd\u6570\u4f1a\u00a0<strong>\u906e\u853d<\/strong>(\u5916\u90e8\u53d8\u91cf\u8ddf\u5c40\u90e8\u53d8\u91cf\u91cd\u540d,\u4e0d\u5e94\u8be5\u79f0\u4e4b\u5c4f\u853d\u5916\u90e8\u53d8\u91cf,\u800c\u662fjs\u53d8\u91cf\u89e3\u6790\u673a\u5236,\u4ece\u6700\u8fd1\u7684\u5c40\u90e8\u53d8\u91cf-&gt;\u5f80\u4e0a\u5bfb\u627e,\u76f4\u5230\u5168\u5c40\u53d8\u91cf,\u627e\u5230\u5373\u4e3a\u7ed3\u675f) \u5916\u90e8\u53d8\u91cf\u3002<\/p>\n<ul>\n<li>\u53c2\u6570\uff08parameter\uff09\u662f\u51fd\u6570\u58f0\u660e\u4e2d\u62ec\u53f7\u5185\u5217\u51fa\u7684\u53d8\u91cf\uff08\u5b83\u662f\u51fd\u6570\u58f0\u660e\u65f6\u7684\u672f\u8bed\uff09\u3002<\/li>\n<li>\u53c2\u6570\uff08argument\uff09\u662f\u8c03\u7528\u51fd\u6570\u65f6\u4f20\u9012\u7ed9\u51fd\u6570\u7684\u503c\uff08\u5b83\u662f\u51fd\u6570\u8c03\u7528\u65f6\u7684\u672f\u8bed\uff09\u3002<\/li>\n<\/ul>\n<p>\u9ed8\u8ba4\u503c\uff1a\u5982\u679c\u4e00\u4e2a\u51fd\u6570\u88ab\u8c03\u7528\uff0c\u4f46\u6709\u53c2\u6570\uff08argument\uff09\u672a\u88ab\u63d0\u4f9b\uff0c\u90a3\u4e48\u76f8\u5e94\u7684\u503c\u5c31\u4f1a\u53d8\u6210\u00a0<code>undefined<\/code>\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>=<\/code>\u00a0\u4e3a\u51fd\u6570\u58f0\u660e\u4e2d\u7684\u53c2\u6570\u6307\u5b9a\u6240\u8c13\u7684\u201c\u9ed8\u8ba4\u201d\uff08\u5982\u679c\u5bf9\u5e94\u53c2\u6570\u7684\u503c\u672a\u88ab\u4f20\u9012\u5219\u4f7f\u7528\uff09\u503c\u3002<br \/>\n\u8fd4\u56de\u503c\uff1a\u7a7a\u503c\u7684<code>return<\/code>\uff08\u7b49\u6548return undefined\uff09\u6216\u6ca1\u6709<code>return<\/code>\u7684\u51fd\u6570\u8fd4\u56de\u503c\u4e3a<code>undefined<\/code>\u3002<\/p>\n<blockquote>\n<p>\u4e0d\u8981\u5728\u00a0<code>return<\/code>\u00a0\u4e0e\u8fd4\u56de\u503c\u4e4b\u95f4\u6dfb\u52a0\u65b0\u884c<br \/>\n\u5bf9\u4e8e\u00a0<code>return<\/code>\u00a0\u7684\u957f\u8868\u8fbe\u5f0f\uff0c\u53ef\u80fd\u4f60\u4f1a\u5f88\u60f3\u5c06\u5176\u653e\u5728\u5355\u72ec\u4e00\u884c\uff0c\u5982\u4e0b<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">return\n (some + long + expression + or + whatever * f(a) + f(b))\n<\/code><\/pre>\n<blockquote>\n<p>\u4f46\u8fd9\u4e0d\u884c\uff0c\u56e0\u4e3a JavaScript \u9ed8\u8ba4\u4f1a\u5728\u00a0<code>return<\/code>\u00a0\u4e4b\u540e\u52a0\u4e0a\u5206\u53f7\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">return;\n (some + long + expression + or + whatever * f(a) + f(b))\n<\/code><\/pre>\n<blockquote>\n<p>\u56e0\u6b64\uff0c\u5b9e\u9645\u4e0a\u5b83\u7684\u8fd4\u56de\u503c\u53d8\u6210\u4e86\u7a7a\u503c\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u60f3\u8981\u5c06\u8fd4\u56de\u7684\u8868\u8fbe\u5f0f\u5199\u6210\u8de8\u591a\u884c\u7684\u5f62\u5f0f\uff0c\u90a3\u4e48\u5e94\u8be5\u5728\u00a0<code>return<\/code>\u00a0\u7684\u540c\u4e00\u884c\u5f00\u59cb\u5199\u6b64\u8868\u8fbe\u5f0f\u3002\u6216\u8005\u6309\u7167\u5982\u4e0b\u7684\u65b9\u5f0f\u653e\u4e0a\u5de6\u62ec\u53f7\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">return (\n  some + long + expression\n  + or +\n  whatever * f(a) + f(b)\n  )\n<\/code><\/pre>\n<p>\u547d\u540d<br \/>\n\u4ee5\u00a0<code>&quot;show&quot;<\/code>\u00a0\u5f00\u5934\u7684\u51fd\u6570\u901a\u5e38\u4f1a\u663e\u793a\u67d0\u4e9b\u5185\u5bb9\u3002<br \/>\n\u51fd\u6570\u4ee5 XX \u5f00\u59cb\u2026\u2026<\/p>\n<ul>\n<li><code>&quot;get\u2026&quot;<\/code>\u00a0\u2014\u2014 \u8fd4\u56de\u4e00\u4e2a\u503c\uff0c<\/li>\n<li><code>&quot;calc\u2026&quot;<\/code>\u00a0\u2014\u2014 \u8ba1\u7b97\u67d0\u4e9b\u5185\u5bb9\uff0c<\/li>\n<li><code>&quot;create\u2026&quot;<\/code>\u00a0\u2014\u2014 \u521b\u5efa\u67d0\u4e9b\u5185\u5bb9\uff0c<\/li>\n<li><code>&quot;check\u2026&quot;<\/code>\u00a0\u2014\u2014 \u68c0\u67e5\u67d0\u4e9b\u5185\u5bb9\u5e76\u8fd4\u56de boolean \u503c\uff0c\u7b49\u3002<\/li>\n<\/ul>\n<h4>\u51fd\u6570\u8868\u8fbe\u5f0f<\/h4>\n<p>\u51fd\u6570\u4e5f\u662f\u503c\uff0c\u5141\u8bb8\u6211\u4eec\u5728\u4efb\u4f55\u8868\u8fbe\u5f0f\u7684\u4e2d\u95f4\u521b\u5efa\u4e00\u4e2a\u65b0\u51fd\u6570\u3002<\/p>\n<pre><code class=\"language-js\">\/\/\u6b63\u5e38\u58f0\u660e\u7684\u51fd\u6570\u540d\u4e5f\u662f\u548c\u4e0b\u9762\u4e00\u6837\u7684\u503c\nlet func = function(parameter1, parameter1 = xxx\/func()) {\n\t...\n\treturn xxx;\n};\n<\/code><\/pre>\n<p>\u51fd\u6570\u8868\u8fbe\u5f0f\u5141\u8bb8\u7701\u7565\u51fd\u6570\u540d\u3002<br \/>\n\u6ce8\u610f\u6700\u540e\u7684\u5206\u53f7<br \/>\n\u8c03\u7528alert(func)\u65f6\uff0c\u8f93\u51fa\u51fd\u6570\u6e90\u7801\uff08\u4e0d\u4f1a\u8fd0\u884c\u51fd\u6570\uff09\uff0c\u8c03\u7528alert(func())\u65f6\u624d\u4f1a\u8fd0\u884c\u51fd\u6570\u3002<\/p>\n<p>\u56de\u8c03\u51fd\u6570 &amp; \u533f\u540d\u51fd\u6570\uff1a<\/p>\n<pre><code class=\"language-js\">function ask(question, yes, no) {\n  if (confirm(question)) yes()\n  else no();\n}\n\nfunction showOk() {\n  alert( &quot;You agreed.&quot; );\n}\n\nfunction showCancel() {\n  alert( &quot;You canceled the execution.&quot; );\n}\n\n\/\/ \u7528\u6cd5\uff1a\u51fd\u6570 showOk \u548c showCancel \u88ab\u4f5c\u4e3a\u53c2\u6570\u4f20\u5165\u5230 ask\nask(&quot;Do you agree?&quot;, showOk, showCancel);\n\n\/\/--------------------\nfunction ask(question, yes, no) {\n  if (confirm(question)) yes()\n  else no();\n}\n\nask(\n  &quot;Do you agree?&quot;,\n  function() { alert(&quot;You agreed.&quot;); },\n  function() { alert(&quot;You canceled the execution.&quot;); }\n);\n<\/code><\/pre>\n<p><code>ask<\/code>\u00a0\u7684\u4e24\u4e2a\u53c2\u6570\u503c\u00a0<code>showOk<\/code>\u00a0\u548c\u00a0<code>showCancel<\/code>\u00a0\u53ef\u4ee5\u88ab\u79f0\u4e3a\u00a0<strong>\u56de\u8c03\u51fd\u6570<\/strong>\u00a0\u6216\u7b80\u79f0\u00a0<strong>\u56de\u8c03<\/strong>\u3002<br \/>\n\u4e3b\u8981\u601d\u60f3\u662f\u6211\u4eec\u4f20\u9012\u4e00\u4e2a\u51fd\u6570\uff0c\u5e76\u671f\u671b\u5728\u7a0d\u540e\u5fc5\u8981\u65f6\u5c06\u5176\u201c\u56de\u8c03\u201d\u3002\u5728\u6211\u4eec\u7684\u4f8b\u5b50\u4e2d\uff0c<code>showOk<\/code>\u00a0\u662f\u56de\u7b54 \u201cyes\u201d \u7684\u56de\u8c03\uff0c<code>showCancel<\/code>\u00a0\u662f\u56de\u7b54 \u201cno\u201d \u7684\u56de\u8c03\u3002<\/p>\n<p>\u7b2c\u4e8c\u79cd\u5199\u6cd5\uff1a\u76f4\u63a5\u5728\u00a0<code>ask(...)<\/code>\u00a0\u8c03\u7528\u5185\u8fdb\u884c\u51fd\u6570\u58f0\u660e\u3002\u8fd9\u4e24\u4e2a\u51fd\u6570\u6ca1\u6709\u540d\u5b57\uff0c\u6240\u4ee5\u53eb\u00a0<strong>\u533f\u540d\u51fd\u6570<\/strong>\u3002\u8fd9\u6837\u7684\u51fd\u6570\u5728\u00a0<code>ask<\/code>\u00a0\u5916\u65e0\u6cd5\u8bbf\u95ee\uff08\u56e0\u4e3a\u6ca1\u6709\u5bf9\u5b83\u4eec\u5206\u914d\u53d8\u91cf\uff09\uff0c\u4e0d\u8fc7\u8fd9\u6b63\u662f\u6211\u4eec\u60f3\u8981\u7684\u3002<br \/>\n\u8fd9\u6837\u7684\u4ee3\u7801\u5728\u6211\u4eec\u7684\u811a\u672c\u4e2d\u975e\u5e38\u5e38\u89c1\uff0c\u8fd9\u6b63\u7b26\u5408 JavaScript \u8bed\u8a00\u7684\u601d\u60f3\u3002<\/p>\n<blockquote>\n<p>\u4e00\u4e2a\u51fd\u6570\u662f\u8868\u793a\u4e00\u4e2a\u201c\u884c\u4e3a\u201d\u7684\u503c<br \/>\n\u5b57\u7b26\u4e32\u6216\u6570\u5b57\u7b49\u5e38\u89c4\u503c\u4ee3\u8868\u00a0<strong>\u6570\u636e<\/strong>\u3002<br \/>\n\u51fd\u6570\u53ef\u4ee5\u88ab\u89c6\u4e3a\u4e00\u4e2a\u00a0<strong>\u884c\u4e3a\uff08action\uff09<\/strong>\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u5728\u53d8\u91cf\u4e4b\u95f4\u4f20\u9012\u5b83\u4eec\uff0c\u5e76\u5728\u9700\u8981\u65f6\u8fd0\u884c\u3002<\/p>\n<\/blockquote>\n<p><strong>\u51fd\u6570\u8868\u8fbe\u5f0f\u662f\u5728\u4ee3\u7801\u6267\u884c\u5230\u8fbe\u65f6\u88ab\u521b\u5efa\uff0c\u5e76\u4e14\u4ec5\u4ece\u90a3\u4e00\u523b\u8d77\u53ef\u7528\u3002<\/strong><br \/>\n<strong>\u51fd\u6570\u58f0\u660e\u5728\u51fd\u6570\u58f0\u660e\u88ab\u5b9a\u4e49\u4e4b\u524d\uff0c\u5b83\u5c31\u53ef\u4ee5\u88ab\u8c03\u7528\u3002<\/strong><br \/>\n<strong>\u4e25\u683c\u6a21\u5f0f\u4e0b\uff0c\u5f53\u4e00\u4e2a\u51fd\u6570\u58f0\u660e\u5728\u4e00\u4e2a\u4ee3\u7801\u5757\u5185\u65f6\uff0c\u5b83\u5728\u8be5\u4ee3\u7801\u5757\u5185\u7684\u4efb\u4f55\u4f4d\u7f6e\u90fd\u662f\u53ef\u89c1\u7684\u3002\u4f46\u5728\u4ee3\u7801\u5757\u5916\u4e0d\u53ef\u89c1\u3002<\/strong><\/p>\n<h4>\u7bad\u5934\u51fd\u6570<\/h4>\n<pre><code class=\"language-js\">let func = (parameter1, parameter2) =&gt; expression;\nlet func = function(parameter1, parameter2)\n{\n\treturn expression;\n}\n\/\/\nlet func = parameter1 =&gt; expression;\nlet func = () =&gt; expression;\n\/\/\nlet func = (parameter1, parameter2) =&gt; {\n\tother...\n\treturn expression;\n};\n<\/code><\/pre>\n<h3><a href=\"https:\/\/zh.javascript.info\/javascript-specials\">JavaScript \u7279\u6027\u603b\u7ed3<\/a><\/h3>\n<h2>\u4ee3\u7801\u8d28\u91cf<\/h2>\n<p>\u4ecb\u7ecd\u5728\u5f00\u53d1\u4e2d\u8fdb\u4e00\u6b65\u4f7f\u7528\u7684\u7f16\u7801\u5b9e\u8df5<\/p>\n<h3>\u5f00\u53d1\u8005\u5de5\u5177-\u5728\u6d4f\u89c8\u5668\u4e2d\u8c03\u8bd5<\/h3>\n<p>\u5f00\u53d1\u4eba\u5458\u5de5\u5177\u4e2d\u7684\u9009\u9879\u6bd4\u672c\u6587\u4ecb\u7ecd\u7684\u591a\u5f97\u591a\u3002\u5b8c\u6574\u7684\u624b\u518c\u8bf7\u70b9\u51fb\u8fd9\u4e2a\u94fe\u63a5\u67e5\u770b\uff1a<a href=\"https:\/\/developers.google.com\/web\/tools\/chrome-devtools\">https:\/\/developers.google.com\/web\/tools\/chrome-devtools<\/a>\u3002<\/p>\n<h4>\u8d44\u6e90\uff08Sources\uff09\u9762\u677f<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240421104002.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240421104002.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"Pasted image 20240421104002.png\"><\/div><br \/>\n\u8d44\u6e90\uff08Sources\uff09\u9762\u677f\u5305\u542b\u4e09\u4e2a\u90e8\u5206\uff1a<\/p>\n<ol>\n<li><strong>\u6587\u4ef6\u5bfc\u822a\uff08File Navigator\uff09<\/strong>\u00a0\u533a\u57df\u5217\u51fa\u4e86 HTML\u3001JavaScript\u3001CSS \u548c\u5305\u62ec\u56fe\u7247\u5728\u5185\u7684\u5176\u4ed6\u4f9d\u9644\u4e8e\u6b64\u9875\u9762\u7684\u6587\u4ef6\u3002Chrome \u6269\u5c55\u7a0b\u5e8f\u4e5f\u4f1a\u663e\u793a\u5728\u8fd9\u3002<\/li>\n<li><strong>\u4ee3\u7801\u7f16\u8f91\uff08Code Editor\uff09<\/strong>\u00a0\u533a\u57df\u5c55\u793a\u6e90\u7801\u3002<\/li>\n<li><strong>JavaScript \u8c03\u8bd5\uff08JavaScript Debugging\uff09<\/strong>\u00a0\u533a\u57df\u662f\u7528\u4e8e\u8c03\u8bd5\u7684\uff0c\u6211\u4eec\u5f88\u5feb\u5c31\u4f1a\u6765\u63a2\u7d22\u5b83\u3002<\/li>\n<\/ol>\n<h4>\u63a7\u5236\u53f0\uff08Console\uff09<\/h4>\n<p>\u8f93\u5165\u547d\u4ee4\u6267\u884c\uff0c\u5728\u4e0b\u4e00\u884c\u663e\u793a\u8fd4\u56de\u503c<\/p>\n<h4>\u65ad\u70b9\uff08Breakpoints\uff09<\/h4>\n<p>\u70b9\u51fb\u884c\u53f7\u5373\u53ef\u8bbe\u7f6e\u65ad\u70b9\uff0c<br \/>\n\u6211\u4eec\u603b\u662f\u53ef\u4ee5\u5728\u53f3\u4fa7\u7684\u9762\u677f\u4e2d\u627e\u5230\u65ad\u70b9\u7684\u5217\u8868\u3002\u5f53\u6211\u4eec\u5728\u6570\u4e2a\u6587\u4ef6\u4e2d\u6709\u8bb8\u591a\u65ad\u70b9\u65f6\uff0c\u8fd9\u662f\u975e\u5e38\u6709\u7528\u7684\u3002\u5b83\u5141\u8bb8\u6211\u4eec\uff1a<\/p>\n<ul>\n<li>\u5feb\u901f\u8df3\u8f6c\u81f3\u4ee3\u7801\u4e2d\u7684\u65ad\u70b9\uff08\u901a\u8fc7\u70b9\u51fb\u53f3\u4fa7\u9762\u677f\u4e2d\u7684\u5bf9\u5e94\u7684\u65ad\u70b9\uff09\u3002<\/li>\n<li>\u901a\u8fc7\u53d6\u6d88\u9009\u4e2d\u65ad\u70b9\u6765\u4e34\u65f6\u7981\u7528\u5bf9\u5e94\u7684\u65ad\u70b9\u3002<\/li>\n<li>\u901a\u8fc7\u53f3\u952e\u5355\u51fb\u5e76\u9009\u62e9\u79fb\u9664\u6765\u5220\u9664\u4e00\u4e2a\u65ad\u70b9\u3002<\/li>\n<li>\u2026\u2026\u7b49\u7b49\u3002<\/li>\n<\/ul>\n<blockquote>\n<p>\u6761\u4ef6\u65ad\u70b9<br \/>\n\u5728\u884c\u53f7\u4e0a\u00a0<strong>\u53f3\u952e\u5355\u51fb<\/strong>\u00a0\u5141\u8bb8\u4f60\u521b\u5efa\u4e00\u4e2a\u00a0<strong>\u6761\u4ef6<\/strong>\u00a0\u65ad\u70b9\u3002\u53ea\u6709\u5f53\u7ed9\u5b9a\u7684\u8868\u8fbe\u5f0f\uff08\u4f60\u521b\u5efa\u6761\u4ef6\u65ad\u70b9\u65f6\u63d0\u4f9b\u7684\u8868\u8fbe\u5f0f\uff09\u4e3a\u771f\u65f6\u624d\u4f1a\u88ab\u89e6\u53d1\u3002<br \/>\n\u5f53\u6211\u4eec\u9700\u8981\u5728\u7279\u5b9a\u7684\u53d8\u91cf\u503c\u6216\u53c2\u6570\u7684\u60c5\u51b5\u4e0b\u6682\u505c\u7a0b\u5e8f\u6267\u884c\u65f6\uff0c\u8fd9\u79cd\u8c03\u8bd5\u65b9\u6cd5\u5c31\u5f88\u6709\u7528\u4e86\u3002<\/p>\n<\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240421111506.png\" alt=\"Pasted image 20240421111506.png\"><\/p>\n<h4>debugger \u547d\u4ee4<\/h4>\n<pre><code class=\"language-js\">function hello(name) {\n\tlet phrase = `Hello, ${name}!`;\n\n\tdebugger; \/\/ \u8c03\u8bd5\u5668\u4f1a\u5728\u6b64\u6682\u505c\n\n\talert(phrase);\n}\n<\/code><\/pre>\n<p>\u8fd9\u79cd\u547d\u4ee4\u53ea\u6709\u5728\u5f00\u53d1\u8005\u5de5\u5177\u6253\u5f00\u65f6\u624d\u6709\u6548\uff0c\u5426\u5219\u6d4f\u89c8\u5668\u4f1a\u5ffd\u7565\u5b83\u3002<\/p>\n<h4>\u6682\u505c\u5e76\u67e5\u770b<\/h4>\n<p>[[First floor - 3 JavaScript#\u8d44\u6e90\uff08Sources\uff09\u9762\u677f]]<br \/>\n\u8bbe\u7f6e\u597d\u65ad\u70b9\u540e\uff0c\u5373\u53ef\u5237\u65b0\u9875\u9762<br \/>\n\u8bf7\u6253\u5f00\u53f3\u4fa7\u7684\u4fe1\u606f\u4e0b\u62c9\u5217\u8868\uff08\u7bad\u5934\u6307\u793a\u51fa\u7684\u5730\u65b9\uff09\u3002\u8fd9\u91cc\u5141\u8bb8\u4f60\u67e5\u770b\u5f53\u524d\u7684\u4ee3\u7801\u72b6\u6001\uff1a<\/p>\n<ol>\n<li><strong><code>\u5bdf\u770b\uff08Watch\uff09<\/code>\u00a0\u2014\u2014 \u663e\u793a\u4efb\u610f\u8868\u8fbe\u5f0f\u7684\u5f53\u524d\u503c\u3002<\/strong><br \/>\n\u4f60\u53ef\u4ee5\u70b9\u51fb\u52a0\u53f7\u00a0<code>+<\/code>\u00a0\u7136\u540e\u8f93\u5165\u4e00\u4e2a\u8868\u8fbe\u5f0f\u3002\u8c03\u8bd5\u5668\u5c06\u663e\u793a\u5b83\u7684\u503c\uff0c\u5e76\u5728\u6267\u884c\u8fc7\u7a0b\u4e2d\u81ea\u52a8\u91cd\u65b0\u8ba1\u7b97\u8be5\u8868\u8fbe\u5f0f\u3002<\/li>\n<li><strong><code>\u8c03\u7528\u6808\uff08Call Stack\uff09<\/code>\u00a0\u2014\u2014 \u663e\u793a\u5d4c\u5957\u7684\u8c03\u7528\u94fe\u3002<\/strong><br \/>\n\u6b64\u65f6\uff0c\u8c03\u8bd5\u5668\u6b63\u5728\u00a0<code>hello()<\/code>\u00a0\u7684\u8c03\u7528\u94fe\u4e2d\uff0c\u88ab\u00a0<code>index.html<\/code>\u00a0\u4e2d\u7684\u4e00\u4e2a\u811a\u672c\u8c03\u7528\uff08\u8fd9\u91cc\u6ca1\u6709\u51fd\u6570\uff0c\u56e0\u6b64\u663e\u793a \u201canonymous\u201d\uff09<br \/>\n\u5982\u679c\u4f60\u70b9\u51fb\u4e86\u4e00\u4e2a\u5806\u6808\u9879\uff0c\u8c03\u8bd5\u5668\u5c06\u8df3\u5230\u5bf9\u5e94\u7684\u4ee3\u7801\u5904\uff0c\u5e76\u4e14\u8fd8\u53ef\u4ee5\u67e5\u770b\u5176\u6240\u6709\u53d8\u91cf\u3002<\/li>\n<li><strong><code>\u4f5c\u7528\u57df\uff08Scope\uff09<\/code>\u00a0\u2014\u2014 \u663e\u793a\u5f53\u524d\u7684\u53d8\u91cf\u3002<\/strong><br \/>\n<code>Local<\/code>\u00a0\u663e\u793a\u5f53\u524d\u51fd\u6570\u4e2d\u7684\u53d8\u91cf\uff0c\u4f60\u8fd8\u53ef\u4ee5\u5728\u6e90\u4ee3\u7801\u4e2d\u770b\u5230\u5b83\u4eec\u7684\u503c\u9ad8\u4eae\u663e\u793a\u4e86\u51fa\u6765\u3002<br \/>\n<code>Global<\/code>\u00a0\u663e\u793a\u5168\u5c40\u53d8\u91cf\uff08\u4e0d\u5728\u4efb\u4f55\u51fd\u6570\u4e2d\uff09\u3002<\/li>\n<\/ol>\n<h4>\u8ddf\u8e2a\u6267\u884c<\/h4>\n<p>\u201c\u6062\u590d\uff08Resume\uff09\u201d\uff1a\u7ee7\u7eed\u6267\u884c\uff0c\u5feb\u6377\u952e\u00a0F8\u3002<br \/>\n\u7ee7\u7eed\u6267\u884c\u3002\u5982\u679c\u6ca1\u6709\u5176\u4ed6\u7684\u65ad\u70b9\uff0c\u90a3\u4e48\u7a0b\u5e8f\u5c31\u4f1a\u7ee7\u7eed\u6267\u884c\uff0c\u5e76\u4e14\u8c03\u8bd5\u5668\u4e0d\u4f1a\u518d\u63a7\u5236\u7a0b\u5e8f\u3002<\/p>\n<p>\u201c\u4e0b\u4e00\u6b65\uff08Step\uff09\u201d\uff1a\u8fd0\u884c\u4e0b\u4e00\u6761\uff08\u5373\u5f53\u524d\u884c\uff09\u6307\u4ee4\uff0c\u5feb\u6377\u952e\u00a0F9\u3002<br \/>\n\u8fd0\u884c\u4e0b\u4e00\u6761\u8bed\u53e5\u3002\u5982\u679c\u6211\u4eec\u73b0\u5728\u70b9\u51fb\u5b83\uff0c<code>alert<\/code>\u00a0\u4f1a\u88ab\u663e\u793a\u51fa\u6765\u3002<br \/>\n\u4e00\u6b21\u63a5\u4e00\u6b21\u5730\u70b9\u51fb\u6b64\u6309\u94ae\uff0c\u6574\u4e2a\u811a\u672c\u7684\u6240\u6709\u8bed\u53e5\u4f1a\u88ab\u9010\u4e2a\u6267\u884c\u3002<\/p>\n<p>\u201c\u8de8\u6b65\uff08Step over\uff09\u201d\uff1a\u8fd0\u884c\u4e0b\u4e00\u6761\uff08\u5373\u5f53\u524d\u884c\uff09\u6307\u4ee4\uff0c\u4f46\u00a0<strong>\u4e0d\u4f1a\u8fdb\u5165\u5230\u4e00\u4e2a\u51fd\u6570\u4e2d<\/strong>\uff0c\u5feb\u6377\u952e\u00a0F10\u3002<br \/>\n\u8ddf\u4e0a\u4e00\u6761\u547d\u4ee4\u201c\u4e0b\u4e00\u6b65\uff08Step\uff09\u201d\u7c7b\u4f3c\uff0c\u4f46\u5982\u679c\u4e0b\u4e00\u6761\u8bed\u53e5\u662f\u51fd\u6570\u8c03\u7528\u5219\u8868\u73b0\u4e0d\u540c\u3002\u8fd9\u91cc\u7684\u51fd\u6570\u6307\u7684\u662f\uff1a\u4e0d\u662f\u5185\u5efa\u7684\u5982\u00a0<code>alert<\/code>\u00a0\u51fd\u6570\u7b49\uff0c\u800c\u662f\u6211\u4eec\u81ea\u5df1\u5199\u7684\u51fd\u6570\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u5bf9\u6bd4\u4e00\u4e0b\uff0c\u201c\u4e0b\u4e00\u6b65\uff08Step\uff09\u201d\u547d\u4ee4\u4f1a\u8fdb\u5165\u5d4c\u5957\u51fd\u6570\u8c03\u7528\u5e76\u5728\u5176\u7b2c\u4e00\u884c\u6682\u505c\u6267\u884c\uff0c\u800c\u201c\u8de8\u6b65\uff08Step over\uff09\u201d\u5bf9\u6211\u4eec\u4e0d\u53ef\u89c1\u5730\u6267\u884c\u5d4c\u5957\u51fd\u6570\u8c03\u7528\uff0c\u8df3\u8fc7\u4e86\u51fd\u6570\u5185\u90e8\u3002<br \/>\n\u6267\u884c\u4f1a\u5728\u8be5\u51fd\u6570\u8c03\u7528\u540e\u7acb\u5373\u6682\u505c\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u5bf9\u8be5\u51fd\u6570\u7684\u5185\u90e8\u6267\u884c\u4e0d\u611f\u5174\u8da3\uff0c\u8fd9\u547d\u4ee4\u4f1a\u5f88\u6709\u7528\u3002<\/p>\n<p>\u201c\u6b65\u5165\uff08Step into\uff09\u201d\uff0c\u5feb\u6377\u952e\u00a0F11\u3002<br \/>\n\u548c\u201c\u4e0b\u4e00\u6b65\uff08Step\uff09\u201d\u7c7b\u4f3c\uff0c\u4f46\u5728\u5f02\u6b65\u51fd\u6570\u8c03\u7528\u60c5\u51b5\u4e0b\u8868\u73b0\u4e0d\u540c\u3002\u5982\u679c\u4f60\u521a\u521a\u624d\u5f00\u59cb\u5b66 JavaScript\uff0c\u90a3\u4e48\u4f60\u53ef\u4ee5\u5148\u5ffd\u7565\u6b64\u5dee\u5f02\uff0c\u56e0\u4e3a\u6211\u4eec\u8fd8\u6ca1\u6709\u7528\u5230\u5f02\u6b65\u8c03\u7528\u3002<br \/>\n\u81f3\u4e8e\u4e4b\u540e\uff0c\u53ea\u9700\u8981\u8bb0\u4f4f\u201c\u4e0b\u4e00\u6b65\uff08Step\uff09\u201d\u547d\u4ee4\u4f1a\u5ffd\u7565\u5f02\u6b65\u884c\u4e3a\uff0c\u4f8b\u5982\u00a0<code>setTimeout<\/code>\uff08\u8ba1\u5212\u7684\u51fd\u6570\u8c03\u7528\uff09\uff0c\u5b83\u4f1a\u8fc7\u4e00\u6bb5\u65f6\u95f4\u518d\u6267\u884c\u3002\u800c\u201c\u6b65\u5165\uff08Step into\uff09\u201d\u4f1a\u8fdb\u5165\u5230\u4ee3\u7801\u4e2d\u5e76\u7b49\u5f85\uff08\u5982\u679c\u9700\u8981\uff09\u3002\u8be6\u89c1\u00a0<a href=\"https:\/\/developers.google.com\/web\/updates\/2018\/01\/devtools#async\">DevTools \u624b\u518c<\/a>\u3002<\/p>\n<p>\u201c\u6b65\u51fa\uff08Step out\uff09\u201d\uff1a\u7ee7\u7eed\u6267\u884c\u5230\u5f53\u524d\u51fd\u6570\u7684\u672b\u5c3e\uff0c\u5feb\u6377\u952e\u00a0Shift+F11\u3002<br \/>\n\u7ee7\u7eed\u6267\u884c\u5f53\u524d\u51fd\u6570\u5185\u7684\u5269\u4f59\u4ee3\u7801\uff0c\u5e76\u6682\u505c\u5728\u8c03\u7528\u5f53\u524d\u51fd\u6570\u7684\u4e0b\u4e00\u884c\u4ee3\u7801\u5904\u3002\u5f53\u6211\u4eec\u4f7f\u7528\u00a0\u00a0\u5076\u7136\u5730\u8fdb\u5165\u5230\u4e00\u4e2a\u5d4c\u5957\u8c03\u7528\uff0c\u4f46\u662f\u6211\u4eec\u53c8\u5bf9\u8fd9\u4e2a\u51fd\u6570\u4e0d\u611f\u5174\u8da3\u65f6\uff0c\u6211\u4eec\u60f3\u8981\u5c3d\u53ef\u80fd\u7684\u7ee7\u7eed\u6267\u884c\u5230\u6700\u540e\u7684\u65f6\u5019\u662f\u975e\u5e38\u65b9\u4fbf\u7684\u3002<\/p>\n<p>\u542f\u7528\/\u7981\u7528\u6240\u6709\u7684\u65ad\u70b9\u3002<br \/>\n\u8fd9\u4e2a\u6309\u94ae\u4e0d\u4f1a\u5f71\u54cd\u7a0b\u5e8f\u7684\u6267\u884c\u3002\u53ea\u662f\u4e00\u4e2a\u6279\u91cf\u64cd\u4f5c\u65ad\u70b9\u7684\u5f00\/\u5173\u3002<\/p>\n<p>\u542f\u7528\/\u7981\u7528\u51fa\u73b0\u9519\u8bef\u65f6\u81ea\u52a8\u6682\u505c\u811a\u672c\u6267\u884c\u3002<br \/>\n\u5f53\u542f\u52a8\u6b64\u529f\u80fd\uff0c\u5982\u679c\u5f00\u53d1\u8005\u5de5\u5177\u662f\u6253\u5f00\u7740\u7684\u65f6\u5019\uff0c\u4efb\u4f55\u811a\u672c\u6267\u884c\u9519\u8bef\u90fd\u4f1a\u5bfc\u81f4\u8be5\u811a\u672c\u6267\u884c\u81ea\u52a8\u6682\u505c\u3002\u7136\u540e\u6211\u4eec\u53ef\u4ee5\u5728\u8c03\u8bd5\u5668\u4e2d\u5206\u6790\u53d8\u91cf\u6765\u770b\u4e00\u4e0b\u4ec0\u4e48\u51fa\u9519\u4e86\u3002\u56e0\u6b64\u5982\u679c\u6211\u4eec\u7684\u811a\u672c\u56e0\u4e3a\u9519\u8bef\u6302\u6389\u7684\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u4ee5\u6253\u5f00\u8c03\u8bd5\u5668\uff0c\u542f\u7528\u8fd9\u4e2a\u9009\u9879\u7136\u540e\u91cd\u8f7d\u9875\u9762\uff0c\u67e5\u770b\u4e00\u4e0b\u54ea\u91cc\u5bfc\u81f4\u5b83\u6302\u6389\u4e86\u548c\u5f53\u65f6\u7684\u4e0a\u4e0b\u6587\u662f\u4ec0\u4e48\u3002<\/p>\n<blockquote>\n<p>Continue to here<br \/>\n\u5728\u4ee3\u7801\u4e2d\u7684\u67d0\u4e00\u884c\u4e0a\u53f3\u952e\uff0c\u5728\u663e\u793a\u7684\u5173\u8054\u83dc\u5355\uff08context menu\uff09\u4e2d\u70b9\u51fb\u4e00\u4e2a\u975e\u5e38\u6709\u7528\u7684\u540d\u4e3a \u201cContinue to here\u201d \u7684\u9009\u9879\u3002<br \/>\n\u5f53\u4f60\u60f3\u8981\u5411\u524d\u79fb\u52a8\u5f88\u591a\u6b65\u5230\u67d0\u4e00\u884c\u4e3a\u6b62\uff0c\u4f46\u662f\u53c8\u61d2\u5f97\u8bbe\u7f6e\u4e00\u4e2a\u65ad\u70b9\u65f6\u975e\u5e38\u7684\u65b9\u4fbf\u3002<\/p>\n<\/blockquote>\n<h4>\u65e5\u5fd7\u8bb0\u5f55<\/h4>\n<p>console.log<\/p>\n<h3>\u4ee3\u7801\u98ce\u683c<\/h3>\n<blockquote>\n<p>\u6ca1\u6709\u4ec0\u4e48\u89c4\u5219\u662f\u201c\u5fc5\u987b\u201d\u7684<br \/>\n\u6ca1\u6709\u4ec0\u4e48\u89c4\u5219\u662f\u201c\u523b\u5728\u77f3\u5934\u4e0a\u201d\u7684\u3002\u8fd9\u4e9b\u662f\u98ce\u683c\u504f\u597d\uff0c\u800c\u4e0d\u662f\u5b97\u6559\u6559\u6761\u3002<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/zh.javascript.info\/coding-style\">\u4ee3\u7801\u98ce\u683c (javascript.info)<\/a><\/p>\n<h3>\u6ce8\u91ca<\/h3>\n<blockquote>\n<p>\u201c\u5982\u679c\u4ee3\u7801\u4e0d\u591f\u6e05\u6670\u4ee5\u81f3\u4e8e\u9700\u8981\u4e00\u4e2a\u6ce8\u91ca\uff0c\u90a3\u4e48\u6216\u8bb8\u5b83\u5e94\u8be5\u88ab\u91cd\u5199\u3002\u201d<\/p>\n<\/blockquote>\n<p>\u4ee3\u7801\u8868\u793aHOW\uff0c\u6ce8\u91ca\u8868\u793aWHY<\/p>\n<p>\u201c\u89e3\u91ca\u6027\u201d\u6ce8\u91ca:<\/p>\n<pre><code class=\"language-js\">\/\/ \u8fd9\u91cc\u7684\u4ee3\u7801\u4f1a\u5148\u505a\u8fd9\u4ef6\u4e8b\uff08\u2026\u2026\uff09\u7136\u540e\u505a\u90a3\u4ef6\u4e8b\uff08\u2026\u2026\uff09\n\/\/ \u2026\u2026\u8c01\u77e5\u9053\u8fd8\u6709\u4ec0\u4e48\u2026\u2026\nvery;\ncomplex;\ncode;\n<\/code><\/pre>\n<p>\u6211\u4eec\u4e0d\u80fd\u5b8c\u5168\u907f\u514d\u201c\u89e3\u91ca\u578b\u201d\u6ce8\u91ca\u3002\u4f8b\u5982\u5728\u4e00\u4e9b\u590d\u6742\u7684\u7b97\u6cd5\u4e2d\uff0c\u4f1a\u6709\u4e00\u4e9b\u51fa\u4e8e\u4f18\u5316\u7684\u76ee\u7684\u800c\u505a\u7684\u4e00\u4e9b\u5de7\u5999\u7684\u201c\u8c03\u6574\u201d\u3002<\/p>\n<p>\u4e13\u95e8\u7528\u4e8e\u8bb0\u5f55\u51fd\u6570\u7684\u8bed\u6cd5\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/JSDoc\">JSDoc<\/a>\uff1a\u7528\u6cd5\u3001\u53c2\u6570\u548c\u8fd4\u56de\u503c\u3002<\/p>\n<pre><code class=\"language-js\">\/**\n * \u8fd4\u56de x \u7684 n \u6b21\u5e42\u7684\u503c\u3002\n *\n * @param {number} x \u8981\u6539\u53d8\u7684\u503c\u3002\n * @param {number} n \u5e42\u6570\uff0c\u5fc5\u987b\u662f\u4e00\u4e2a\u81ea\u7136\u6570\u3002\n * @return {number} x \u7684 n \u6b21\u5e42\u7684\u503c\u3002\n *\/\nfunction pow(x, n) {\n  ...\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u4e3a\u4ec0\u4e48\u4e0d\u8fd9\u6837\u505a\uff1f<br \/>\n\u901a\u5e38\u6ce8\u91ca\u7ed9\u51fa\u4e86\uff0c\u4e00\u79cd\u5b9e\u73b0\u529f\u80fd\u7684\u65b9\u6cd5\uff0c\u4f46\u662f\u6709\u591a\u79cd\u65b9\u6cd5\u65f6\uff0c\u4e3a\u4ec0\u4e48\u9009\u62e9\u8fd9\u79cd\u800c\u4e0d\u662f\u5176\u4ed6\u7684\u5f80\u5f80\u66f4\u52a0\u91cd\u8981\u3002<br \/>\n\u6ca1\u6709\u8fd9\u6837\u7684\u6ce8\u91ca\u7684\u8bdd\uff0c\u5c31\u53ef\u80fd\u4f1a\u53d1\u751f\u4e0b\u9762\u7684\u60c5\u51b5\uff1a<\/p>\n<ol>\n<li>\u4f60\uff08\u6216\u8005\u4f60\u7684\u540c\u4e8b\uff09\u6253\u5f00\u4e86\u524d\u4e00\u6bb5\u65f6\u95f4\u5199\u7684\u4ee3\u7801\uff0c\u770b\u5230\u5b83\u4e0d\u662f\u6700\u7406\u60f3\u7684\u5b9e\u73b0\u65b9\u5f0f\u3002<\/li>\n<li>\u4f60\u4f1a\u60f3\uff1a\u201c\u6211\u5f53\u65f6\u662f\u6709\u591a\u8822\u554a\uff0c\u73b0\u5728\u6211\u771f\u662f\u592a\u806a\u660e\u4e86\u201d\uff0c\u7136\u540e\u7528\u201c\u66f4\u663e\u800c\u6613\u89c1\u4e14\u6b63\u786e\u7684\u201d\u65b9\u5f0f\u91cd\u5199\u4e86\u4e00\u904d\u3002<\/li>\n<li>\u2026\u2026\u91cd\u5199\u7684\u8fd9\u80a1\u51b2\u52a8\u52b2\u662f\u597d\u7684\u3002\u4f46\u662f\u5728\u91cd\u5199\u7684\u8fc7\u7a0b\u4e2d\u4f60\u53d1\u73b0\u201c\u66f4\u663e\u800c\u6613\u89c1\u201d\u7684\u89e3\u51b3\u65b9\u6848\u5b9e\u9645\u4e0a\u662f\u6709\u7f3a\u9677\u7684\u3002\u4f60\u751a\u81f3\u4f9d\u7a00\u5730\u60f3\u8d77\u4e86\u4e3a\u4ec0\u4e48\u4f1a\u8fd9\u6837\uff0c\u56e0\u4e3a\u4f60\u5f88\u4e45\u4e4b\u524d\u5c31\u5df2\u7ecf\u5c1d\u8bd5\u8fc7\u8fd9\u6837\u505a\u4e86\u3002\u4e8e\u662f\u4f60\u53c8\u8fd8\u539f\u4e86\u90a3\u4e2a\u6b63\u786e\u7684\u5b9e\u73b0\uff0c\u4f46\u662f\u65f6\u95f4\u5df2\u7ecf\u6d6a\u8d39\u4e86\u3002<\/li>\n<\/ol>\n<\/blockquote>\n<h3>\u5fcd\u8005\u4ee3\u7801<\/h3>\n<p>\u4e0d\u591a\u8bf4\uff0c\u770b\u5c31\u5b8c\u4e86<br \/>\n<a href=\"https:\/\/zh.javascript.info\/ninja-code\">\u5fcd\u8005\u4ee3\u7801<\/a><\/p>\n<h3>\u81ea\u52a8\u5316\u6d4b\u8bd5\uff08\u6d45\u6d45\u4e86\u89e3\uff09<\/h3>\n<p><a href=\"https:\/\/zh.javascript.info\/testing-mocha\">\u4f7f\u7528 Mocha \u8fdb\u884c\u81ea\u52a8\u5316\u6d4b\u8bd5 (javascript.info)<\/a><br \/>\n<strong>\u81ea\u52a8\u5316\u6d4b\u8bd5\u610f\u5473\u7740\u6d4b\u8bd5\u662f\u72ec\u7acb\u4e8e\u4ee3\u7801\u7684\u3002\u5b83\u4eec\u4ee5\u5404\u79cd\u65b9\u5f0f\u8fd0\u884c\u6211\u4eec\u7684\u51fd\u6570\uff0c\u5e76\u5c06\u7ed3\u679c\u4e0e\u9884\u671f\u7ed3\u679c\u8fdb\u884c\u6bd4\u8f83\u3002<\/strong><\/p>\n<pre><code class=\"language-js\">describe(&quot;pow&quot;, function() {\n\n  it(&quot;raises to n-th power&quot;, function() {\n    assert.equal(pow(2, 3), 8);\n  });\n\n});\n<\/code><\/pre>\n<p>\u89c4\u8303\u6709\u4e09\u79cd\u4f7f\u7528\u65b9\u5f0f\uff1a<\/p>\n<ol>\n<li>\u4f5c\u4e3a\u00a0<strong>\u6d4b\u8bd5<\/strong>\u00a0\u2014\u2014 \u4fdd\u8bc1\u4ee3\u7801\u6b63\u786e\u5de5\u4f5c\u3002<\/li>\n<li>\u4f5c\u4e3a\u00a0<strong>\u6587\u6863<\/strong>\u00a0\u2014\u2014\u00a0<code>describe<\/code>\u00a0\u548c\u00a0<code>it<\/code>\u00a0\u7684\u6807\u9898\u544a\u8bc9\u6211\u4eec\u51fd\u6570\u505a\u4e86\u4ec0\u4e48\u3002<\/li>\n<li>\u4f5c\u4e3a\u00a0<strong>\u6848\u4f8b<\/strong>\u00a0\u2014\u2014 \u6d4b\u8bd5\u5b9e\u9645\u5de5\u4f5c\u7684\u4f8b\u5b50\u5c55\u793a\u4e86\u4e00\u4e2a\u51fd\u6570\u53ef\u4ee5\u88ab\u600e\u6837\u4f7f\u7528\u3002<\/li>\n<\/ol>\n<h3>Polyfill  \u548c \u8f6c\u8bd1\u5668<\/h3>\n<p>\u5982\u4f55\u8ba9\u6211\u4eec\u73b0\u4ee3\u7684\u4ee3\u7801\u5728\u8fd8\u4e0d\u652f\u6301\u6700\u65b0\u7279\u6027\u7684\u65e7\u5f15\u64ce\u4e0a\u5de5\u4f5c\uff1f<br \/>\n\u6709\u4e24\u4e2a\u5de5\u4f5c\u53ef\u4ee5\u505a\u5230\u8fd9\u4e00\u70b9\uff1a<\/p>\n<ol>\n<li>\u8f6c\u8bd1\u5668\uff08Transpilers\uff09\u3002<\/li>\n<li>\u57ab\u7247\uff08Polyfills\uff09\u3002<\/li>\n<\/ol>\n<h4>\u8f6c\u8bd1\u5668<\/h4>\n<p>\u8f6c\u8bd1\u5668\u662f\u4e00\u79cd\u53ef\u4ee5\u5c06\u6e90\u7801\u8f6c\u8bd1\u6210\u53e6\u4e00\u79cd\u6e90\u7801\u7684\u7279\u6b8a\u7684\u8f6f\u4ef6\u3002\u5b83\u53ef\u4ee5\u89e3\u6790\uff08\u201c\u9605\u8bfb\u548c\u7406\u89e3\u201d\uff09\u73b0\u4ee3\u4ee3\u7801\uff0c\u5e76\u4f7f\u7528\u65e7\u7684\u8bed\u6cd5\u7ed3\u6784\u5bf9\u5176\u8fdb\u884c\u91cd\u5199\uff0c\u8fdb\u800c\u4f7f\u5176\u4e5f\u53ef\u4ee5\u5728\u65e7\u7684\u5f15\u64ce\u4e2d\u5de5\u4f5c\u3002<br \/>\n\u4f8b\u5982\uff0c\u5728 ES2020 \u4e4b\u524d\u6ca1\u6709\u201c\u7a7a\u503c\u5408\u5e76\u8fd0\u7b97\u7b26\u201d\u00a0<code>??<\/code>\u3002\u6240\u4ee5\uff0c\u5982\u679c\u8bbf\u95ee\u8005\u4f7f\u7528\u8fc7\u65f6\u4e86\u7684\u6d4f\u89c8\u5668\u8bbf\u95ee\u6211\u4eec\u7684\u7f51\u9875\uff0c\u90a3\u4e48\u8be5\u6d4f\u89c8\u5668\u53ef\u80fd\u5c31\u4e0d\u660e\u767d\u00a0<code>height = height ?? 100<\/code>\u00a0\u8fd9\u6bb5\u4ee3\u7801\u7684\u542b\u4e49\u3002<br \/>\n\u8f6c\u8bd1\u5668\u4f1a\u5206\u6790\u6211\u4eec\u7684\u4ee3\u7801\uff0c\u5e76\u5c06\u00a0<code>height ?? 100<\/code>\u00a0\u91cd\u5199\u4e3a\u00a0<code>(height !== undefined &amp;&amp; height !== null) ? height : 100<\/code>\u3002<br \/>\n\u901a\u5e38\uff0c\u5f00\u53d1\u8005\u4f1a\u5728\u81ea\u5df1\u7684\u8ba1\u7b97\u673a\u4e0a\u8fd0\u884c\u8f6c\u8bd1\u5668\uff0c\u7136\u540e\u5c06\u8f6c\u8bd1\u540e\u7684\u4ee3\u7801\u90e8\u7f72\u5230\u670d\u52a1\u5668\u3002<br \/>\n\u8bf4\u5230\u540d\u5b57\uff0c<a href=\"https:\/\/babeljs.io\/\">Babel<\/a>\u00a0\u662f\u6700\u8457\u540d\u7684\u8f6c\u8bd1\u5668\u4e4b\u4e00\u3002<br \/>\n\u73b0\u4ee3\u9879\u76ee\u6784\u5efa\u7cfb\u7edf\uff0c\u4f8b\u5982\u00a0<a href=\"https:\/\/webpack.js.org\/\">webpack<\/a>\uff0c\u63d0\u4f9b\u4e86\u5728\u6bcf\u6b21\u4ee3\u7801\u66f4\u6539\u65f6\u81ea\u52a8\u8fd0\u884c\u8f6c\u8bd1\u5668\u7684\u65b9\u6cd5\uff0c\u56e0\u6b64\u5f88\u5bb9\u6613\u5c06\u4ee3\u7801\u8f6c\u8bd1\u96c6\u6210\u5230\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u3002<\/p>\n<h4>Polyfills<\/h4>\n<p>\u65b0\u7684\u8bed\u8a00\u7279\u6027\u53ef\u80fd\u4e0d\u4ec5\u5305\u62ec\u8bed\u6cd5\u7ed3\u6784\u548c\u8fd0\u7b97\u7b26\uff0c\u8fd8\u53ef\u80fd\u5305\u62ec\u5185\u5efa\u51fd\u6570\u3002<br \/>\n\u4f8b\u5982\uff0c<code>Math.trunc(n)<\/code>\u00a0\u662f\u4e00\u4e2a\u201c\u622a\u65ad\u201d\u6570\u5b57\u5c0f\u6570\u90e8\u5206\u7684\u51fd\u6570\uff0c\u4f8b\u5982\u00a0<code>Math.trunc(1.23)<\/code>\u00a0\u8fd4\u56de\u00a0<code>1<\/code>\u3002<br \/>\n\u5728\u4e00\u4e9b\uff08\u975e\u5e38\u8fc7\u65f6\u7684\uff09JavaScript \u5f15\u64ce\u4e2d\u6ca1\u6709\u00a0<code>Math.trunc<\/code>\u00a0\u51fd\u6570\uff0c\u6240\u4ee5\u8fd9\u6837\u7684\u4ee3\u7801\u4f1a\u6267\u884c\u5931\u8d25\u3002<br \/>\n\u7531\u4e8e\u6211\u4eec\u8c08\u8bba\u7684\u662f\u65b0\u51fd\u6570\uff0c\u800c\u4e0d\u662f\u8bed\u6cd5\u66f4\u6539\uff0c\u56e0\u6b64\u65e0\u9700\u5728\u6b64\u5904\u8f6c\u8bd1\u4efb\u4f55\u5185\u5bb9\u3002\u6211\u4eec\u53ea\u9700\u8981\u58f0\u660e\u7f3a\u5931\u7684\u51fd\u6570\u3002<br \/>\n\u66f4\u65b0\/\u6dfb\u52a0\u65b0\u51fd\u6570\u7684\u811a\u672c\u88ab\u79f0\u4e3a\u201cpolyfill\u201d\u3002\u5b83\u201c\u586b\u8865\u201d\u4e86\u7a7a\u767d\u5e76\u6dfb\u52a0\u4e86\u7f3a\u5931\u7684\u5b9e\u73b0\u3002<br \/>\nJavaScript \u662f\u4e00\u79cd\u9ad8\u5ea6\u52a8\u6001\u7684\u8bed\u8a00\u3002\u811a\u672c\u53ef\u4ee5\u6dfb\u52a0\/\u4fee\u6539\u4efb\u4f55\u51fd\u6570\uff0c\u751a\u81f3\u5305\u62ec\u5185\u5efa\u51fd\u6570\u3002<br \/>\n\u4e24\u4e2a\u6709\u8da3\u7684 polyfill \u5e93\uff1a<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/zloirock\/core-js\">core js<\/a>\u00a0\u652f\u6301\u4e86\u5f88\u591a\u7279\u6027\uff0c\u5141\u8bb8\u53ea\u5305\u542b\u9700\u8981\u7684\u7279\u6027\u3002<\/li>\n<li><a href=\"http:\/\/polyfill.io\/\">polyfill.io<\/a>\u00a0\u63d0\u4f9b\u5e26\u6709 polyfill \u7684\u811a\u672c\u7684\u670d\u52a1\uff0c\u5177\u4f53\u53d6\u51b3\u4e8e\u7279\u6027\u548c\u7528\u6237\u7684\u6d4f\u89c8\u5668\u3002<\/li>\n<\/ul>\n<h2>\u5bf9\u8c61<\/h2>\n<h3>\u57fa\u7840<\/h3>\n<p>\u7c7b\u4f3c\u5b57\u5178<\/p>\n<pre><code class=\"language-js\">let user = new Object(); \/\/\u201c\u6784\u9020\u51fd\u6570\u201d\u7684\u8bed\u6cd5\nlet user = {}; \/\/\u201c\u5b57\u9762\u91cf\u201d\u7684\u8bed\u6cd5\n\nlet user = {\n\tname: &quot;Levin&quot;,\n\tage: 20,\n\t&quot;Likes something&quot;: true, \/\/ \u591a\u8bcd\u5c5e\u6027\u540d\u52a0\u5f15\u53f7\n\tkey: value, \/\/\u5e94\u4ee5\u9017\u53f7\u7ed3\u5c3e\n\t\/\/ \u5c3e\u968f\uff08trailing\uff09\u6216\u60ac\u6302\uff08hanging\uff09\u9017\u53f7\u3002\u8fd9\u6837\u4fbf\u4e8e\u6211\u4eec\u6dfb\u52a0\u3001\u5220\u9664\u548c\u79fb\u52a8\u5c5e\u6027\uff0c\u56e0\u4e3a\u6240\u6709\u7684\u884c\u90fd\u662f\u76f8\u4f3c\u7684\u3002\n};\n\nconsole.log(user.name); \/\/ Levin\nconsole.log(user.age); \/\/ 20\n\nuser.isAdmin = true; \/\/ add \ndelete user.age; \/\/ del\n\n\/\/ \u70b9\u8fd0\u7b97\u7b26\u8981\u6c42key\u662f\u6709\u6548\u7684\u53d8\u91cf\u6807\u8bc6\u7b26\uff1a\u5305\u542b\u7a7a\u683c\uff0c\u4e0d\u4ee5\u6570\u5b57\u5f00\u5934\uff0c\u4e5f\u4e0d\u5305\u542b\u7279\u6b8a\u5b57\u7b26\uff08\u5141\u8bb8\u4f7f\u7528\u00a0`$`\u00a0\u548c\u00a0`_`\uff09\n\/\/ user.Likes something -- error\nconsole.log(user[&quot;Likes something&quot;])\n\/\/ \u65b9\u62ec\u53f7\u9002\u7528\u4efb\u4f55\u5b57\u7b26\u4e32\n\nlet key = &quot;Likes something&quot;;\nuser[key] = true;\n\/\/ \u65b9\u62ec\u53f7\u4f18\u70b9\n\n\n\/\/\u8ba1\u7b97\u5c5e\u6027\nlet fruit = prompt(&quot;Which fruit to buy?&quot;, &quot;apple&quot;);\nlet bag = {\n\t[fruit]: 5,\n};\nalert(bag.apple);\n\n\/\/\u5c5e\u6027\u503c\u7b80\u5199\uff0c\u5c06\u5df2\u5b58\u5728\u7684\u53d8\u91cf\u5f53\u505a\u5c5e\u6027\u540d\nfunction makeUser(name, age) {\n\treturn {\n\t\tname, \/\/ \u7b49\u540c\u4e8e name: name\n\t\tage, \/\/ \u7b49\u540c\u4e8e age: age\n\t};\n}\n\n\/\/\u5c5e\u6027\u540d\u79f0\u9650\u5236\uff0c\u901a\u5e38\u53d8\u91cf\u540d\u4e0d\u80fd\u662f\u7f16\u7a0b\u8bed\u8a00\u7684\u4fdd\u7559\u5b57\uff0c\u5982&quot;for&quot;\u7b49\n\/\/\u4f46\u5bf9\u8c61\u7684\u5c5e\u6027\u540d\u4e0d\u53d7\u9650\u5236,\u5c5e\u6027\u547d\u540d\u6ca1\u6709\u9650\u5236\u3002\u5c5e\u6027\u540d\u53ef\u4ee5\u662f\u4efb\u4f55\u5b57\u7b26\u4e32\u6216\u8005 symbol\uff0c\u5176\u4ed6\u7c7b\u578b\u4f1a\u88ab\u81ea\u52a8\u5730\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\nlet obj = {\n\tfor: 1,\n\tlet: 2,\n\treturn: 3,\n};\n\n\/\/ a little trap: \u540d\u4e3a__proto__\u7684\u5c5e\u6027\u3002\u4e0d\u80fd\u5c06\u5176\u8bbe\u7f6e\u4e3a\u4e00\u4e2a\u975e\u5bf9\u8c61\u7684\u503c\nlet obj = {};\nobj.__proto__ = 5; \/\/ \u6b64\u64cd\u4f5c\u5c06\u88ab\u5ffd\u7565\nalert(obj.__proto__); \/\/ [object Object]\n\/\/ \u5c06\u5728\u540e\u7eed\u5b66\u4e60\n\n\n\/\/ \u5c5e\u6027\u5b58\u5728\u6027\u6d4b\u8bd5\uff0cin\u64cd\u4f5c\u7b26\uff0c&quot;key&quot; in object\n\/\/ \u76f8\u6bd4\u4e8e\u5176\u4ed6\u8bed\u8a00\uff0cJavaScript \u7684\u5bf9\u8c61\u80fd\u591f\u88ab\u8bbf\u95ee\u4efb\u4f55\u5c5e\u6027\u3002\u5373\u4f7f\u5c5e\u6027\u4e0d\u5b58\u5728\u4e5f\u4e0d\u4f1a\u62a5\u9519\uff0c\u53ea\u4f1a\u8fd4\u56deundefined\uff01\nlet user = { name: &quot;Levin&quot; };\nalert(&quot;name&quot; in user) \/\/ true\nalert(&quot;age&quot; in user) \/\/ false\nlet name = &quot;name&quot; \/\/ \u4e0d\u52a0\u5f15\u53f7\u4e3a\u53d8\u91cf\u540d\nalert(name in user) \/\/ true\n\n\/\/ \u4e3a\u4ec0\u4e48\u4f1a\u5b58\u5728in\u64cd\u4f5c\u7b26\uff0c\u5c06\u5c5e\u6027\u4e0eundefined\u6bd4\u8f83\u4e0d\u884c\u5417\uff0c\u8003\u8651\u4ee5\u4e0b\u60c5\u51b5\uff1a\nlet obj = {\n\ttest: undefined\n};\n\/\/ \u5c5e\u6027\u5b58\u5728\uff0c\u4f46\u662fundefined\uff0c\u8fd9\u79cd\u60c5\u51b5\u5f88\u5c11\u53d1\u751f\uff0c\u901a\u5e38\u7ed9\u53d8\u91cf\u8d4b\u503cnull\u800c\u4e0d\u662fundefined\n\n\/\/ for...in\u5faa\u73af\uff0c\u5faa\u73af\u53d8\u91cf\u53ef\u7528key\uff0cprop\nfor (let key in user) {\n\talert(key);\n\talert(user[key]);\n}\n\n\/\/ \u5bf9\u8c61\u6709\u987a\u5e8f\u5417\uff1f\n\/\/ \u201c\u6709\u7279\u522b\u7684\u987a\u5e8f\u201d\uff1a\u6574\u6570\u5c5e\u6027\u4f1a\u88ab\u8fdb\u884c\u6392\u5e8f\uff0c\u5176\u4ed6\u5c5e\u6027\u5219\u6309\u7167\u521b\u5efa\u7684\u987a\u5e8f\u663e\u793a\u3002\nlet codes = {\n  &quot;49&quot;: &quot;Germany&quot;,\n  &quot;41&quot;: &quot;Switzerland&quot;,\n  &quot;44&quot;: &quot;Great Britain&quot;,\n  \/\/ ..,\n  &quot;1&quot;: &quot;USA&quot;\n};\ncode[&quot;+86&quot;] = &quot;China&quot;;\ncode[&quot;-114&quot;] = &quot;514&quot;;\n\nfor(let code in codes) {\n  alert(code); \/\/ 1, 41, 44, 49, +86, -114\n}\n\n\/\/ \u6574\u6570\u5c5e\u6027\uff1f\u6307\u7684\u662f\u4e00\u4e2a\u53ef\u4ee5\u5728\u4e0d\u505a\u4efb\u4f55\u66f4\u6539\u7684\u60c5\u51b5\u4e0b\u4e0e\u4e00\u4e2a\u6574\u6570\u8fdb\u884c\u76f8\u4e92\u8f6c\u6362\u7684\u5b57\u7b26\u4e32\u3002\n\/\/ \u5982&quot;49&quot;\u00a0\u662f\u4e00\u4e2a\u6574\u6570\u5c5e\u6027\u540d\uff0c\u56e0\u4e3a\u6211\u4eec\u628a\u5b83\u8f6c\u6362\u6210\u6574\u6570\uff0c\u518d\u8f6c\u6362\u56de\u6765\uff0c\u5b83\u8fd8\u662f\u4e00\u6837\u7684\u3002\nString(Math.trunc(Number(&quot;49&quot;))) == &quot;49&quot;\n<\/code><\/pre>\n<h3>\u5f15\u7528\u4e0e\u590d\u5236<\/h3>\n<p>\u5bf9\u8c61\u4e0e\u539f\u59cb\u7c7b\u578b\u7684\u6839\u672c\u533a\u522b\u4e4b\u4e00\u662f\uff0c\u5bf9\u8c61\u662f\u201c\u901a\u8fc7\u5f15\u7528\u201d\u5b58\u50a8\u548c\u590d\u5236\u7684\uff0c\u800c\u539f\u59cb\u7c7b\u578b\uff1a\u5b57\u7b26\u4e32\u3001\u6570\u5b57\u3001\u5e03\u5c14\u503c\u7b49 \u2014\u2014 \u603b\u662f\u201c\u4f5c\u4e3a\u4e00\u4e2a\u6574\u4f53\u201d\u590d\u5236<\/p>\n<pre><code class=\"language-js\">let message = &quot;Hello!&quot;;\nlet phrase = message;\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240422154209.png\" alt=\"Pasted image 20240422154209.png\"><\/p>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;\n};\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240422154241.png\" alt=\"Pasted image 20240422154241.png\"><\/p>\n<pre><code class=\"language-js\">let user = { name: &quot;John&quot; };\nlet admin = user; \/\/ \u590d\u5236\u5f15\u7528\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/levin.ink\/wp-content\/uploads\/2024\/05\/Pasted-image-20240422154313.png\" alt=\"Pasted image 20240422154313.png\"><\/p>\n<pre><code class=\"language-js\">let user = { name: 'John' };\nlet admin = user;\nadmin.name = 'Pete'; \/\/ \u901a\u8fc7 &quot;admin&quot; \u5f15\u7528\u6765\u4fee\u6539\nalert(user.name); \/\/ 'Pete'\uff0c\u4fee\u6539\u80fd\u901a\u8fc7 &quot;user&quot; \u5f15\u7528\u770b\u5230\n<\/code><\/pre>\n<h4>\u901a\u8fc7\u5f15\u7528\u6bd4\u8f83<\/h4>\n<pre><code class=\"language-js\">let a = {};\nlet b = a; \/\/ \u590d\u5236\u5f15\u7528\n\nalert( a == b ); \/\/ true\uff0c\u90fd\u5f15\u7528\u540c\u4e00\u5bf9\u8c61\nalert( a === b ); \/\/ true\n<\/code><\/pre>\n<pre><code class=\"language-js\">let a = {};\nlet b = {}; \/\/ \u4e24\u4e2a\u72ec\u7acb\u7684\u5bf9\u8c61\n\nalert( a == b ); \/\/ false\n<\/code><\/pre>\n<h4>\u514b\u9686\u4e0e\u5408\u5e76 Object.assign\uff08\u6d45\u5c42\u62f7\u8d1d\uff09<\/h4>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  age: 30\n};\n\nlet clone = {}; \/\/ \u65b0\u7684\u7a7a\u5bf9\u8c61\n\n\/\/ \u5c06 user \u4e2d\u6240\u6709\u7684\u5c5e\u6027\u62f7\u8d1d\u5230\u5176\u4e2d\nfor (let key in user) {\n  clone[key] = user[key];\n}\n\n\/\/ \u73b0\u5728 clone \u662f\u5e26\u6709\u76f8\u540c\u5185\u5bb9\u7684\u5b8c\u5168\u72ec\u7acb\u7684\u5bf9\u8c61\nclone.name = &quot;Pete&quot;; \/\/ \u6539\u53d8\u4e86\u5176\u4e2d\u7684\u6570\u636e\n\nalert( user.name ); \/\/ \u539f\u6765\u7684\u5bf9\u8c61\u4e2d\u7684 name \u5c5e\u6027\u4f9d\u7136\u662f John\n<\/code><\/pre>\n<p>or<\/p>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  age: 30\n};\n\nlet clone = Object.assign({}, user);\n<\/code><\/pre>\n<p>\u5408\u5e76\u591a\u4e2a\u5bf9\u8c61<\/p>\n<pre><code class=\"language-js\">\/\/ Object.assign(dest, [src1, src2, src3...])\nlet user = { name: &quot;John&quot; };\n\nlet permissions1 = { canView: true };\nlet permissions2 = { canEdit: true };\n\n\/\/ \u5c06 permissions1 \u548c permissions2 \u4e2d\u7684\u6240\u6709\u5c5e\u6027\u90fd\u62f7\u8d1d\u5230 user \u4e2d\nObject.assign(user, permissions1, permissions2);\n\n\/\/ \u73b0\u5728 user = { name: &quot;John&quot;, canView: true, canEdit: true }\n<\/code><\/pre>\n<h4>\u6df1\u5c42\u514b\u9686<\/h4>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  sizes: {\n    height: 182,\n    width: 50\n  }\n};\n\nalert( user.sizes.height ); \/\/ 182\n<\/code><\/pre>\n<pre><code class=\"language-js\">let clone = Object.assign({}, user);\n\nalert( user.sizes === clone.sizes ); \/\/ true\uff0c\u540c\u4e00\u4e2a\u5bf9\u8c61\n\n\/\/ user \u548c clone \u5206\u4eab\u540c\u4e00\u4e2a sizes\nuser.sizes.width++;       \/\/ \u901a\u8fc7\u5176\u4e2d\u4e00\u4e2a\u6539\u53d8\u5c5e\u6027\u503c\nalert(clone.sizes.width); \/\/ 51\uff0c\u80fd\u4ece\u53e6\u5916\u4e00\u4e2a\u83b7\u53d6\u5230\u53d8\u66f4\u540e\u7684\u7ed3\u679c\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u5e76\u8ba9\u00a0<code>user<\/code>\u00a0\u548c\u00a0<code>clone<\/code>\u00a0\u6210\u4e3a\u4e24\u4e2a\u771f\u6b63\u72ec\u7acb\u7684\u5bf9\u8c61\uff0c\u6211\u4eec\u5e94\u8be5\u4f7f\u7528\u4e00\u4e2a\u62f7\u8d1d\u5faa\u73af\u6765\u68c0\u67e5\u00a0<code>user[key]<\/code>\u00a0\u7684\u6bcf\u4e2a\u503c\uff0c\u5982\u679c\u5b83\u662f\u4e00\u4e2a\u5bf9\u8c61\uff0c\u90a3\u4e48\u4e5f\u590d\u5236\u5b83\u7684\u7ed3\u6784\u3002\u8fd9\u5c31\u662f\u6240\u8c13\u7684\u201c\u6df1\u62f7\u8d1d\u201d\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u9012\u5f52\u6765\u5b9e\u73b0\u5b83\u3002\u6216\u8005\u4e3a\u4e86\u4e0d\u91cd\u590d\u9020\u8f6e\u5b50\uff0c\u91c7\u7528\u73b0\u6709\u7684\u5b9e\u73b0\uff0c\u4f8b\u5982\u00a0<a href=\"https:\/\/lodash.com\/\">lodash<\/a>\u00a0\u5e93\u7684\u00a0<a href=\"https:\/\/lodash.com\/docs#cloneDeep\">_.cloneDeep(obj)<\/a>\u3002<\/p>\n<blockquote>\n<p>\u4f7f\u7528 const \u58f0\u660e\u7684\u5bf9\u8c61\u4e5f\u662f\u53ef\u4ee5\u88ab\u4fee\u6539\u7684<br \/>\n\u901a\u8fc7\u5f15\u7528\u5bf9\u5bf9\u8c61\u8fdb\u884c\u5b58\u50a8\u7684\u4e00\u4e2a\u91cd\u8981\u7684\u526f\u4f5c\u7528\u662f\u58f0\u660e\u4e3a\u00a0<code>const<\/code>\u00a0\u7684\u5bf9\u8c61\u00a0<strong>\u53ef\u4ee5<\/strong>\u00a0\u88ab\u4fee\u6539\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">const user = {\n  name: &quot;John&quot;\n};\n\nuser.name = &quot;Pete&quot;; \/\/ (*)\n\nalert(user.name); \/\/ Pete\n<\/code><\/pre>\n<blockquote>\n<p>\u770b\u8d77\u6765\u00a0<code>(*)<\/code>\u00a0\u884c\u7684\u4ee3\u7801\u4f1a\u89e6\u53d1\u4e00\u4e2a\u9519\u8bef\uff0c\u4f46\u5b9e\u9645\u5e76\u6ca1\u6709\u3002<code>user<\/code>\u00a0\u7684\u503c\u662f\u4e00\u4e2a\u5e38\u91cf\uff0c\u5b83\u5fc5\u987b\u59cb\u7ec8\u5f15\u7528\u540c\u4e00\u4e2a\u5bf9\u8c61\uff0c\u4f46\u8be5\u5bf9\u8c61\u7684\u5c5e\u6027\u53ef\u4ee5\u88ab\u81ea\u7531\u4fee\u6539\u3002<br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c\u53ea\u6709\u5f53\u6211\u4eec\u5c1d\u8bd5\u5c06\u00a0<code>user=...<\/code>\u00a0\u4f5c\u4e3a\u4e00\u4e2a\u6574\u4f53\u8fdb\u884c\u8d4b\u503c\u65f6\uff0c<code>const user<\/code>\u00a0\u624d\u4f1a\u62a5\u9519\u3002<br \/>\n\u4e5f\u5c31\u662f\u8bf4\uff0c\u5982\u679c\u6211\u4eec\u771f\u7684\u9700\u8981\u521b\u5efa\u5e38\u91cf\u5bf9\u8c61\u5c5e\u6027\uff0c\u4e5f\u662f\u53ef\u4ee5\u7684\uff0c\u4f46\u4f7f\u7528\u7684\u662f\u5b8c\u5168\u4e0d\u540c\u7684\u65b9\u6cd5\u3002<\/p>\n<\/blockquote>\n<h3>\u5783\u573e\u56de\u6536<\/h3>\n<p>JavaScript \u7684\u5185\u5b58\u7ba1\u7406\u662f\u81ea\u52a8\u7684\u3001\u65e0\u5f62\u7684\u3002\u6211\u4eec\u521b\u5efa\u7684\u539f\u59cb\u503c\u3001\u5bf9\u8c61\u3001\u51fd\u6570\u2026\u2026\u8fd9\u4e00\u5207\u90fd\u4f1a\u5360\u7528\u5185\u5b58\u3002<br \/>\n\u5f53\u6211\u4eec\u4e0d\u518d\u9700\u8981\u67d0\u4e2a\u4e1c\u897f\u65f6\u4f1a\u53d1\u751f\u4ec0\u4e48\uff1fJavaScript \u5f15\u64ce\u5982\u4f55\u53d1\u73b0\u5b83\u5e76\u6e05\u7406\u5b83\uff1f<br \/>\n\u7c7b\u4f3cjava<br \/>\n\u81ea\u52a8\u5185\u5b58\u7ba1\u7406\uff08\u5783\u573e\u56de\u6536\uff09\u9635\u8425\uff1a<br \/>\nJavaScript\u3001Java\u3001Go\u3001Python\u3001PHP\u3001Ruby\u3001C#<br \/>\n\u624b\u52a8\u5185\u5b58\u7ba1\u7406\u9635\u8425\uff1a<br \/>\nC\u3001C++\u3001Rust<\/p>\n<h4>\u53ef\u8fbe\u6027<\/h4>\n<ol>\n<li>\u8fd9\u91cc\u5217\u51fa\u56fa\u6709\u7684\u53ef\u8fbe\u503c\u7684\u57fa\u672c\u96c6\u5408\uff0c\u8fd9\u4e9b\u503c\u660e\u663e\u4e0d\u80fd\u88ab\u91ca\u653e\u3002\n<ul>\n<li>\u5f53\u524d\u6267\u884c\u7684\u51fd\u6570\uff0c\u5b83\u7684\u5c40\u90e8\u53d8\u91cf\u548c\u53c2\u6570\u3002<\/li>\n<li>\u5f53\u524d\u5d4c\u5957\u8c03\u7528\u94fe\u4e0a\u7684\u5176\u4ed6\u51fd\u6570\u3001\u5b83\u4eec\u7684\u5c40\u90e8\u53d8\u91cf\u548c\u53c2\u6570\u3002<\/li>\n<li>\u5168\u5c40\u53d8\u91cf\u3002<\/li>\n<li>\uff08\u8fd8\u6709\u4e00\u4e9b\u5185\u90e8\u7684\uff09<br \/>\n\u8fd9\u4e9b\u503c\u88ab\u79f0\u4f5c\u00a0<strong>\u6839\uff08roots\uff09<\/strong>\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u5982\u679c\u4e00\u4e2a\u503c\u53ef\u4ee5\u901a\u8fc7\u5f15\u7528\u94fe\u4ece\u6839\u8bbf\u95ee\u4efb\u4f55\u5176\u4ed6\u503c\uff0c\u5219\u8ba4\u4e3a\u8be5\u503c\u662f\u53ef\u8fbe\u7684\u3002<br \/>\n\u6bd4\u65b9\u8bf4\uff0c\u5982\u679c\u5168\u5c40\u53d8\u91cf\u4e2d\u6709\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5e76\u4e14\u8be5\u5bf9\u8c61\u6709\u4e00\u4e2a\u5c5e\u6027\u5f15\u7528\u4e86\u53e6\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5219\u00a0<strong>\u8be5<\/strong>\u00a0\u5bf9\u8c61\u88ab\u8ba4\u4e3a\u662f\u53ef\u8fbe\u7684\u3002\u800c\u4e14\u5b83\u5f15\u7528\u7684\u5185\u5bb9\u4e5f\u662f\u53ef\u8fbe\u7684\u3002<br \/>\n\u5728 JavaScript \u5f15\u64ce\u4e2d\u6709\u4e00\u4e2a\u88ab\u79f0\u4f5c\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Garbage_collection_(computer_science)\">\u5783\u573e\u56de\u6536\u5668<\/a>\u00a0\u7684\u4e1c\u897f\u5728\u540e\u53f0\u6267\u884c\u3002\u5b83\u76d1\u63a7\u7740\u6240\u6709\u5bf9\u8c61\u7684\u72b6\u6001\uff0c\u5e76\u5220\u9664\u6389\u90a3\u4e9b\u5df2\u7ecf\u4e0d\u53ef\u8fbe\u7684\u3002<\/li>\n<\/ol>\n<h4>\u7b97\u6cd5 \u201cmark-and-sweep\u201d<\/h4>\n<p>\u5b9a\u671f\u6267\u884c\u4ee5\u4e0b\u201c\u5783\u573e\u56de\u6536\u201d\u6b65\u9aa4\uff1a<\/p>\n<ul>\n<li>\u5783\u573e\u6536\u96c6\u5668\u627e\u5230\u6240\u6709\u7684\u6839\uff0c\u5e76\u201c\u6807\u8bb0\u201d\uff08\u8bb0\u4f4f\uff09\u5b83\u4eec\u3002<\/li>\n<li>\u7136\u540e\u5b83\u904d\u5386\u5e76\u201c\u6807\u8bb0\u201d\u6765\u81ea\u5b83\u4eec\u7684\u6240\u6709\u5f15\u7528\u3002<\/li>\n<li>\u7136\u540e\u5b83\u904d\u5386\u6807\u8bb0\u7684\u5bf9\u8c61\u5e76\u6807\u8bb0\u00a0<strong>\u5b83\u4eec\u7684<\/strong>\u00a0\u5f15\u7528\u3002\u6240\u6709\u88ab\u904d\u5386\u5230\u7684\u5bf9\u8c61\u90fd\u4f1a\u88ab\u8bb0\u4f4f\uff0c\u4ee5\u514d\u5c06\u6765\u518d\u6b21\u904d\u5386\u5230\u540c\u4e00\u4e2a\u5bf9\u8c61\u3002<\/li>\n<li>\u2026\u2026\u5982\u6b64\u64cd\u4f5c\uff0c\u76f4\u5230\u6240\u6709\u53ef\u8fbe\u7684\uff08\u4ece\u6839\u90e8\uff09\u5f15\u7528\u90fd\u88ab\u8bbf\u95ee\u5230\u3002<\/li>\n<li>\u6ca1\u6709\u88ab\u6807\u8bb0\u7684\u5bf9\u8c61\u90fd\u4f1a\u88ab\u5220\u9664\u3002<br \/>\n\u8fd9\u662f\u5783\u573e\u6536\u96c6\u5de5\u4f5c\u7684\u6982\u5ff5\u3002JavaScript \u5f15\u64ce\u505a\u4e86\u8bb8\u591a\u4f18\u5316\uff0c\u4f7f\u5783\u573e\u56de\u6536\u8fd0\u884c\u901f\u5ea6\u66f4\u5feb\uff0c\u5e76\u4e14\u4e0d\u4f1a\u5bf9\u4ee3\u7801\u6267\u884c\u5f15\u5165\u4efb\u4f55\u5ef6\u8fdf\u3002<br \/>\n\u4e00\u4e9b\u4f18\u5316\u5efa\u8bae\uff1a<\/li>\n<li><strong>\u5206\u4ee3\u6536\u96c6\uff08Generational collection\uff09<\/strong>\u2014\u2014 \u5bf9\u8c61\u88ab\u5206\u6210\u4e24\u7ec4\uff1a\u201c\u65b0\u7684\u201d\u548c\u201c\u65e7\u7684\u201d\u3002\u5728\u5178\u578b\u7684\u4ee3\u7801\u4e2d\uff0c\u8bb8\u591a\u5bf9\u8c61\u7684\u751f\u547d\u5468\u671f\u90fd\u5f88\u77ed\uff1a\u5b83\u4eec\u51fa\u73b0\u3001\u5b8c\u6210\u5b83\u4eec\u7684\u5de5\u4f5c\u5e76\u5f88\u5feb\u6b7b\u53bb\uff0c\u56e0\u6b64\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\u8ddf\u8e2a\u65b0\u5bf9\u8c61\u5e76\u5c06\u5176\u4ece\u5185\u5b58\u4e2d\u6e05\u9664\u662f\u6709\u610f\u4e49\u7684\u3002\u90a3\u4e9b\u957f\u671f\u5b58\u6d3b\u7684\u5bf9\u8c61\u4f1a\u53d8\u5f97\u201c\u8001\u65e7\u201d\uff0c\u5e76\u4e14\u88ab\u68c0\u67e5\u7684\u9891\u6b21\u4e5f\u4f1a\u964d\u4f4e\u3002<\/li>\n<li><strong>\u589e\u91cf\u6536\u96c6\uff08Incremental collection\uff09<\/strong>\u2014\u2014 \u5982\u679c\u6709\u8bb8\u591a\u5bf9\u8c61\uff0c\u5e76\u4e14\u6211\u4eec\u8bd5\u56fe\u4e00\u6b21\u904d\u5386\u5e76\u6807\u8bb0\u6574\u4e2a\u5bf9\u8c61\u96c6\uff0c\u5219\u53ef\u80fd\u9700\u8981\u4e00\u4e9b\u65f6\u95f4\uff0c\u5e76\u5728\u6267\u884c\u8fc7\u7a0b\u4e2d\u5e26\u6765\u660e\u663e\u7684\u5ef6\u8fdf\u3002\u56e0\u6b64\uff0c\u5f15\u64ce\u5c06\u73b0\u6709\u7684\u6574\u4e2a\u5bf9\u8c61\u96c6\u62c6\u5206\u4e3a\u591a\u4e2a\u90e8\u5206\uff0c\u7136\u540e\u5c06\u8fd9\u4e9b\u90e8\u5206\u9010\u4e00\u6e05\u9664\u3002\u8fd9\u6837\u5c31\u4f1a\u6709\u5f88\u591a\u5c0f\u578b\u7684\u5783\u573e\u6536\u96c6\uff0c\u800c\u4e0d\u662f\u4e00\u4e2a\u5927\u578b\u7684\u3002\u8fd9\u9700\u8981\u5b83\u4eec\u4e4b\u95f4\u6709\u989d\u5916\u7684\u6807\u8bb0\u6765\u8ffd\u8e2a\u53d8\u5316\uff0c\u4f46\u662f\u8fd9\u6837\u4f1a\u5e26\u6765\u8bb8\u591a\u5fae\u5c0f\u7684\u5ef6\u8fdf\u800c\u4e0d\u662f\u4e00\u4e2a\u5927\u7684\u5ef6\u8fdf\u3002<\/li>\n<li><strong>\u95f2\u65f6\u6536\u96c6\uff08Idle-time collection\uff09<\/strong>\u2014\u2014 \u5783\u573e\u6536\u96c6\u5668\u53ea\u4f1a\u5728 CPU \u7a7a\u95f2\u65f6\u5c1d\u8bd5\u8fd0\u884c\uff0c\u4ee5\u51cf\u5c11\u53ef\u80fd\u5bf9\u4ee3\u7801\u6267\u884c\u7684\u5f71\u54cd\u3002<\/li>\n<\/ul>\n<h3>\u5bf9\u8c61\u65b9\u6cd5 &quot;this&quot;<\/h3>\n<h4>\u65b9\u6cd5\u7b80\u5199<\/h4>\n<pre><code class=\"language-js\">let user = {\n\tsayHi: function() {\n\t\talert(&quot;hello&quot;);\n\t}\n}\n\n\/\/ |\n\/\/ V\n\nlet user = {\n\tsayHi() {\n\t\talert(&quot;hello&quot;);\n\t},\n}\n<\/code><\/pre>\n<h4>\u65b9\u6cd5\u4e2d\u7684 &quot;this&quot;<\/h4>\n<p>\u901a\u5e38\uff0c\u5bf9\u8c61\u65b9\u6cd5\u9700\u8981\u8bbf\u95ee\u5bf9\u8c61\u4e2d\u5b58\u50a8\u7684\u4fe1\u606f\u624d\u80fd\u5b8c\u6210\u5176\u5de5\u4f5c\u3002<br \/>\n<strong>\u4e3a\u4e86\u8bbf\u95ee\u8be5\u5bf9\u8c61\uff0c\u65b9\u6cd5\u4e2d\u53ef\u4ee5\u4f7f\u7528\u00a0<code>this<\/code>\u00a0\u5173\u952e\u5b57\u3002<\/strong><\/p>\n<pre><code class=\"language-js\">let user = {\n\tname: &quot;Levin&quot;,\n\tsayHi() {\n\t\talert(&quot;hello&quot; + this.name);\n\t}\n};\n\nuser.sayHi();\n<\/code><\/pre>\n<p>\u5982\u679c\u4e0d\u7528this\u7528\u5916\u90e8\u53d8\u91cf\u540d\u6765\u5f15\u7528\uff0c\u662f\u4e0d\u53ef\u9760\u7684\uff0c\u5982\u679c\u5c06\u8be5\u53d8\u91cf\u590d\u5236\u7ed9\u53e6\u4e00\u4e2a\u53d8\u91cf\uff0c\u5c06\u4f1a\u8bbf\u95ee\u5230\u4e00\u4e2a\u9519\u8bef\u7684\u5bf9\u8c61\u3002<br \/>\n\u5230\u76ee\u524d\u4e3a\u6b62\uff0cthis\u548c\u5927\u591a\u6570\u7f16\u7a0b\u8bed\u8a00\u7684this\u7c7b\u4f3c\u3002<\/p>\n<h4>&quot;this&quot; \u4e0d\u53d7\u9650\u5236<\/h4>\n<p>JavaScript \u4e2d\u7684\u00a0<code>this<\/code>\u00a0\u53ef\u4ee5\u7528\u4e8e\u4efb\u4f55\u51fd\u6570\uff0c\u5373\u4f7f\u5b83\u4e0d\u662f\u5bf9\u8c61\u7684\u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ \u65e0\u8bed\u6cd5\u9519\u8bef\nfunction sayHi() {\n\talert(this.name);\n}\n\nlet user = { name: &quot;Levin&quot; };\nlet admin = { name: &quot;Admin&quot; };\n\nuser.f = sayHi;\nadmin.f = sayHi;\n\/\/ \u8fd9\u4e24\u4e2a\u8c03\u7528\u6709\u4e0d\u540c\u7684 this \u503c\n\/\/ \u51fd\u6570\u5185\u90e8\u7684 &quot;this&quot; \u662f\u201c\u70b9\u7b26\u53f7\u524d\u9762\u201d\u7684\u90a3\u4e2a\u5bf9\u8c61\nuser.f(); \/\/\uff08this == user\uff09\nadmin.f(); \/\/\uff08this == admin\uff09\n<\/code><\/pre>\n<blockquote>\n<p>\u5728\u6ca1\u6709\u5bf9\u8c61\u7684\u60c5\u51b5\u4e0b\u8c03\u7528\uff1a<code>this == undefined<\/code><\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">function sayHi() {\n  alert(this);\n}\n\nsayHi(); \/\/ undefined\n<\/code><\/pre>\n<blockquote>\n<p>\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u4e25\u683c\u6a21\u5f0f\u4e0b\u7684\u00a0<code>this<\/code>\u00a0\u503c\u4e3a\u00a0<code>undefined<\/code>\u3002\u5982\u679c\u6211\u4eec\u5c1d\u8bd5\u8bbf\u95ee\u00a0<code>this.name<\/code>\uff0c\u5c06\u4f1a\u62a5\u9519\u3002<br \/>\n\u5728\u975e\u4e25\u683c\u6a21\u5f0f\u7684\u60c5\u51b5\u4e0b\uff0c<code>this<\/code>\u00a0\u5c06\u4f1a\u662f\u00a0<strong>\u5168\u5c40\u5bf9\u8c61<\/strong>\uff08\u6d4f\u89c8\u5668\u4e2d\u7684\u00a0<code>window<\/code>\uff0c\u6211\u4eec\u7a0d\u540e\u4f1a\u5728\u00a0<a href=\"https:\/\/zh.javascript.info\/global-object\">\u5168\u5c40\u5bf9\u8c61<\/a>\u00a0\u4e00\u7ae0\u4e2d\u5b66\u4e60\u5b83\uff09\u3002\u8fd9\u662f\u4e00\u4e2a\u5386\u53f2\u884c\u4e3a\uff0c<code>&quot;use strict&quot;<\/code>\u00a0\u5df2\u7ecf\u5c06\u5176\u4fee\u590d\u4e86\u3002<br \/>\n\u901a\u5e38\u8fd9\u79cd\u8c03\u7528\u662f\u7a0b\u5e8f\u51fa\u9519\u4e86\u3002\u5982\u679c\u5728\u4e00\u4e2a\u51fd\u6570\u5185\u90e8\u6709\u00a0<code>this<\/code>\uff0c\u90a3\u4e48\u901a\u5e38\u610f\u5473\u7740\u5b83\u662f\u5728\u5bf9\u8c61\u4e0a\u4e0b\u6587\u73af\u5883\u4e2d\u88ab\u8c03\u7528\u7684\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u89e3\u9664\u00a0<code>this<\/code>\u00a0\u7ed1\u5b9a\u7684\u540e\u679c<br \/>\n\u5982\u679c\u4f60\u7ecf\u5e38\u4f7f\u7528\u5176\u4ed6\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u90a3\u4e48\u4f60\u53ef\u80fd\u5df2\u7ecf\u4e60\u60ef\u4e86\u201c\u7ed1\u5b9a\u00a0<code>this<\/code>\u201d\u7684\u6982\u5ff5\uff0c\u5373\u5728\u5bf9\u8c61\u4e2d\u5b9a\u4e49\u7684\u65b9\u6cd5\u603b\u662f\u6709\u6307\u5411\u8be5\u5bf9\u8c61\u7684\u00a0<code>this<\/code>\u3002<br \/>\n\u5728 JavaScript \u4e2d\uff0c<code>this<\/code>\u00a0\u662f\u201c\u81ea\u7531\u201d\u7684\uff0c\u5b83\u7684\u503c\u662f\u5728\u8c03\u7528\u65f6\u8ba1\u7b97\u51fa\u6765\u7684\uff0c\u5b83\u7684\u503c\u5e76\u4e0d\u53d6\u51b3\u4e8e\u65b9\u6cd5\u58f0\u660e\u7684\u4f4d\u7f6e\uff0c\u800c\u662f\u53d6\u51b3\u4e8e\u5728\u201c\u70b9\u7b26\u53f7\u524d\u201d\u7684\u662f\u4ec0\u4e48\u5bf9\u8c61\u3002<br \/>\n\u5728\u8fd0\u884c\u65f6\u5bf9\u00a0<code>this<\/code>\u00a0\u6c42\u503c\u7684\u8fd9\u4e2a\u6982\u5ff5\u65e2\u6709\u4f18\u70b9\u4e5f\u6709\u7f3a\u70b9\u3002\u4e00\u65b9\u9762\uff0c\u51fd\u6570\u53ef\u4ee5\u88ab\u91cd\u7528\u4e8e\u4e0d\u540c\u7684\u5bf9\u8c61\u3002\u53e6\u4e00\u65b9\u9762\uff0c\u66f4\u5927\u7684\u7075\u6d3b\u6027\u9020\u6210\u4e86\u66f4\u5927\u7684\u51fa\u9519\u7684\u53ef\u80fd\u3002<\/p>\n<\/blockquote>\n<h4>\u7bad\u5934\u51fd\u6570 \u6ca1\u6709\u81ea\u5df1\u7684this<\/h4>\n<p>\u7bad\u5934\u51fd\u6570\u6709\u4e9b\u7279\u522b\uff1a\u5b83\u4eec\u6ca1\u6709\u81ea\u5df1\u7684\u00a0<code>this<\/code>\u3002\u5982\u679c\u6211\u4eec\u5728\u8fd9\u6837\u7684\u51fd\u6570\u4e2d\u5f15\u7528\u00a0<code>this<\/code>\uff0c<code>this<\/code>\u00a0\u503c\u53d6\u51b3\u4e8e\u5916\u90e8\u201c\u6b63\u5e38\u7684\u201d\u51fd\u6570\u3002<br \/>\n\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u8fd9\u91cc\u7684\u00a0<code>arrow()<\/code>\u00a0\u4f7f\u7528\u7684\u00a0<code>this<\/code>\u00a0\u6765\u81ea\u4e8e\u5916\u90e8\u7684\u00a0<code>user.sayHi()<\/code>\u00a0\u65b9\u6cd5\uff1a<\/p>\n<pre><code class=\"language-js\">let user = {\n  firstName: &quot;Ilya&quot;,\n  sayHi() {\n    let arrow = () =&gt; alert(this.firstName);\n    arrow();\n  }\n};\n\nuser.sayHi(); \/\/ Ilya\n<\/code><\/pre>\n<pre><code class=\"language-js\">\/\/ \u548c\u4e0a\u9762\u76f8\u540c\nlet user = {\n  firstName: &quot;Ilya&quot;,\n  sayHi() {\n    alert(this.firstName);\n  }\n};\n\n\/\/ \u9519\u8bef\u7684\u7ed3\u679c\nlet user = {\n  firstName: &quot;Ilya&quot;,\n  sayHi(): () =&gt; alert(this.firstName)\n};\n<\/code><\/pre>\n<h4>\u4f8b<\/h4>\n<p>\u8bbe\u7f6e\u00a0<code>this<\/code>\u00a0\u7684\u89c4\u5219\u4e0d\u8003\u8651\u5bf9\u8c61\u5b9a\u4e49\u3002\u53ea\u6709\u8c03\u7528\u90a3\u4e00\u523b\u624d\u91cd\u8981\u3002<\/p>\n<pre><code class=\"language-js\">function makeUser() {\n  return {\n    name: &quot;John&quot;,\n    ref: this\n  };\n}\n\nlet user = makeUser();\n\nalert( user.ref.name ); \/\/ \u7ed3\u679c\u662f\u4ec0\u4e48\uff1f\n<\/code><\/pre>\n<p>Error: Cannot read property 'name' of...<br \/>\n\u4ee5\u4e0b\u4ea7\u751f\u76f8\u540c\u7684\u7ed3\u679c<\/p>\n<pre><code class=\"language-js\">function makeUser(){\n  return this; \/\/ \u8fd9\u6b21\u8fd9\u91cc\u6ca1\u6709\u5bf9\u8c61\u5b57\u9762\u91cf\n}\n\nalert( makeUser().name ); \n\/\/ Error: Cannot read property 'name' of...\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u4ea7\u751f\u6b63\u5e38\u7684\u7ed3\u679c<\/p>\n<pre><code class=\"language-js\">function makeUser() {\n  return {\n    name: &quot;John&quot;,\n    ref() {\n      return this;\n    }\n  };\n}\n\nlet user = makeUser();\n\nalert( user.ref().name ); \/\/ John\n<\/code><\/pre>\n<p>\u73b0\u5728\u6b63\u5e38\u4e86\uff0c\u56e0\u4e3a\u00a0<code>user.ref()<\/code>\u00a0\u662f\u4e00\u4e2a\u65b9\u6cd5\u3002<code>this<\/code>\u00a0\u7684\u503c\u4e3a\u70b9\u7b26\u53f7\u00a0<code>.<\/code>\u00a0\u524d\u7684\u8fd9\u4e2a\u5bf9\u8c61\u3002<\/p>\n<h3>\u6784\u9020\u5668\u548c\u64cd\u4f5c\u7b26 &quot;new&quot;<\/h3>\n<h4>\u6784\u9020\u51fd\u6570<\/h4>\n<p>\u5728\u6280\u672f\u4e0a\u6784\u9020\u51fd\u6570\u5c31\u662f\u5e38\u89c4\u51fd\u6570\uff0c\u4e0d\u8fc7\u6709\u4e24\u4e2a\u7ea6\u5b9a\uff1a<\/p>\n<ol>\n<li>\u5b83\u4eec\u7684\u547d\u540d\u4ee5\u5927\u5199\u5b57\u6bcd\u5f00\u5934\u3002<\/li>\n<li>\u5b83\u4eec\u53ea\u80fd\u7531\u00a0<code>&quot;new&quot;<\/code>\u00a0\u64cd\u4f5c\u7b26\u6765\u6267\u884c\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-js\">function User(name) {\n  this.name = name;\n  this.isAdmin = false;\n}\n\nlet user = new User(&quot;Jack&quot;);\n\nalert(user.name); \/\/ Jack\nalert(user.isAdmin); \/\/ false\n<\/code><\/pre>\n<p>\u5f53\u4e00\u4e2a\u51fd\u6570\u88ab\u4f7f\u7528\u00a0<code>new<\/code>\u00a0\u64cd\u4f5c\u7b26\u6267\u884c\u65f6\uff0c\u5b83\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\uff1a<\/p>\n<ol>\n<li>\u4e00\u4e2a\u65b0\u7684\u7a7a\u5bf9\u8c61\u88ab\u521b\u5efa\u5e76\u5206\u914d\u7ed9\u00a0<code>this<\/code>\u3002<\/li>\n<li>\u51fd\u6570\u4f53\u6267\u884c\u3002\u901a\u5e38\u5b83\u4f1a\u4fee\u6539\u00a0<code>this<\/code>\uff0c\u4e3a\u5176\u6dfb\u52a0\u65b0\u7684\u5c5e\u6027\u3002<\/li>\n<li>\u8fd4\u56de\u00a0<code>this<\/code>\u00a0\u7684\u503c\u3002<br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c<code>new User(...)<\/code>\u00a0\u505a\u7684\u5c31\u662f\u7c7b\u4f3c\u7684\u4e8b\u60c5\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-js\">function User(name) {\n  \/\/ this = {};\uff08\u9690\u5f0f\u521b\u5efa\uff09\n\n  \/\/ \u6dfb\u52a0\u5c5e\u6027\u5230 this\n  this.name = name;\n  this.isAdmin = false;\n\n  \/\/ return this;\uff08\u9690\u5f0f\u8fd4\u56de\uff09\n}\n<\/code><\/pre>\n<p>\u6784\u9020\u5668\u7684\u4e3b\u8981\u76ee\u7684 \u2014\u2014 \u5b9e\u73b0\u53ef\u91cd\u7528\u7684\u5bf9\u8c61\u521b\u5efa\u4ee3\u7801\u3002<br \/>\n\u4efb\u4f55\u51fd\u6570\uff08\u9664\u4e86\u7bad\u5934\u51fd\u6570\uff0c\u5b83\u6ca1\u6709\u81ea\u5df1\u7684\u00a0<code>this<\/code>\uff09\u90fd\u53ef\u4ee5\u7528\u4f5c\u6784\u9020\u5668\u3002\u5373\u53ef\u4ee5\u901a\u8fc7\u00a0<code>new<\/code>\u00a0\u6765\u8fd0\u884c\uff0c\u5b83\u4f1a\u6267\u884c\u4e0a\u9762\u7684\u7b97\u6cd5\u3002\u201c\u9996\u5b57\u6bcd\u5927\u5199\u201d\u662f\u4e00\u4e2a\u5171\u540c\u7684\u7ea6\u5b9a\uff0c\u4ee5\u660e\u786e\u8868\u793a\u4e00\u4e2a\u51fd\u6570\u5c06\u88ab\u4f7f\u7528\u00a0<code>new<\/code>\u00a0\u6765\u8fd0\u884c\u3002<\/p>\n<blockquote>\n<p>new function() { \u2026 }<br \/>\n\u5982\u679c\u6211\u4eec\u6709\u8bb8\u591a\u884c\u7528\u4e8e\u521b\u5efa\u5355\u4e2a\u590d\u6742\u5bf9\u8c61\u7684\u4ee3\u7801\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u5b83\u4eec\u5c01\u88c5\u5728\u4e00\u4e2a\u7acb\u5373\u8c03\u7528\u7684\u6784\u9020\u51fd\u6570\u4e2d\uff0c\u50cf\u8fd9\u6837\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">\/\/ \u521b\u5efa\u4e00\u4e2a\u51fd\u6570\u5e76\u7acb\u5373\u4f7f\u7528 new \u8c03\u7528\u5b83\nlet user = new function() {\n  this.name = &quot;John&quot;;\n  this.isAdmin = false;\n\n  \/\/ \u2026\u2026\u7528\u4e8e\u7528\u6237\u521b\u5efa\u7684\u5176\u4ed6\u4ee3\u7801\n  \/\/ \u4e5f\u8bb8\u662f\u590d\u6742\u7684\u903b\u8f91\u548c\u8bed\u53e5\n  \/\/ \u5c40\u90e8\u53d8\u91cf\u7b49\n};\n<\/code><\/pre>\n<blockquote>\n<p>\u8fd9\u4e2a\u6784\u9020\u51fd\u6570\u4e0d\u80fd\u88ab\u518d\u6b21\u8c03\u7528\uff0c\u56e0\u4e3a\u5b83\u4e0d\u4fdd\u5b58\u5728\u4efb\u4f55\u5730\u65b9\uff0c\u53ea\u662f\u88ab\u521b\u5efa\u548c\u8c03\u7528\u3002\u56e0\u6b64\uff0c\u8fd9\u4e2a\u6280\u5de7\u65e8\u5728\u5c01\u88c5\u6784\u5efa\u5355\u4e2a\u5bf9\u8c61\u7684\u4ee3\u7801\uff0c\u800c\u65e0\u9700\u5c06\u6765\u91cd\u7528\u3002<\/p>\n<\/blockquote>\n<h4>\u6784\u9020\u5668\u6a21\u5f0f\u6d4b\u8bd5 new.target<\/h4>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>new.target<\/code>\u00a0\u5c5e\u6027\u6765\u68c0\u67e5\u5b83\u662f\u5426\u88ab\u4f7f\u7528\u00a0<code>new<\/code>\u00a0\u8fdb\u884c\u8c03\u7528\u4e86\u3002<br \/>\n\u5bf9\u4e8e\u5e38\u89c4\u8c03\u7528\uff0c\u5b83\u4e3a undefined\uff0c\u5bf9\u4e8e\u4f7f\u7528\u00a0<code>new<\/code>\u00a0\u7684\u8c03\u7528\uff0c\u5219\u7b49\u4e8e\u8be5\u51fd\u6570\uff1a<\/p>\n<pre><code class=\"language-js\">function User() {\n  alert(new.target);\n}\n\n\/\/ \u4e0d\u5e26 &quot;new&quot;\uff1a\nUser(); \/\/ undefined\n\n\/\/ \u5e26 &quot;new&quot;\uff1a\nnew User(); \/\/ function User { ... }\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u88ab\u7528\u5728\u51fd\u6570\u5185\u90e8\uff0c\u6765\u5224\u65ad\u8be5\u51fd\u6570\u662f\u88ab\u901a\u8fc7\u00a0<code>new<\/code>\u00a0\u8c03\u7528\u7684\u201c\u6784\u9020\u5668\u6a21\u5f0f\u201d\uff0c\u8fd8\u662f\u6ca1\u88ab\u901a\u8fc7\u00a0<code>new<\/code>\u00a0\u8c03\u7528\u7684\u201c\u5e38\u89c4\u6a21\u5f0f\u201d\u3002<\/p>\n<pre><code class=\"language-js\">function User(name) {\n  if (!new.target) { \/\/ \u5982\u679c\u4f60\u6ca1\u6709\u901a\u8fc7 new \u8fd0\u884c\u6211\n    return new User(name); \/\/ \u2026\u2026\u6211\u4f1a\u7ed9\u4f60\u6dfb\u52a0 new\n  }\n\n  this.name = name;\n}\n\nlet john = User(&quot;John&quot;); \/\/ \u5c06\u8c03\u7528\u91cd\u5b9a\u5411\u5230\u65b0\u7528\u6237\nalert(john.name); \/\/ John\n<\/code><\/pre>\n<p>\u8fd9\u79cd\u65b9\u6cd5\u6709\u65f6\u88ab\u7528\u5728\u5e93\u4e2d\u4ee5\u4f7f\u8bed\u6cd5\u66f4\u52a0\u7075\u6d3b\u3002\u8fd9\u6837\u4eba\u4eec\u5728\u8c03\u7528\u51fd\u6570\u65f6\uff0c\u65e0\u8bba\u662f\u5426\u4f7f\u7528\u4e86\u00a0<code>new<\/code>\uff0c\u7a0b\u5e8f\u90fd\u80fd\u5de5\u4f5c\u3002<\/p>\n<h4>\u6784\u9020\u5668\u7684 return<\/h4>\n<p>\u901a\u5e38\uff0c\u6784\u9020\u5668\u6ca1\u6709\u00a0<code>return<\/code>\u00a0\u8bed\u53e5\u3002\u5b83\u4eec\u7684\u4efb\u52a1\u662f\u5c06\u6240\u6709\u5fc5\u8981\u7684\u4e1c\u897f\u5199\u5165\u00a0<code>this<\/code>\uff0c\u5e76\u81ea\u52a8\u8f6c\u6362\u4e3a\u7ed3\u679c\u3002<br \/>\n\u4f46\u662f\uff0c\u5982\u679c\u8fd9\u6709\u4e00\u4e2a\u00a0<code>return<\/code>\u00a0\u8bed\u53e5\uff0c\u90a3\u4e48\u89c4\u5219\u5c31\u7b80\u5355\u4e86\uff1a<\/p>\n<ul>\n<li>\u5982\u679c\u00a0<code>return<\/code>\u00a0\u8fd4\u56de\u7684\u662f\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5219\u8fd4\u56de\u8fd9\u4e2a\u5bf9\u8c61\uff0c\u800c\u4e0d\u662f\u00a0<code>this<\/code>\u3002<\/li>\n<li>\u5982\u679c\u00a0<code>return<\/code>\u00a0\u8fd4\u56de\u7684\u662f\u4e00\u4e2a\u539f\u59cb\u7c7b\u578b\uff0c\u5219\u5ffd\u7565\u3002<br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c\u5e26\u6709\u5bf9\u8c61\u7684\u00a0<code>return<\/code>\u00a0\u8fd4\u56de\u8be5\u5bf9\u8c61\uff0c\u5728\u6240\u6709\u5176\u4ed6\u60c5\u51b5\u4e0b\u8fd4\u56de\u00a0<code>this<\/code>\u3002<\/li>\n<\/ul>\n<p>\u901a\u5e38\u6784\u9020\u5668\u6ca1\u6709\u00a0<code>return<\/code>\u00a0\u8bed\u53e5\u3002<\/p>\n<blockquote>\n<p>\u7701\u7565\u62ec\u53f7<br \/>\nbtw\uff0c\u5982\u679c\u6ca1\u6709\u53c2\u6570\uff0c\u6211\u4eec\u53ef\u4ee5\u7701\u7565\u00a0<code>new<\/code>\u00a0\u540e\u7684\u62ec\u53f7\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let user = new User; \/\/ &lt;-- \u6ca1\u6709\u53c2\u6570\n\/\/ \u7b49\u540c\u4e8e\nlet user = new User();\n<\/code><\/pre>\n<blockquote>\n<p>\u8fd9\u91cc\u7701\u7565\u62ec\u53f7\u4e0d\u88ab\u8ba4\u4e3a\u662f\u4e00\u79cd\u201c\u597d\u98ce\u683c\u201d\uff0c\u4f46\u662f\u89c4\u8303\u5141\u8bb8\u4f7f\u7528\u8be5\u8bed\u6cd5\u3002<\/p>\n<\/blockquote>\n<h4>\u6784\u9020\u5668\u4e2d\u7684\u65b9\u6cd5<\/h4>\n<pre><code class=\"language-js\">function User(name) {\n  this.name = name;\n\n  this.sayHi = function() {\n    alert( &quot;My name is: &quot; + this.name );\n  };\n}\n\nlet john = new User(&quot;John&quot;);\n\njohn.sayHi(); \/\/ My name is: John\n\n\/*\njohn = {\n   name: &quot;John&quot;,\n   sayHi: function() { ... }\n}\n*\/\n<\/code><\/pre>\n<h3>\u53ef\u9009\u94fe ?.<\/h3>\n<p>\u53ef\u9009\u94fe\u00a0<code>?.<\/code>\u00a0\u662f\u4e00\u79cd\u8bbf\u95ee\u5d4c\u5957\u5bf9\u8c61\u5c5e\u6027\u7684\u5b89\u5168\u7684\u65b9\u5f0f\u3002\u5373\u4f7f\u4e2d\u95f4\u7684\u5c5e\u6027\u4e0d\u5b58\u5728\uff0c\u4e5f\u4e0d\u4f1a\u51fa\u73b0\u9519\u8bef\u3002<\/p>\n<h4>\u201c\u4e0d\u5b58\u5728\u7684\u5c5e\u6027\u201d<\/h4>\n<pre><code class=\"language-js\">let user = {};\nalert(user.address ? user.address.street : undefined);\n\/\/ \u4e0d\u591f\u4f18\u96c5\uff1f\nlet user = {}; \/\/ user \u6ca1\u6709 address \u5c5e\u6027\nalert( user.address &amp;&amp; user.address.street &amp;&amp; user.address.street.name ); \/\/ undefined\uff08\u4e0d\u62a5\u9519\uff09\n\/\/ \u8fd8\u4e0d\u4f18\u96c5\uff1f\n<\/code><\/pre>\n<p>\u5982\u679c\u53ef\u9009\u94fe\u00a0<code>?.<\/code>\u00a0\u524d\u9762\u7684\u503c\u4e3a\u00a0<code>undefined<\/code>\u00a0\u6216\u8005\u00a0<code>null<\/code>\uff0c\u5b83\u4f1a\u505c\u6b62\u8fd0\u7b97\u5e76\u8fd4\u56de\u00a0<code>undefined<\/code>\u3002<br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c\u4f8b\u5982\u00a0<code>value?.prop<\/code>\uff1a<\/p>\n<ul>\n<li>\u5982\u679c\u00a0<code>value<\/code>\u00a0\u5b58\u5728\uff0c\u5219\u7ed3\u679c\u4e0e\u00a0<code>value.prop<\/code>\u00a0\u76f8\u540c\uff0c<\/li>\n<li>\u5426\u5219\uff08\u5f53\u00a0<code>value<\/code>\u00a0\u4e3a\u00a0<code>undefined\/null<\/code>\u00a0\u65f6\uff09\u5219\u8fd4\u56de\u00a0<code>undefined<\/code>\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let user = {}; \/\/ user \u6ca1\u6709 address \u5c5e\u6027\nalert( user?.address?.street ); \/\/ undefined\uff08\u4e0d\u62a5\u9519\uff09\n<\/code><\/pre>\n<p><code>?.<\/code>\u00a0\u8bed\u6cd5\u4f7f\u5176\u524d\u9762\u7684\u503c\u6210\u4e3a\u53ef\u9009\u503c\uff0c\u4f46\u4e0d\u4f1a\u5bf9\u5176\u540e\u9762\u7684\u8d77\u4f5c\u7528\u3002<\/p>\n<blockquote>\n<p>\u4e0d\u8981\u8fc7\u5ea6\u4f7f\u7528\u53ef\u9009\u94fe<br \/>\n\u6211\u4eec\u5e94\u8be5\u53ea\u5c06\u00a0<code>?.<\/code>\u00a0\u4f7f\u7528\u5728\u4e00\u4e9b\u4e1c\u897f\u53ef\u4ee5\u4e0d\u5b58\u5728\u7684\u5730\u65b9\u3002<br \/>\n\u4f8b\u5982\uff0c\u5982\u679c\u6839\u636e\u6211\u4eec\u7684\u4ee3\u7801\u903b\u8f91\uff0c<code>user<\/code>\u00a0\u5bf9\u8c61\u5fc5\u987b\u5b58\u5728\uff0c\u4f46\u00a0<code>address<\/code>\u00a0\u662f\u53ef\u9009\u7684\uff0c\u90a3\u4e48\u6211\u4eec\u5e94\u8be5\u8fd9\u6837\u5199\u00a0<code>user.address?.street<\/code>\uff0c\u800c\u4e0d\u662f\u8fd9\u6837\u00a0<code>user?.address?.street<\/code>\u3002<br \/>\n\u90a3\u4e48\uff0c\u5982\u679c\u00a0<code>user<\/code>\u00a0\u6070\u5de7\u4e3a undefined\uff0c\u6211\u4eec\u4f1a\u770b\u5230\u4e00\u4e2a\u7f16\u7a0b\u9519\u8bef\u5e76\u4fee\u590d\u5b83\u3002\u5426\u5219\uff0c\u5982\u679c\u6211\u4eec\u6ee5\u7528\u00a0<code>?.<\/code>\uff0c\u4f1a\u5bfc\u81f4\u4ee3\u7801\u4e2d\u7684\u9519\u8bef\u5728\u4e0d\u5e94\u8be5\u88ab\u6d88\u9664\u7684\u5730\u65b9\u6d88\u9664\u4e86\uff0c\u8fd9\u4f1a\u5bfc\u81f4\u8c03\u8bd5\u66f4\u52a0\u56f0\u96be\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p><code>?.<\/code>\u00a0\u524d\u7684\u53d8\u91cf\u5fc5\u987b\u5df2\u58f0\u660e<br \/>\n\u5982\u679c\u672a\u58f0\u660e\u53d8\u91cf\u00a0<code>user<\/code>\uff0c\u90a3\u4e48\u00a0<code>user?.anything<\/code>\u00a0\u4f1a\u89e6\u53d1\u4e00\u4e2a\u9519\u8bef\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">\/\/ ReferenceError: user is not defined\nuser?.address;\n<\/code><\/pre>\n<blockquote>\n<p><code>?.<\/code>\u00a0\u524d\u7684\u53d8\u91cf\u5fc5\u987b\u5df2\u58f0\u660e\uff08\u4f8b\u5982\u00a0<code>let\/const\/var user<\/code>\u00a0\u6216\u4f5c\u4e3a\u4e00\u4e2a\u51fd\u6570\u53c2\u6570\uff09\u3002\u53ef\u9009\u94fe\u4ec5\u9002\u7528\u4e8e\u5df2\u58f0\u660e\u7684\u53d8\u91cf\u3002<\/p>\n<\/blockquote>\n<h4>\u77ed\u8def\u6548\u5e94<\/h4>\n<p>\u5982\u679c\u00a0<code>?.<\/code>\u00a0\u5de6\u8fb9\u90e8\u5206\u4e0d\u5b58\u5728\uff0c\u5c31\u4f1a\u7acb\u5373\u505c\u6b62\u8fd0\u7b97\uff08\u201c\u77ed\u8def\u6548\u5e94\u201d\uff09\u3002<br \/>\n\u56e0\u6b64\uff0c\u5982\u679c\u5728\u00a0<code>?.<\/code>\u00a0\u7684\u53f3\u4fa7\u6709\u4efb\u4f55\u8fdb\u4e00\u6b65\u7684\u51fd\u6570\u8c03\u7528\u6216\u64cd\u4f5c\uff0c\u5b83\u4eec\u5747\u4e0d\u4f1a\u6267\u884c\u3002<\/p>\n<h4>\u5176\u4ed6\u53d8\u4f53 ?.() ?.[]<\/h4>\n<p><code>?.()<\/code>\u00a0\u7528\u4e8e\u8c03\u7528\u4e00\u4e2a\u53ef\u80fd\u4e0d\u5b58\u5728\u7684\u51fd\u6570\u3002<br \/>\n\u00a0<code>?.[]<\/code>\u00a0\u5141\u8bb8\u4ece\u4e00\u4e2a\u53ef\u80fd\u4e0d\u5b58\u5728\u7684\u5bf9\u8c61\u4e0a\u5b89\u5168\u5730\u8bfb\u53d6\u5c5e\u6027\u3002<\/p>\n<p>\u6211\u4eec\u8fd8\u53ef\u4ee5\u5c06\u00a0<code>?.<\/code>\u00a0\u8ddf\u00a0<code>delete<\/code>\u00a0\u4e00\u8d77\u4f7f\u7528\uff1a<\/p>\n<pre><code class=\"language-js\">delete user?.name; \/\/ \u5982\u679c user \u5b58\u5728\uff0c\u5219\u5220\u9664 user.name\n<\/code><\/pre>\n<blockquote>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>?.<\/code>\u00a0\u6765\u5b89\u5168\u5730\u8bfb\u53d6\u6216\u5220\u9664\uff0c\u4f46\u4e0d\u80fd\u5199\u5165<br \/>\n\u53ef\u9009\u94fe\u00a0<code>?.<\/code>\u00a0\u4e0d\u80fd\u7528\u5728\u8d4b\u503c\u8bed\u53e5\u7684\u5de6\u4fa7\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let user = null;\nuser?.name = &quot;John&quot;; \/\/ Error\uff0c\u4e0d\u8d77\u4f5c\u7528\n\/\/ \u56e0\u4e3a\u5b83\u5728\u8ba1\u7b97\u7684\u662f\uff1aundefined = &quot;John&quot;\n<\/code><\/pre>\n<h3>symbol \u7c7b\u578b<\/h3>\n<p>\u6839\u636e\u89c4\u8303\uff0c\u53ea\u6709\u4e24\u79cd\u539f\u59cb\u7c7b\u578b\u53ef\u4ee5\u7528\u4f5c\u5bf9\u8c61\u5c5e\u6027\u952e\uff1a<\/p>\n<ul>\n<li>\u5b57\u7b26\u4e32\u7c7b\u578b<\/li>\n<li>symbol \u7c7b\u578b<br \/>\n\u5426\u5219\uff0c\u5982\u679c\u4f7f\u7528\u53e6\u4e00\u79cd\u7c7b\u578b\uff0c\u4f8b\u5982\u6570\u5b57\uff0c\u5b83\u4f1a\u88ab\u81ea\u52a8\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u3002\u6240\u4ee5\u00a0<code>obj[1]<\/code>\u00a0\u4e0e\u00a0<code>obj[&quot;1&quot;]<\/code>\u00a0\u76f8\u540c\uff0c\u800c\u00a0<code>obj[true]<\/code>\u00a0\u4e0e\u00a0<code>obj[&quot;true&quot;]<\/code>\u00a0\u76f8\u540c\u3002<br \/>\n\u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u6211\u4eec\u4e00\u76f4\u53ea\u4f7f\u7528\u5b57\u7b26\u4e32\u3002<\/li>\n<\/ul>\n<h4>symbol<\/h4>\n<p>\u201csymbol\u201d \u503c\u8868\u793a\u552f\u4e00\u7684\u6807\u8bc6\u7b26\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ \u63cf\u8ff0\u4e3a\u201c2\u201d\u7684symbol\nlet id = Symbol(&quot;2&quot;);\n<\/code><\/pre>\n<p>symbol \u4fdd\u8bc1\u662f\u552f\u4e00\u7684\u3002\u5373\u4f7f\u6211\u4eec\u521b\u5efa\u4e86\u8bb8\u591a\u5177\u6709\u76f8\u540c\u63cf\u8ff0\u7684 symbol\uff0c\u5b83\u4eec\u7684\u503c\u4e5f\u662f\u4e0d\u540c\u3002\u63cf\u8ff0\u53ea\u662f\u4e00\u4e2a\u6807\u7b7e\uff0c\u4e0d\u5f71\u54cd\u4efb\u4f55\u4e1c\u897f\u3002<br \/>\n\u4f8b\u5982\uff0c\u8fd9\u91cc\u6709\u4e24\u4e2a\u63cf\u8ff0\u76f8\u540c\u7684 symbol \u2014\u2014 \u5b83\u4eec\u4e0d\u76f8\u7b49\uff1a<\/p>\n<pre><code class=\"language-js\">let id1 = Symbol(&quot;id&quot;);\nlet id2 = Symbol(&quot;id&quot;);\nalert(id1 == id2); \/\/ false\n<\/code><\/pre>\n<blockquote>\n<p>symbol \u4e0d\u4f1a\u88ab\u81ea\u52a8\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32<br \/>\nJavaScript \u4e2d\u7684\u5927\u591a\u6570\u503c\u90fd\u652f\u6301\u5b57\u7b26\u4e32\u7684\u9690\u5f0f\u8f6c\u6362\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u53ef\u4ee5\u00a0<code>alert<\/code>\u00a0\u4efb\u4f55\u503c\uff0c\u90fd\u53ef\u4ee5\u751f\u6548\u3002symbol \u6bd4\u8f83\u7279\u6b8a\uff0c\u5b83\u4e0d\u4f1a\u88ab\u81ea\u52a8\u8f6c\u6362\u3002<br \/>\n\u4f8b\u5982\uff0c\u8fd9\u4e2a\u00a0<code>alert<\/code>\u00a0\u5c06\u4f1a\u63d0\u793a\u51fa\u9519\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let id = Symbol(&quot;id&quot;);\nalert(id); \/\/ \u7c7b\u578b\u9519\u8bef\uff1a\u65e0\u6cd5\u5c06 symbol \u503c\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u3002\n<\/code><\/pre>\n<blockquote>\n<p>\u8fd9\u662f\u4e00\u79cd\u9632\u6b62\u6df7\u4e71\u7684\u201c\u8bed\u8a00\u4fdd\u62a4\u201d\uff0c\u56e0\u4e3a\u5b57\u7b26\u4e32\u548c symbol \u6709\u672c\u8d28\u4e0a\u7684\u4e0d\u540c\uff0c\u4e0d\u5e94\u8be5\u610f\u5916\u5730\u5c06\u5b83\u4eec\u8f6c\u6362\u6210\u53e6\u4e00\u4e2a\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u771f\u7684\u60f3\u663e\u793a\u4e00\u4e2a symbol\uff0c\u6211\u4eec\u9700\u8981\u5728\u5b83\u4e0a\u9762\u8c03\u7528\u00a0<code>.toString()<\/code>\uff0c\u6216\u8005\u83b7\u53d6\u00a0<code>symbol.description<\/code>\u00a0\u5c5e\u6027\uff0c\u53ea\u663e\u793a\u63cf\u8ff0\uff08description\uff09<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let id = Symbol(&quot;id&quot;);\nalert(id.toString()); \/\/ Symbol(id)\uff0c\u73b0\u5728\u5b83\u6709\u6548\u4e86\nalert(id.description); \/\/ id\n<\/code><\/pre>\n<h4>\u9690\u85cf\u5c5e\u6027<\/h4>\n<p>symbol \u5141\u8bb8\u6211\u4eec\u521b\u5efa\u5bf9\u8c61\u7684\u201c\u9690\u85cf\u201d\u5c5e\u6027\uff0c\u4ee3\u7801\u7684\u4efb\u4f55\u5176\u4ed6\u90e8\u5206\u90fd\u4e0d\u80fd\u610f\u5916\u8bbf\u95ee\u6216\u91cd\u5199\u8fd9\u4e9b\u5c5e\u6027\u3002<br \/>\n\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u4f7f\u7528\u7684\u662f\u5c5e\u4e8e\u7b2c\u4e09\u65b9\u4ee3\u7801\u7684\u00a0<code>user<\/code>\u00a0\u5bf9\u8c61\uff0c\u6211\u4eec\u60f3\u8981\u7ed9\u5b83\u4eec\u6dfb\u52a0\u4e00\u4e9b\u6807\u8bc6\u7b26\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u7ed9\u5b83\u4eec\u4f7f\u7528 symbol \u952e\uff1a<\/p>\n<pre><code class=\"language-js\">let user = { \/\/ \u5c5e\u4e8e\u53e6\u4e00\u4e2a\u4ee3\u7801\n  name: &quot;John&quot;\n};\nlet id = Symbol(&quot;id&quot;);\nuser[id] = 1;\nalert( user[id] ); \/\/ \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 symbol \u4f5c\u4e3a\u952e\u6765\u8bbf\u95ee\u6570\u636e\n<\/code><\/pre>\n<p>\u4f7f\u7528\u00a0<code>Symbol(&quot;id&quot;)<\/code>\u00a0\u4f5c\u4e3a\u952e\uff0c\u6bd4\u8d77\u7528\u5b57\u7b26\u4e32\u00a0<code>&quot;id&quot;<\/code>\u00a0\u6765\u6709\u4ec0\u4e48\u597d\u5904\u5462\uff1f<br \/>\n\u7531\u4e8e\u00a0<code>user<\/code>\u00a0\u5bf9\u8c61\u5c5e\u4e8e\u53e6\u4e00\u4e2a\u4ee3\u7801\u5e93\uff0c\u6240\u4ee5\u5411\u5b83\u4eec\u6dfb\u52a0\u5b57\u6bb5\u662f\u4e0d\u5b89\u5168\u7684\uff0c\u56e0\u4e3a\u6211\u4eec\u53ef\u80fd\u4f1a\u5f71\u54cd\u4ee3\u7801\u5e93\u4e2d\u7684\u5176\u4ed6\u9884\u5b9a\u4e49\u884c\u4e3a\u3002\u4f46 symbol \u5c5e\u6027\u4e0d\u4f1a\u88ab\u610f\u5916\u8bbf\u95ee\u5230\u3002\u7b2c\u4e09\u65b9\u4ee3\u7801\u4e0d\u4f1a\u77e5\u9053\u65b0\u5b9a\u4e49\u7684 symbol\uff0c\u56e0\u6b64\u5c06 symbol \u6dfb\u52a0\u5230\u00a0<code>user<\/code>\u00a0\u5bf9\u8c61\u662f\u5b89\u5168\u7684\u3002<br \/>\n\u53e6\u5916\uff0c\u5047\u8bbe\u53e6\u4e00\u4e2a\u811a\u672c\u5e0c\u671b\u5728\u00a0<code>user<\/code>\u00a0\u4e2d\u6709\u81ea\u5df1\u7684\u6807\u8bc6\u7b26\uff0c\u4ee5\u5b9e\u73b0\u81ea\u5df1\u7684\u76ee\u7684\u3002<br \/>\n\u90a3\u4e48\uff0c\u8be5\u811a\u672c\u53ef\u4ee5\u521b\u5efa\u81ea\u5df1\u7684\u00a0<code>Symbol(&quot;id&quot;)<\/code><br \/>\n\u6211\u4eec\u7684\u6807\u8bc6\u7b26\u548c\u5b83\u4eec\u7684\u6807\u8bc6\u7b26\u4e4b\u95f4\u4e0d\u4f1a\u6709\u51b2\u7a81\uff0c\u56e0\u4e3a symbol \u603b\u662f\u4e0d\u540c\u7684\uff0c\u5373\u4f7f\u5b83\u4eec\u6709\u76f8\u540c\u7684\u540d\u5b57\u3002<br \/>\n\u2026\u2026\u4f46\u5982\u679c\u6211\u4eec\u5904\u4e8e\u540c\u6837\u7684\u76ee\u7684\uff0c\u4f7f\u7528\u5b57\u7b26\u4e32\u00a0<code>&quot;id&quot;<\/code>\u00a0\u800c\u4e0d\u662f\u7528 symbol\uff0c\u90a3\u4e48\u00a0<strong>\u5c31\u4f1a<\/strong>\u00a0\u51fa\u73b0\u51b2\u7a81<\/p>\n<h5>\u4f7f\u7528<\/h5>\n<pre><code class=\"language-js\">let id = Symbol(&quot;id&quot;);\n\nlet user = {\n  name: &quot;John&quot;,\n  [id]: 123 \/\/ \u800c\u4e0d\u662f &quot;id&quot;\uff1a123\n};\n<\/code><\/pre>\n<h5>symbol \u5728 for...in \u4e2d\u4f1a\u88ab\u8df3\u8fc7<\/h5>\n<p><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/keys\">Object.keys(user)<\/a>\u00a0\u4e5f\u4f1a\u5ffd\u7565\u5b83\u4eec\u3002\u8fd9\u662f\u4e00\u822c\u201c\u9690\u85cf\u7b26\u53f7\u5c5e\u6027\u201d\u539f\u5219\u7684\u4e00\u90e8\u5206\u3002\u5982\u679c\u53e6\u4e00\u4e2a\u811a\u672c\u6216\u5e93\u904d\u5386\u6211\u4eec\u7684\u5bf9\u8c61\uff0c\u5b83\u4e0d\u4f1a\u610f\u5916\u5730\u8bbf\u95ee\u5230\u7b26\u53f7\u5c5e\u6027\u3002<br \/>\n\u76f8\u53cd\uff0c<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/assign\">Object.assign<\/a>\u00a0\u4f1a\u540c\u65f6\u590d\u5236\u5b57\u7b26\u4e32\u548c symbol \u5c5e\u6027<br \/>\n\u8fd9\u91cc\u5e76\u4e0d\u77db\u76fe\uff0c\u5c31\u662f\u8fd9\u6837\u8bbe\u8ba1\u7684\u3002\u8fd9\u91cc\u7684\u60f3\u6cd5\u662f\u5f53\u6211\u4eec\u514b\u9686\u6216\u8005\u5408\u5e76\u4e00\u4e2a object \u65f6\uff0c\u901a\u5e38\u5e0c\u671b\u00a0<strong>\u6240\u6709<\/strong>\u00a0\u5c5e\u6027\u88ab\u590d\u5236\uff08\u5305\u62ec\u50cf\u00a0<code>id<\/code>\u00a0\u8fd9\u6837\u7684 symbol\uff09\u3002<\/p>\n<h4>\u5168\u5c40 symbol<\/h4>\n<p>\u901a\u5e38\u6240\u6709\u7684 symbol \u90fd\u662f\u4e0d\u540c\u7684\uff0c\u5373\u4f7f\u5b83\u4eec\u6709\u76f8\u540c\u7684\u540d\u5b57\u3002\u4f46\u6709\u65f6\u6211\u4eec\u60f3\u8981\u540d\u5b57\u76f8\u540c\u7684 symbol \u5177\u6709\u76f8\u540c\u7684\u5b9e\u4f53\u3002\u4f8b\u5982\uff0c\u5e94\u7528\u7a0b\u5e8f\u7684\u4e0d\u540c\u90e8\u5206\u60f3\u8981\u8bbf\u95ee\u7684 symbol\u00a0<code>&quot;id&quot;<\/code>\u00a0\u6307\u7684\u662f\u5b8c\u5168\u76f8\u540c\u7684\u5c5e\u6027\u3002<br \/>\n\u4e3a\u4e86\u5b9e\u73b0\u8fd9\u4e00\u70b9\uff0c\u8fd9\u91cc\u6709\u4e00\u4e2a\u00a0<strong>\u5168\u5c40 symbol \u6ce8\u518c\u8868<\/strong>\u3002\u6211\u4eec\u53ef\u4ee5\u5728\u5176\u4e2d\u521b\u5efa symbol \u5e76\u5728\u7a0d\u540e\u8bbf\u95ee\u5b83\u4eec\uff0c\u5b83\u53ef\u4ee5\u786e\u4fdd\u6bcf\u6b21\u8bbf\u95ee\u76f8\u540c\u540d\u5b57\u7684 symbol \u65f6\uff0c\u8fd4\u56de\u7684\u90fd\u662f\u76f8\u540c\u7684 symbol\u3002<br \/>\n\u8981\u4ece\u6ce8\u518c\u8868\u4e2d\u8bfb\u53d6\uff08\u4e0d\u5b58\u5728\u5219\u521b\u5efa\uff09symbol\uff0c\u8bf7\u4f7f\u7528\u00a0<code>Symbol.for(key)<\/code>\u3002<br \/>\n\u8be5\u8c03\u7528\u4f1a\u68c0\u67e5\u5168\u5c40\u6ce8\u518c\u8868\uff0c\u5982\u679c\u6709\u4e00\u4e2a\u63cf\u8ff0\u4e3a\u00a0<code>key<\/code>\u00a0\u7684 symbol\uff0c\u5219\u8fd4\u56de\u8be5 symbol\uff0c\u5426\u5219\u5c06\u521b\u5efa\u4e00\u4e2a\u65b0 symbol\uff08<code>Symbol(key)<\/code>\uff09\uff0c\u5e76\u901a\u8fc7\u7ed9\u5b9a\u7684\u00a0<code>key<\/code>\u00a0\u5c06\u5176\u5b58\u50a8\u5728\u6ce8\u518c\u8868\u4e2d\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ \u4ece\u5168\u5c40\u6ce8\u518c\u8868\u4e2d\u8bfb\u53d6\nlet id = Symbol.for(&quot;id&quot;); \/\/ \u5982\u679c\u8be5 symbol \u4e0d\u5b58\u5728\uff0c\u5219\u521b\u5efa\u5b83\n\n\/\/ \u518d\u6b21\u8bfb\u53d6\uff08\u53ef\u80fd\u662f\u5728\u4ee3\u7801\u4e2d\u7684\u53e6\u4e00\u4e2a\u4f4d\u7f6e\uff09\nlet idAgain = Symbol.for(&quot;id&quot;);\n\n\/\/ \u76f8\u540c\u7684 symbol\nalert( id === idAgain ); \/\/ true\n<\/code><\/pre>\n<p>\u6ce8\u518c\u8868\u5185\u7684 symbol \u88ab\u79f0\u4e3a\u00a0<strong>\u5168\u5c40 symbol<\/strong>\u3002\u5982\u679c\u6211\u4eec\u60f3\u8981\u4e00\u4e2a\u5e94\u7528\u7a0b\u5e8f\u8303\u56f4\u5185\u7684 symbol\uff0c\u53ef\u4ee5\u5728\u4ee3\u7801\u4e2d\u968f\u5904\u8bbf\u95ee \u2014\u2014 \u8fd9\u5c31\u662f\u5b83\u4eec\u7684\u7528\u9014\u3002<\/p>\n<h5>Symbol.keyFor<\/h5>\n<p>\u5bf9\u4e8e\u5168\u5c40 symbol\uff0c<code>Symbol.for(key)<\/code>\u00a0\u6309\u540d\u5b57\u8fd4\u56de\u4e00\u4e2a symbol\u3002\u76f8\u53cd\uff0c\u901a\u8fc7\u5168\u5c40 symbol \u8fd4\u56de\u4e00\u4e2a\u540d\u5b57\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>Symbol.keyFor(sym)<\/code>\uff1a<\/p>\n<pre><code class=\"language-js\">\/\/ \u901a\u8fc7 name \u83b7\u53d6 symbol\nlet sym = Symbol.for(&quot;name&quot;);\nlet sym2 = Symbol.for(&quot;id&quot;);\n\n\/\/ \u901a\u8fc7 symbol \u83b7\u53d6 name\nalert( Symbol.keyFor(sym) ); \/\/ name\nalert( Symbol.keyFor(sym2) ); \/\/ id\n<\/code><\/pre>\n<p><code>Symbol.keyFor<\/code>\u00a0\u5185\u90e8\u4f7f\u7528\u5168\u5c40 symbol \u6ce8\u518c\u8868\u6765\u67e5\u627e symbol \u7684\u952e\u3002\u6240\u4ee5\u5b83\u4e0d\u9002\u7528\u4e8e\u975e\u5168\u5c40 symbol\u3002\u5982\u679c symbol \u4e0d\u662f\u5168\u5c40\u7684\uff0c\u5b83\u5c06\u65e0\u6cd5\u627e\u5230\u5b83\u5e76\u8fd4\u56de\u00a0<code>undefined<\/code>\u3002<br \/>\n\u4f46\u662f\uff0c\u6240\u6709 symbol \u90fd\u5177\u6709\u00a0<code>description<\/code>\u00a0\u5c5e\u6027\u3002<\/p>\n<h4>\u7cfb\u7edf symbol<\/h4>\n<p>JavaScript \u5185\u90e8\u6709\u5f88\u591a\u201c\u7cfb\u7edf\u201d symbol\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5b83\u4eec\u6765\u5fae\u8c03\u5bf9\u8c61\u7684\u5404\u4e2a\u65b9\u9762\u3002<br \/>\n\u5b83\u4eec\u90fd\u88ab\u5217\u5728\u4e86\u00a0<a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-well-known-symbols\">\u4f17\u6240\u5468\u77e5\u7684 symbol<\/a>\u00a0\u8868\u7684\u89c4\u8303\u4e2d\uff1a<\/p>\n<ul>\n<li><code>Symbol.hasInstance<\/code><\/li>\n<li><code>Symbol.isConcatSpreadable<\/code><\/li>\n<li><code>Symbol.iterator<\/code><\/li>\n<li><code>Symbol.toPrimitive<\/code><\/li>\n<li>\u2026\u2026\u7b49\u7b49\u3002<br \/>\n\u4f8b\u5982\uff0c<code>Symbol.toPrimitive<\/code>\u00a0\u5141\u8bb8\u6211\u4eec\u5c06\u5bf9\u8c61\u63cf\u8ff0\u4e3a\u539f\u59cb\u503c\u8f6c\u6362\u3002\u6211\u4eec\u5f88\u5feb\u5c31\u4f1a\u770b\u5230\u5b83\u7684\u4f7f\u7528\u3002<br \/>\n\u5f53\u6211\u4eec\u7814\u7a76\u76f8\u5e94\u7684\u8bed\u8a00\u7279\u5f81\u65f6\uff0c\u6211\u4eec\u5bf9\u5176\u4ed6\u7684 symbol \u4e5f\u4f1a\u6162\u6162\u719f\u6089\u8d77\u6765\u3002<\/li>\n<\/ul>\n<h3>\u5bf9\u8c61 - \u539f\u59cb\u503c\u8f6c\u6362<\/h3>\n<p>\u4e0d\u50cfc++\u7b49\uff0cJavaScript \u4e0d\u5141\u8bb8\u81ea\u5b9a\u4e49\u8fd0\u7b97\u7b26\u5bf9\u5bf9\u8c61\u7684\u5904\u7406\u65b9\u5f0f\u3002\u8fd9\u662f\u4e00\u4e2a\u91cd\u8981\u7684\u9650\u5236\uff1a\u56e0\u4e3a\u00a0<code>obj1 + obj2<\/code>\uff08\u6216\u8005\u5176\u4ed6\u6570\u5b66\u8fd0\u7b97\uff09\u7684\u7ed3\u679c\u4e0d\u80fd\u662f\u53e6\u4e00\u4e2a\u5bf9\u8c61\uff01<\/p>\n<h4>hint<\/h4>\n<p>obj -&gt; string\uff0c\u5982alert(obj)<br \/>\nobj -&gt; number\uff0c\u5982\u505a\u8fd0\u7b97\u548c\u6bd4\u8f83\u65f6<br \/>\nobj -&gt; ?\uff0c\u5982+\uff0c\u4e0d\u786e\u5b9a\u8be5\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u8fd8\u662f\u6570\u5b57\u8f6c\u6362\u4e3adefault<\/p>\n<p>\u50cf\u00a0<code>&lt;<\/code>\u00a0\u548c\u00a0<code>&gt;<\/code>\u00a0\u8fd9\u6837\u7684\u5c0f\u4e8e\/\u5927\u4e8e\u6bd4\u8f83\u8fd0\u7b97\u7b26\uff0c\u4e5f\u53ef\u4ee5\u540c\u65f6\u7528\u4e8e\u5b57\u7b26\u4e32\u548c\u6570\u5b57\u3002\u4e0d\u8fc7\uff0c\u5b83\u4eec\u4f7f\u7528 \u201cnumber\u201d hint\uff0c\u800c\u4e0d\u662f \u201cdefault\u201d\u3002\u8fd9\u662f\u5386\u53f2\u539f\u56e0\u3002<\/p>\n<p><strong>\u4e3a\u4e86\u8fdb\u884c\u8f6c\u6362\uff0cJavaScript \u5c1d\u8bd5\u67e5\u627e\u5e76\u8c03\u7528\u4e09\u4e2a\u5bf9\u8c61\u65b9\u6cd5\uff1a<\/strong><\/p>\n<ol>\n<li>\u8c03\u7528\u00a0<code>obj[Symbol.toPrimitive](hint)<\/code>\u00a0\u2014\u2014 \u5e26\u6709 symbol \u952e\u00a0<code>Symbol.toPrimitive<\/code>\uff08\u7cfb\u7edf symbol\uff09\u7684\u65b9\u6cd5\uff0c\u5982\u679c\u8fd9\u4e2a\u65b9\u6cd5\u5b58\u5728\u7684\u8bdd\uff0c<\/li>\n<li>\u5426\u5219\uff0c\u5982\u679c hint \u662f\u00a0<code>&quot;string&quot;<\/code>\u00a0\u2014\u2014 \u5c1d\u8bd5\u8c03\u7528\u00a0<code>obj.toString()<\/code>\u00a0\u6216\u00a0<code>obj.valueOf()<\/code>\uff0c\u65e0\u8bba\u54ea\u4e2a\u5b58\u5728\u3002<\/li>\n<li>\u5426\u5219\uff0c\u5982\u679c hint \u662f\u00a0<code>&quot;number&quot;<\/code>\u00a0\u6216\u00a0<code>&quot;default&quot;<\/code>\u00a0\u2014\u2014 \u5c1d\u8bd5\u8c03\u7528\u00a0<code>obj.valueOf()<\/code>\u00a0\u6216\u00a0<code>obj.toString()<\/code>\uff0c\u65e0\u8bba\u54ea\u4e2a\u5b58\u5728\u3002<\/li>\n<\/ol>\n<h4>Symbol.toPrimitive<\/h4>\n<p>\u6709\u4e00\u4e2a\u540d\u4e3a\u00a0<code>Symbol.toPrimitive<\/code>\u00a0\u7684\u5185\u5efa symbol\uff0c\u5b83\u88ab\u7528\u6765\u7ed9\u8f6c\u6362\u65b9\u6cd5\u547d\u540d\uff0c\u50cf\u8fd9\u6837\uff1a<\/p>\n<pre><code class=\"language-js\">obj[Symbol.toPrimitive] = function(hint) {\n  \/\/ \u8fd9\u91cc\u662f\u5c06\u6b64\u5bf9\u8c61\u8f6c\u6362\u4e3a\u539f\u59cb\u503c\u7684\u4ee3\u7801\n  \/\/ \u5b83\u5fc5\u987b\u8fd4\u56de\u4e00\u4e2a\u539f\u59cb\u503c\n  \/\/ hint = &quot;string&quot;\u3001&quot;number&quot; \u6216 &quot;default&quot; \u4e2d\u7684\u4e00\u4e2a\n}\n<\/code><\/pre>\n<p>\u5982\u679c\u00a0<code>Symbol.toPrimitive<\/code>\u00a0\u65b9\u6cd5\u5b58\u5728\uff0c\u5219\u5b83\u4f1a\u88ab\u7528\u4e8e\u6240\u6709 hint\uff0c\u65e0\u9700\u66f4\u591a\u5176\u4ed6\u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  money: 1000,\n\n  [Symbol.toPrimitive](hint) {\n    alert(`hint: ${hint}`);\n    return hint == &quot;string&quot; ? `{name: &quot;${this.name}&quot;}` : this.money;\n  }\n};\n\n\/\/ \u8f6c\u6362\u6f14\u793a\uff1a\nalert(user); \/\/ hint: string -&gt; {name: &quot;John&quot;}\nalert(+user); \/\/ hint: number -&gt; 1000\nalert(user + 500); \/\/ hint: default -&gt; 1500\n<\/code><\/pre>\n<p>\u6839\u636e\u8f6c\u6362\u7684\u4e0d\u540c\uff0c<code>user<\/code>\u00a0\u53d8\u6210\u4e00\u4e2a\u81ea\u63cf\u8ff0\u5b57\u7b26\u4e32\u6216\u8005\u4e00\u4e2a\u91d1\u989d\u3002<code>user[Symbol.toPrimitive]<\/code>\u00a0\u65b9\u6cd5\u5904\u7406\u4e86\u6240\u6709\u7684\u8f6c\u6362\u60c5\u51b5\u3002<\/p>\n<h4>toString\/valueOf<\/h4>\n<p>\u5982\u679c\u6ca1\u6709\u00a0<code>Symbol.toPrimitive<\/code>\uff0c\u90a3\u4e48 JavaScript \u5c06\u5c1d\u8bd5\u5bfb\u627e\u00a0<code>toString<\/code>\u00a0\u548c\u00a0<code>valueOf<\/code>\u00a0\u65b9\u6cd5\uff1a<\/p>\n<ul>\n<li>\u5bf9\u4e8e\u00a0<code>&quot;string&quot;<\/code>\u00a0hint\uff1a\u8c03\u7528\u00a0<code>toString<\/code>\u00a0\u65b9\u6cd5\uff0c\u5982\u679c\u5b83\u4e0d\u5b58\u5728\uff0c\u5219\u8c03\u7528\u00a0<code>valueOf<\/code>\u00a0\u65b9\u6cd5\uff08\u56e0\u6b64\uff0c\u5bf9\u4e8e\u5b57\u7b26\u4e32\u8f6c\u6362\uff0c\u4f18\u5148\u8c03\u7528\u00a0<code>toString<\/code>\uff09\u3002<\/li>\n<li>\u5bf9\u4e8e\u5176\u4ed6 hint\uff1a\u8c03\u7528\u00a0<code>valueOf<\/code>\u00a0\u65b9\u6cd5\uff0c\u5982\u679c\u5b83\u4e0d\u5b58\u5728\uff0c\u5219\u8c03\u7528\u00a0<code>toString<\/code>\u00a0\u65b9\u6cd5\uff08\u56e0\u6b64\uff0c\u5bf9\u4e8e\u6570\u5b66\u8fd0\u7b97\uff0c\u4f18\u5148\u8c03\u7528\u00a0<code>valueOf<\/code>\u00a0\u65b9\u6cd5\uff09\u3002<br \/>\n<code>toString<\/code>\u00a0\u548c\u00a0<code>valueOf<\/code>\u00a0\u65b9\u6cd5\u5f88\u65e9\u5df1\u6709\u4e86\u3002\u5b83\u4eec\u4e0d\u662f symbol\uff08\u90a3\u65f6\u5019\u8fd8\u6ca1\u6709 symbol \u8fd9\u4e2a\u6982\u5ff5\uff09\uff0c\u800c\u662f\u201c\u5e38\u89c4\u7684\u201d\u5b57\u7b26\u4e32\u547d\u540d\u7684\u65b9\u6cd5\u3002\u5b83\u4eec\u63d0\u4f9b\u4e86\u4e00\u79cd\u53ef\u9009\u7684\u201c\u8001\u6d3e\u201d\u7684\u5b9e\u73b0\u8f6c\u6362\u7684\u65b9\u6cd5\u3002<br \/>\n\u8fd9\u4e9b\u65b9\u6cd5\u5fc5\u987b\u8fd4\u56de\u4e00\u4e2a\u539f\u59cb\u503c\u3002\u5982\u679c\u00a0<code>toString<\/code>\u00a0\u6216\u00a0<code>valueOf<\/code>\u00a0\u8fd4\u56de\u4e86\u4e00\u4e2a\u5bf9\u8c61\uff0c\u90a3\u4e48\u8fd4\u56de\u503c\u4f1a\u88ab\u5ffd\u7565\uff08\u548c\u8fd9\u91cc\u6ca1\u6709\u65b9\u6cd5\u7684\u65f6\u5019\u76f8\u540c\uff09\u3002<br \/>\n\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u666e\u901a\u5bf9\u8c61\u5177\u6709\u00a0<code>toString<\/code>\u00a0\u548c\u00a0<code>valueOf<\/code>\u00a0\u65b9\u6cd5\uff1a<\/li>\n<li><code>toString<\/code>\u00a0\u65b9\u6cd5\u8fd4\u56de\u4e00\u4e2a\u5b57\u7b26\u4e32\u00a0<code>&quot;[object Object]&quot;<\/code>\u3002<\/li>\n<li><code>valueOf<\/code>\u00a0\u65b9\u6cd5\u8fd4\u56de\u5bf9\u8c61\u81ea\u8eab\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let user = {name: &quot;John&quot;};\n\nalert(user); \/\/ [object Object]\nalert(user.valueOf() === user); \/\/ true\n<\/code><\/pre>\n<p>\u6240\u4ee5\uff0c\u5982\u679c\u6211\u4eec\u5c1d\u8bd5\u5c06\u4e00\u4e2a\u5bf9\u8c61\u5f53\u505a\u5b57\u7b26\u4e32\u6765\u4f7f\u7528\uff0c\u4f8b\u5982\u5728\u00a0<code>alert<\/code>\u00a0\u4e2d\uff0c\u90a3\u4e48\u5728\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u6211\u4eec\u4f1a\u770b\u5230\u00a0<code>[object Object]<\/code>\u3002<br \/>\n\u8fd9\u91cc\u63d0\u5230\u7684\u9ed8\u8ba4\u7684\u00a0<code>valueOf<\/code>\u00a0\u53ea\u662f\u4e3a\u4e86\u5b8c\u6574\u8d77\u89c1\uff0c\u4ee5\u907f\u514d\u6df7\u6dc6\u3002\u6b63\u5982\u4f60\u770b\u5230\u7684\uff0c\u5b83\u8fd4\u56de\u5bf9\u8c61\u672c\u8eab\uff0c\u56e0\u6b64\u88ab\u5ffd\u7565\u3002\u522b\u95ee\u6211\u4e3a\u4ec0\u4e48\uff0c\u8fd9\u662f\u5386\u53f2\u539f\u56e0\u3002\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u5047\u8bbe\u5b83\u6839\u672c\u5c31\u4e0d\u5b58\u5728\u3002<br \/>\n\u8ba9\u6211\u4eec\u5b9e\u73b0\u4e00\u4e0b\u8fd9\u4e9b\u65b9\u6cd5\u6765\u81ea\u5b9a\u4e49\u8f6c\u6362\u3002<br \/>\n\u4f8b\u5982\uff0c\u8fd9\u91cc\u7684\u00a0<code>user<\/code>\u00a0\u6267\u884c\u548c\u524d\u9762\u63d0\u5230\u7684\u90a3\u4e2a\u00a0<code>user<\/code>\u00a0\u4e00\u6837\u7684\u64cd\u4f5c\uff0c\u4f7f\u7528\u00a0<code>toString<\/code>\u00a0\u548c\u00a0<code>valueOf<\/code>\u00a0\u7684\u7ec4\u5408\uff08\u800c\u4e0d\u662f\u00a0<code>Symbol.toPrimitive<\/code>\uff09\uff1a<\/p>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  money: 1000,\n\n  \/\/ \u5bf9\u4e8e hint=&quot;string&quot;\n  toString() {\n    return `{name: &quot;${this.name}&quot;}`;\n  },\n\n  \/\/ \u5bf9\u4e8e hint=&quot;number&quot; \u6216 &quot;default&quot;\n  valueOf() {\n    return this.money;\n  }\n\n};\n\nalert(user); \/\/ toString -&gt; {name: &quot;John&quot;}\nalert(+user); \/\/ valueOf -&gt; 1000\nalert(user + 500); \/\/ valueOf -&gt; 1500\n<\/code><\/pre>\n<p>\u6267\u884c\u7684\u52a8\u4f5c\u548c\u524d\u9762\u4f7f\u7528\u00a0<code>Symbol.toPrimitive<\/code>\u00a0\u7684\u90a3\u4e2a\u4f8b\u5b50\u76f8\u540c\u3002<br \/>\n\u901a\u5e38\u6211\u4eec\u5e0c\u671b\u6709\u4e00\u4e2a\u201c\u5168\u80fd\u201d\u7684\u5730\u65b9\u6765\u5904\u7406\u6240\u6709\u539f\u59cb\u8f6c\u6362\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u53ef\u4ee5\u53ea\u5b9e\u73b0\u00a0<code>toString<\/code><\/p>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n\n  toString() {\n    return this.name;\n  }\n};\n\nalert(user); \/\/ toString -&gt; John\nalert(user + 500); \/\/ toString -&gt; John500\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u00a0<code>Symbol.toPrimitive<\/code>\u00a0\u548c\u00a0<code>valueOf<\/code>\uff0c<code>toString<\/code>\u00a0\u5c06\u5904\u7406\u6240\u6709\u539f\u59cb\u8f6c\u6362\u3002<\/p>\n<h4>\u8f6c\u6362\u53ef\u4ee5\u8fd4\u56de\u4efb\u4f55\u539f\u59cb\u7c7b\u578b<\/h4>\n<p>\u5173\u4e8e\u6240\u6709\u539f\u59cb\u8f6c\u6362\u65b9\u6cd5\uff0c\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u70b9\u9700\u8981\u77e5\u9053\uff0c\u5c31\u662f\u5b83\u4eec\u4e0d\u4e00\u5b9a\u4f1a\u8fd4\u56de \u201chint\u201d \u7684\u539f\u59cb\u503c\u3002<br \/>\n\u6ca1\u6709\u9650\u5236\u00a0<code>toString()<\/code>\u00a0\u662f\u5426\u8fd4\u56de\u5b57\u7b26\u4e32\uff0c\u6216\u00a0<code>Symbol.toPrimitive<\/code>\u00a0\u65b9\u6cd5\u662f\u5426\u4e3a\u00a0<code>&quot;number&quot;<\/code>\u00a0hint \u8fd4\u56de\u6570\u5b57\u3002<br \/>\n\u552f\u4e00\u5f3a\u5236\u6027\u7684\u4e8b\u60c5\u662f\uff1a\u8fd9\u4e9b\u65b9\u6cd5\u5fc5\u987b\u8fd4\u56de\u4e00\u4e2a\u539f\u59cb\u503c\uff0c\u800c\u4e0d\u662f\u5bf9\u8c61\u3002<\/p>\n<blockquote>\n<p>\u5386\u53f2\u539f\u56e0<br \/>\n\u7531\u4e8e\u5386\u53f2\u539f\u56e0\uff0c\u5982\u679c\u00a0<code>toString<\/code>\u00a0\u6216\u00a0<code>valueOf<\/code>\u00a0\u8fd4\u56de\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5219\u4e0d\u4f1a\u51fa\u73b0 error\uff0c\u4f46\u662f\u8fd9\u79cd\u503c\u4f1a\u88ab\u5ffd\u7565\uff08\u5c31\u50cf\u8fd9\u79cd\u65b9\u6cd5\u6839\u672c\u4e0d\u5b58\u5728\uff09\u3002\u8fd9\u662f\u56e0\u4e3a\u5728 JavaScript \u8bed\u8a00\u53d1\u5c55\u521d\u671f\uff0c\u6ca1\u6709\u5f88\u597d\u7684 \u201cerror\u201d \u7684\u6982\u5ff5\u3002<br \/>\n\u76f8\u53cd\uff0c<code>Symbol.toPrimitive<\/code>\u00a0\u66f4\u4e25\u683c\uff0c\u5b83\u00a0<strong>\u5fc5\u987b<\/strong>\u00a0\u8fd4\u56de\u4e00\u4e2a\u539f\u59cb\u503c\uff0c\u5426\u5219\u5c31\u4f1a\u51fa\u73b0 error\u3002<\/p>\n<\/blockquote>\n<h4>\u8fdb\u4e00\u6b65\u7684\u8f6c\u6362<\/h4>\n<p>\u5982\u679c\u6211\u4eec\u5c06\u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\uff0c\u5219\u4f1a\u51fa\u73b0\u4e24\u4e2a\u8fd0\u7b97\u9636\u6bb5\uff1a<\/p>\n<ol>\n<li>\u5bf9\u8c61\u88ab\u8f6c\u6362\u4e3a\u539f\u59cb\u503c\uff08\u901a\u8fc7\u524d\u9762\u6211\u4eec\u63cf\u8ff0\u7684\u89c4\u5219\uff09\u3002<\/li>\n<li>\u5982\u679c\u8fd8\u9700\u8981\u8fdb\u4e00\u6b65\u8ba1\u7b97\uff0c\u5219\u751f\u6210\u7684\u539f\u59cb\u503c\u4f1a\u88ab\u8fdb\u4e00\u6b65\u8f6c\u6362\u3002<\/li>\n<\/ol>\n<h2>\u6570\u636e\u7c7b\u578b<\/h2>\n<h3>\u539f\u59cb\u7c7b\u578b\u7684\u65b9\u6cd5<\/h3>\n<p>\u539f\u59cb\u7c7b\u578b\u548c\u5bf9\u8c61\u4e4b\u95f4\u7684\u5173\u952e\u533a\u522b\u3002<br \/>\n\u4e00\u4e2a\u539f\u59cb\u503c\uff1a<\/p>\n<ul>\n<li>\u662f\u539f\u59cb\u7c7b\u578b\u4e2d\u7684\u4e00\u79cd\u503c\u3002<\/li>\n<li>\u5728 JavaScript \u4e2d\u6709 7 \u79cd\u539f\u59cb\u7c7b\u578b\uff1a<code>string<\/code>\uff0c<code>number<\/code>\uff0c<code>bigint<\/code>\uff0c<code>boolean<\/code>\uff0c<code>symbol<\/code>\uff0c<code>null<\/code>\u00a0\u548c\u00a0<code>undefined<\/code>\u3002<br \/>\n\u4e00\u4e2a\u5bf9\u8c61\uff1a<\/li>\n<li>\u80fd\u591f\u5b58\u50a8\u591a\u4e2a\u503c\u4f5c\u4e3a\u5c5e\u6027\u3002<\/li>\n<li>\u53ef\u4ee5\u4f7f\u7528\u5927\u62ec\u53f7\u00a0<code>{}<\/code>\u00a0\u521b\u5efa\u5bf9\u8c61\uff0c\u4f8b\u5982\uff1a<code>{name: &quot;John&quot;, age: 30}<\/code>\u3002JavaScript \u4e2d\u8fd8\u6709\u5176\u4ed6\u79cd\u7c7b\u7684\u5bf9\u8c61\uff0c\u4f8b\u5982\u51fd\u6570\u5c31\u662f\u5bf9\u8c61\u3002<br \/>\n\u8bb8\u591a\u5185\u5efa\u5bf9\u8c61\u5df2\u7ecf\u5b58\u5728\uff0c\u4f8b\u5982\u90a3\u4e9b\u5904\u7406\u65e5\u671f\u3001\u9519\u8bef\u3001HTML \u5143\u7d20\u7b49\u7684\u5185\u5efa\u5bf9\u8c61\u3002\u5b83\u4eec\u5177\u6709\u4e0d\u540c\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\u3002<br \/>\n\u4f46\u662f\uff0c\u8fd9\u4e9b\u7279\u6027\uff08feature\uff09\u90fd\u662f\u6709\u6210\u672c\u7684\uff01<br \/>\n\u5bf9\u8c61\u6bd4\u539f\u59cb\u7c7b\u578b\u201c\u66f4\u91cd\u201d\u3002\u5b83\u4eec\u9700\u8981\u989d\u5916\u7684\u8d44\u6e90\u6765\u652f\u6301\u8fd0\u4f5c\u3002<\/li>\n<\/ul>\n<h4>\u5f53\u4f5c\u5bf9\u8c61\u7684\u539f\u59cb\u7c7b\u578b<\/h4>\n<p>\u4ee5\u4e0b\u662f JavaScript \u521b\u5efa\u8005\u9762\u4e34\u7684\u6096\u8bba\uff1a<\/p>\n<ul>\n<li>\u4eba\u4eec\u53ef\u80fd\u60f3\u5bf9\u8bf8\u5982\u5b57\u7b26\u4e32\u6216\u6570\u5b57\u4e4b\u7c7b\u7684\u539f\u59cb\u7c7b\u578b\u6267\u884c\u5f88\u591a\u64cd\u4f5c\u3002\u6700\u597d\u4f7f\u7528\u65b9\u6cd5\u6765\u8bbf\u95ee\u5b83\u4eec\u3002<\/li>\n<li>\u539f\u59cb\u7c7b\u578b\u5fc5\u987b\u5c3d\u53ef\u80fd\u7684\u7b80\u5355\u8f7b\u91cf\u3002<br \/>\n\u800c\u89e3\u51b3\u65b9\u6848\u770b\u8d77\u6765\u591a\u5c11\u6709\u70b9\u5c34\u5c2c\uff0c\u5982\u4e0b\uff1a<\/li>\n<\/ul>\n<ol>\n<li>\u539f\u59cb\u7c7b\u578b\u4ecd\u7136\u662f\u539f\u59cb\u7684\u3002\u4e0e\u9884\u671f\u76f8\u540c\uff0c\u63d0\u4f9b\u5355\u4e2a\u503c<\/li>\n<li>JavaScript \u5141\u8bb8\u8bbf\u95ee\u5b57\u7b26\u4e32\uff0c\u6570\u5b57\uff0c\u5e03\u5c14\u503c\u548c symbol \u7684\u65b9\u6cd5\u548c\u5c5e\u6027\u3002<\/li>\n<li>\u4e3a\u4e86\u4f7f\u5b83\u4eec\u8d77\u4f5c\u7528\uff0c\u521b\u5efa\u4e86\u63d0\u4f9b\u989d\u5916\u529f\u80fd\u7684\u7279\u6b8a\u201c\u5bf9\u8c61\u5305\u88c5\u5668\u201d\uff0c\u4f7f\u7528\u540e\u5373\u88ab\u9500\u6bc1\u3002<br \/>\n\u201c\u5bf9\u8c61\u5305\u88c5\u5668\u201d\u5bf9\u4e8e\u6bcf\u79cd\u539f\u59cb\u7c7b\u578b\u90fd\u662f\u4e0d\u540c\u7684\uff0c\u5b83\u4eec\u88ab\u79f0\u4e3a\u00a0<code>String<\/code>\u3001<code>Number<\/code>\u3001<code>Boolean<\/code>\u3001<code>Symbol<\/code>\u00a0\u548c\u00a0<code>BigInt<\/code>\u3002<br \/>\n\u4f8b\u5982\uff0c\u5b57\u7b26\u4e32\u65b9\u6cd5str.toUpperCase()\u8fd4\u56de\u4e00\u4e2a\u5927\u5199\u5316\u5904\u7406\u7684\u5b57\u7b26\u4e32\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-js\">let str = &quot;Hello&quot;;\nalert( str.toUpperCase() ); \/\/ HELLO\n<\/code><\/pre>\n<p>\u5f88\u7b80\u5355\uff0c\u5bf9\u5427\uff1f\u4ee5\u4e0b\u662f\u00a0<code>str.toUpperCase()<\/code>\u00a0\u4e2d\u5b9e\u9645\u53d1\u751f\u7684\u60c5\u51b5\uff1a<\/p>\n<ol>\n<li>\u5b57\u7b26\u4e32\u00a0<code>str<\/code>\u00a0\u662f\u4e00\u4e2a\u539f\u59cb\u503c\u3002\u56e0\u6b64\uff0c\u5728\u8bbf\u95ee\u5176\u5c5e\u6027\u65f6\uff0c\u4f1a\u521b\u5efa\u4e00\u4e2a\u5305\u542b\u5b57\u7b26\u4e32\u5b57\u9762\u503c\u7684\u7279\u6b8a\u5bf9\u8c61\uff0c\u5e76\u4e14\u5177\u6709\u53ef\u7528\u7684\u65b9\u6cd5\uff0c\u4f8b\u5982\u00a0<code>toUpperCase()<\/code>\u3002<\/li>\n<li>\u8be5\u65b9\u6cd5\u8fd0\u884c\u5e76\u8fd4\u56de\u4e00\u4e2a\u65b0\u7684\u5b57\u7b26\u4e32\uff08\u7531\u00a0<code>alert<\/code>\u00a0\u663e\u793a\uff09\u3002<\/li>\n<li>\u7279\u6b8a\u5bf9\u8c61\u88ab\u9500\u6bc1\uff0c\u53ea\u7559\u4e0b\u539f\u59cb\u503c\u00a0<code>str<\/code>\u3002<br \/>\n\u6240\u4ee5\u539f\u59cb\u7c7b\u578b\u53ef\u4ee5\u63d0\u4f9b\u65b9\u6cd5\uff0c\u4f46\u5b83\u4eec\u4f9d\u7136\u662f\u8f7b\u91cf\u7ea7\u7684\u3002<br \/>\nJavaScript \u5f15\u64ce\u9ad8\u5ea6\u4f18\u5316\u4e86\u8fd9\u4e2a\u8fc7\u7a0b\u3002\u5b83\u751a\u81f3\u53ef\u80fd\u8df3\u8fc7\u521b\u5efa\u989d\u5916\u7684\u5bf9\u8c61\u3002\u4f46\u662f\u5b83\u4ecd\u7136\u5fc5\u987b\u9075\u5b88\u89c4\u8303\uff0c\u5e76\u4e14\u8868\u73b0\u5f97\u597d\u50cf\u5b83\u521b\u5efa\u4e86\u4e00\u6837\u3002<br \/>\n\u6570\u5b57\u6709\u5176\u81ea\u5df1\u7684\u65b9\u6cd5\uff0c\u4f8b\u5982\uff0ctoFixed(n)\u5c06\u6570\u5b57\u820d\u5165\u5230\u7ed9\u5b9a\u7684\u7cbe\u5ea6\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-js\">let n = 1.23456;\nalert( n.toFixed(2) ); \/\/ 1.23\n<\/code><\/pre>\n<blockquote>\n<p>\u6784\u9020\u5668\u00a0<code>String\/Number\/Boolean<\/code>\u00a0\u4ec5\u4f9b\u5185\u90e8\u4f7f\u7528<br \/>\n\u50cf Java \u8fd9\u6837\u7684\u4e00\u4e9b\u8bed\u8a00\u5141\u8bb8\u6211\u4eec\u4f7f\u7528\u00a0<code>new Number(1)<\/code>\u00a0\u6216\u00a0<code>new Boolean(false)<\/code>\u00a0\u7b49\u8bed\u6cd5\uff0c\u660e\u786e\u5730\u4e3a\u539f\u59cb\u7c7b\u578b\u521b\u5efa\u201c\u5bf9\u8c61\u5305\u88c5\u5668\u201d\u3002<br \/>\n\u5728 JavaScript \u4e2d\uff0c\u7531\u4e8e\u5386\u53f2\u539f\u56e0\uff0c\u8fd9\u4e5f\u662f\u53ef\u4ee5\u7684\uff0c\u4f46\u6781\u5176<strong>\u4e0d\u63a8\u8350<\/strong>\u3002\u56e0\u4e3a\u8fd9\u6837\u4f1a\u51fa\u95ee\u9898\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">alert( typeof 0 ); \/\/ &quot;number&quot;\nalert( typeof new Number(0) ); \/\/ &quot;object&quot;!\n\/\/\u5bf9\u8c61\u5728\u00a0`if`\u00a0\u4e2d\u59cb\u7ec8\u4e3a\u771f\uff0c\u6240\u4ee5\u6b64\u5904\u7684 alert \u5c06\u663e\u793a\uff1a\nlet zero = new Number(0);\nif (zero) { \/\/ zero \u4e3a true\uff0c\u56e0\u4e3a\u5b83\u662f\u4e00\u4e2a\u5bf9\u8c61\n  alert( &quot;zero is truthy?!?&quot; );\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u53e6\u4e00\u65b9\u9762\uff0c\u8c03\u7528\u4e0d\u5e26\u00a0<code>new<\/code>\uff08\u5173\u952e\u5b57\uff09\u7684\u00a0<code>String\/Number\/Boolean<\/code>\u00a0\u51fd\u6570\u662f\u53ef\u4ee5\u7684\u4e14\u6709\u6548\u7684\u3002\u5b83\u4eec\u5c06\u4e00\u4e2a\u503c\u8f6c\u6362\u4e3a\u76f8\u5e94\u7684\u7c7b\u578b\uff1a\u8f6c\u6210\u5b57\u7b26\u4e32\u3001\u6570\u5b57\u6216\u5e03\u5c14\u503c\uff08\u539f\u59cb\u7c7b\u578b\uff09\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>null\/undefined \u6ca1\u6709\u4efb\u4f55\u65b9\u6cd5<br \/>\n\u7279\u6b8a\u7684\u539f\u59cb\u7c7b\u578b\u00a0<code>null<\/code>\u00a0\u548c\u00a0<code>undefined<\/code>\u00a0\u662f\u4f8b\u5916\u3002\u5b83\u4eec\u6ca1\u6709\u5bf9\u5e94\u7684\u201c\u5bf9\u8c61\u5305\u88c5\u5668\u201d\uff0c\u4e5f\u6ca1\u6709\u63d0\u4f9b\u4efb\u4f55\u65b9\u6cd5\u3002\u4ece\u67d0\u79cd\u610f\u4e49\u4e0a\u8bf4\uff0c\u5b83\u4eec\u662f\u201c\u6700\u539f\u59cb\u7684\u201d\u3002<br \/>\n\u5c1d\u8bd5\u8bbf\u95ee\u8fd9\u79cd\u503c\u7684\u5c5e\u6027\u4f1a\u5bfc\u81f4\u9519\u8bef\u3002<\/p>\n<\/blockquote>\n<h3>\u6570\u5b57\u7c7b\u578b<\/h3>\n<h4>\u7f16\u5199\u6570\u5b57\u7684\u66f4\u591a\u65b9\u6cd5<\/h4>\n<pre><code class=\"language-js\">let billion = 1000000000;\n\/\/ \u4f7f\u7528_\u505a\u5206\u9694\u7b26\nlet billion = 1_000_000_000;\n\/\/ \u8bed\u6cd5\u7cd6\uff0c\u4ec5\u589e\u5f3a\u53ef\u8bfb\u6027\uff0c\u4e0d\u5f71\u54cd\u6267\u884c\n\n\/\/ 1x10^9\nlet billion = 1e9;\n\n\/\/ \u5341\u516d\u8fdb\u5236\nlet ox = 0xff \/\/ 255\n\/\/ \u516b\u8fdb\u5236(\u5c11)\nlet oo = 0o377 \/\/ 255\n\/\/ \u4e8c\u8fdb\u5236\uff08\u5c11\uff09\nlet ob = 0b1111_1111 \/\/ 255\n<\/code><\/pre>\n<h4>toString<\/h4>\n<pre><code class=\"language-js\">\/\/ toString(base) \u8fd4\u56de\u6307\u5b9a base(2-36) \u8fdb\u5236\u4e2d\u7684\u5b57\u7b26\u4e32\u8868\u793a\nlet num = 255;\nnum.toString(16) \/\/ ff\nnum.toString(2) \/\/ 1111_1111\n\n\/\/ \u5e38\u89c1\u7528\u4f8b\n\/\/ base=16\u00a0\u7528\u4e8e\u5341\u516d\u8fdb\u5236\u989c\u8272\uff0c\u5b57\u7b26\u7f16\u7801\u7b49\uff0c\u6570\u5b57\u53ef\u4ee5\u662f\u00a00-9\u00a0\u6216\u00a0A-F\u3002\n\/\/ base=2\u00a0\u4e3b\u8981\u7528\u4e8e\u8c03\u8bd5\u6309\u4f4d\u64cd\u4f5c\uff0c\u6570\u5b57\u53ef\u4ee5\u662f\u00a00\u00a0\u6216\u00a01\u3002\n\/\/ base=36\u00a0\u662f\u6700\u5927\u8fdb\u5236\uff0c\u6570\u5b57\u53ef\u4ee5\u662f\u00a00-9\u00a0\u6216\u00a0A-Z\u3002\u6240\u6709\u62c9\u4e01\u5b57\u6bcd\u90fd\u88ab\u7528\u4e8e\u4e86\u8868\u793a\u6570\u5b57\u3002\u5bf9\u4e8e36\u8fdb\u5236\u6765\u8bf4\uff0c\u4e00\u4e2a\u6709\u8da3\u4e14\u6709\u7528\u7684\u4f8b\u5b50\u662f\uff0c\u5f53\u6211\u4eec\u9700\u8981\u5c06\u4e00\u4e2a\u8f83\u957f\u7684\u6570\u5b57\u6807\u8bc6\u7b26\u8f6c\u6362\u6210\u8f83\u77ed\u7684\u65f6\u5019\uff0c\u4f8b\u5982\u505a\u4e00\u4e2a\u77ed\u7684 URL\u3002\u53ef\u4ee5\u7b80\u5355\u5730\u4f7f\u7528\u57fa\u6570\u4e3a\u00a0`36`\u00a0\u7684\u6570\u5b57\u7cfb\u7edf\u8868\u793a\uff1a\n<\/code><\/pre>\n<blockquote>\n<p>\u4f7f\u7528\u4e24\u4e2a\u70b9\u6765\u8c03\u7528\u4e00\u4e2a\u65b9\u6cd5<br \/>\n\u8bf7\u6ce8\u610f\u00a0<code>123456..toString(36)<\/code>\u00a0\u4e2d\u7684\u4e24\u4e2a\u70b9\u4e0d\u662f\u6253\u9519\u4e86\u3002\u5982\u679c\u6211\u4eec\u60f3\u76f4\u63a5\u5728\u4e00\u4e2a\u6570\u5b57\u4e0a\u8c03\u7528\u4e00\u4e2a\u65b9\u6cd5\uff0c\u6bd4\u5982\u4e0a\u9762\u4f8b\u5b50\u4e2d\u7684\u00a0<code>toString<\/code>\uff0c\u90a3\u4e48\u6211\u4eec\u9700\u8981\u5728\u5b83\u540e\u9762\u653e\u7f6e\u4e24\u4e2a\u70b9\u00a0<code>..<\/code>\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u653e\u7f6e\u4e00\u4e2a\u70b9\uff1a<code>123456.toString(36)<\/code>\uff0c\u90a3\u4e48\u5c31\u4f1a\u51fa\u73b0\u4e00\u4e2a error\uff0c\u56e0\u4e3a JavaScript \u8bed\u6cd5\u9690\u542b\u4e86\u7b2c\u4e00\u4e2a\u70b9\u4e4b\u540e\u7684\u90e8\u5206\u4e3a\u5c0f\u6570\u90e8\u5206\u3002\u5982\u679c\u6211\u4eec\u518d\u653e\u4e00\u4e2a\u70b9\uff0c\u90a3\u4e48 JavaScript \u5c31\u77e5\u9053\u5c0f\u6570\u90e8\u5206\u4e3a\u7a7a\uff0c\u73b0\u5728\u4f7f\u7528\u8be5\u65b9\u6cd5\u3002<br \/>\n\u4e5f\u53ef\u4ee5\u5199\u6210\u00a0<code>(123456).toString(36)<\/code>\u3002<\/p>\n<\/blockquote>\n<h4>\u820d\u5165<\/h4>\n<pre><code class=\"language-js\">\/\/ \u5411\u4e0b\u53d6\u6574\nMath.floor() \/\/ 3.1 -&gt; 3 | -1.1 -&gt; -2\n\/\/ \u5411\u4e0a\u53d6\u6574\nMath.ceil()  \/\/ 3.1 -&gt; 4 | -1.1 -&gt; -1\n\/\/ \u56db\u820d\u4e94\u5165\nMath.round() \/\/ 3.1 -&gt; 3 | 3.5 -&gt; 4\n\/\/ \u4fdd\u7559\u6574\u6570 (IE \u4e0d\u652f\u6301)\nMath.trunc() \/\/ 3.1 -&gt; 3 | -1.1 -&gt; -1\n<\/code><\/pre>\n<p>\u5982\u679c\u6211\u4eec\u60f3\u5c06\u6570\u5b57\u820d\u5165\u5230\u5c0f\u6570\u70b9\u540e\u00a0<code>n<\/code>\u00a0\u4f4d\uff0c\u8be5\u600e\u4e48\u529e\uff1f<br \/>\n\u4f8b\u5982\uff0c\u6211\u4eec\u6709\u00a0<code>1.2345<\/code>\uff0c\u5e76\u4e14\u60f3\u628a\u5b83\u820d\u5165\u5230\u5c0f\u6570\u70b9\u540e\u4e24\u4f4d\uff0c\u4ec5\u5f97\u5230\u00a0<code>1.23<\/code>\u3002<br \/>\n\u6709\u4e24\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5b9e\u73b0\u8fd9\u4e2a\u9700\u6c42\uff1a<\/p>\n<ol>\n<li>\u4e58\u9664\u6cd5\uff0c\u8981\u5c06\u6570\u5b57\u820d\u5165\u5230\u5c0f\u6570\u70b9\u540e\u4e24\u4f4d\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u6570\u5b57\u4e58\u4ee5\u00a0<code>100<\/code>\uff0c\u8c03\u7528\u820d\u5165\u51fd\u6570\uff0c\u7136\u540e\u518d\u5c06\u5176\u9664\u56de\u3002<\/li>\n<li>\u51fd\u6570 toFixed(n) \u5c06\u6570\u5b57\u820d\u5165\u5230\u5c0f\u6570\u70b9\u540e\u00a0<code>n<\/code>\u00a0\u4f4d\uff0c\u5e76\u4ee5\u5b57\u7b26\u4e32\u5f62\u5f0f\u8fd4\u56de\u7ed3\u679c\u3002\uff08\u4ee5Math.round\u820d\u5165\uff09<\/li>\n<\/ol>\n<blockquote>\n<p>\u6ce8\u610f\u00a0<code>toFixed<\/code>\u00a0\u7684\u7ed3\u679c\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\u3002\u5982\u679c\u5c0f\u6570\u90e8\u5206\u6bd4\u6240\u9700\u8981\u7684(n)\u77ed\uff0c\u5219\u5728\u7ed3\u5c3e\u6dfb\u52a0\u96f6\u3002<\/p>\n<\/blockquote>\n<h4>\u4e0d\u7cbe\u786e\u7684\u8ba1\u7b97<\/h4>\n<p>\u5728\u5185\u90e8\uff0c\u6570\u5b57\u662f\u4ee5 64 \u4f4d\u683c\u5f0f\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/IEEE_754\">IEEE-754<\/a>\u00a0\u8868\u793a\u7684\uff0c\u6240\u4ee5\u6b63\u597d\u6709 64 \u4f4d\u53ef\u4ee5\u5b58\u50a8\u4e00\u4e2a\u6570\u5b57\uff1a\u5176\u4e2d 52 \u4f4d\u88ab\u7528\u4e8e\u5b58\u50a8\u8fd9\u4e9b\u6570\u5b57\uff0c\u5176\u4e2d 11 \u4f4d\u7528\u4e8e\u5b58\u50a8\u5c0f\u6570\u70b9\u7684\u4f4d\u7f6e\uff0c\u800c 1 \u4f4d\u7528\u4e8e\u7b26\u53f7\u3002<br \/>\n\u5982\u679c\u4e00\u4e2a\u6570\u5b57\u771f\u7684\u5f88\u5927\uff0c\u5219\u53ef\u80fd\u4f1a\u6ea2\u51fa 64 \u4f4d\u5b58\u50a8\uff0c\u53d8\u6210\u4e00\u4e2a\u7279\u6b8a\u7684\u6570\u503c\u00a0<code>Infinity<\/code><\/p>\n<pre><code class=\"language-js\">alert( 0.1 + 0.2 == 0.3 ); \/\/ false\nalert( 0.1 + 0.2 ); \/\/ 0.30000000000000004\n<\/code><\/pre>\n<p>\u4e00\u4e2a\u6570\u5b57\u4ee5\u5176\u4e8c\u8fdb\u5236\u7684\u5f62\u5f0f\u5b58\u50a8\u5728\u5185\u5b58\u4e2d\uff0c\u4e00\u4e2a 1 \u548c 0 \u7684\u5e8f\u5217\u3002\u4f46\u662f\u5728\u5341\u8fdb\u5236\u6570\u5b57\u7cfb\u7edf\u4e2d\u770b\u8d77\u6765\u5f88\u7b80\u5355\u7684\u00a0<code>0.1<\/code>\uff0c<code>0.2<\/code>\u00a0\u8fd9\u6837\u7684\u5c0f\u6570\uff0c\u5b9e\u9645\u4e0a\u5728\u4e8c\u8fdb\u5236\u5f62\u5f0f\u4e2d\u662f\u65e0\u9650\u5faa\u73af\u5c0f\u6570\u3002<\/p>\n<blockquote>\n<p>\u4e0d\u4ec5\u4ec5\u662f JavaScript<br \/>\n\u8bb8\u591a\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\u4e5f\u5b58\u5728\u540c\u6837\u7684\u95ee\u9898\u3002<br \/>\nPHP\uff0cJava\uff0cC\uff0cPerl\uff0cRuby \u7ed9\u51fa\u7684\u4e5f\u662f\u5b8c\u5168\u76f8\u540c\u7684\u7ed3\u679c\uff0c\u56e0\u4e3a\u5b83\u4eec\u57fa\u4e8e\u7684\u662f\u76f8\u540c\u7684\u6570\u5b57\u683c\u5f0f\u3002<\/p>\n<\/blockquote>\n<p>\u6700\u53ef\u9760\u7684\u65b9\u6cd5\u662f\u501f\u52a9\u65b9\u6cd5toFixed(n)\u5bf9\u7ed3\u679c\u8fdb\u884c\u820d\u5165<\/p>\n<p>\u53ef\u4ee5\u5c06\u6570\u5b57\u4e34\u65f6\u4e58\u4ee5 100\uff08\u6216\u66f4\u5927\u7684\u6570\u5b57\uff09\uff0c\u5c06\u5176\u8f6c\u6362\u4e3a\u6574\u6570\uff0c\u8fdb\u884c\u6570\u5b66\u8fd0\u7b97\uff0c\u7136\u540e\u518d\u9664\u56de\u3002\u5f53\u6211\u4eec\u4f7f\u7528\u6574\u6570\u8fdb\u884c\u6570\u5b66\u8fd0\u7b97\u65f6\uff0c\u8bef\u5dee\u4f1a\u6709\u6240\u51cf\u5c11\uff0c\u4e58\/\u9664\u6cd5\u53ef\u4ee5\u51cf\u5c11\u8bef\u5dee\uff0c\u4f46\u4e0d\u80fd\u5b8c\u5168\u6d88\u9664\u8bef\u5dee\u3002<\/p>\n<blockquote>\n<p>\u6709\u8da3\u7684\u4e8b\u513f<br \/>\n\u5c1d\u8bd5\u8fd0\u884c\u4e0b\u9762\u8fd9\u6bb5\u4ee3\u7801\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">\/\/ Hello\uff01\u6211\u662f\u4e00\u4e2a\u4f1a\u81ea\u6211\u589e\u52a0\u7684\u6570\u5b57\uff01\nalert( 9999999999999999 ); \/\/ \u663e\u793a 10000000000000000\n<\/code><\/pre>\n<blockquote>\n<p>\u51fa\u73b0\u4e86\u540c\u6837\u7684\u95ee\u9898\uff1a\u7cbe\u5ea6\u635f\u5931\u3002\u6709 64 \u4f4d\u6765\u8868\u793a\u8be5\u6570\u5b57\uff0c\u5176\u4e2d 52 \u4f4d\u53ef\u7528\u4e8e\u5b58\u50a8\u6570\u5b57\uff0c\u4f46\u8fd9\u8fd8\u4e0d\u591f\u3002\u6240\u4ee5\u6700\u4e0d\u91cd\u8981\u7684\u6570\u5b57\u5c31\u6d88\u5931\u4e86\u3002<br \/>\nJavaScript \u4e0d\u4f1a\u5728\u6b64\u7c7b\u4e8b\u4ef6\u4e2d\u89e6\u53d1 error\u3002\u5b83\u4f1a\u5c3d\u6700\u5927\u52aa\u529b\u4f7f\u6570\u5b57\u7b26\u5408\u6240\u9700\u7684\u683c\u5f0f\uff0c\u4f46\u4e0d\u5e78\u7684\u662f\uff0c\u8fd9\u79cd\u683c\u5f0f\u4e0d\u591f\u5927\u5230\u6ee1\u8db3\u9700\u6c42\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u4e24\u4e2a\u96f6<br \/>\n\u6570\u5b57\u5185\u90e8\u8868\u793a\u7684\u53e6\u4e00\u4e2a\u6709\u8da3\u7ed3\u679c\u662f\u5b58\u5728\u4e24\u4e2a\u96f6\uff1a<code>0<\/code>\u00a0\u548c\u00a0<code>-0<\/code>\u3002<br \/>\n\u8fd9\u662f\u56e0\u4e3a\u5728\u5b58\u50a8\u65f6\uff0c\u4f7f\u7528\u4e00\u4f4d\u6765\u5b58\u50a8\u7b26\u53f7\uff0c\u56e0\u6b64\u5bf9\u4e8e\u5305\u62ec\u96f6\u5728\u5185\u7684\u4efb\u4f55\u6570\u5b57\uff0c\u53ef\u4ee5\u8bbe\u7f6e\u8fd9\u4e00\u4f4d\u6216\u8005\u4e0d\u8bbe\u7f6e\u3002<br \/>\n\u5728\u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u8fd9\u79cd\u533a\u522b\u5e76\u4e0d\u660e\u663e\uff0c\u56e0\u4e3a\u8fd0\u7b97\u7b26\u5c06\u5b83\u4eec\u89c6\u4e3a\u76f8\u540c\u7684\u503c\u3002<\/p>\n<\/blockquote>\n<h4>isFinite \u548c isNaN<\/h4>\n<ul>\n<li><code>Infinity<\/code>\uff08\u548c\u00a0<code>-Infinity<\/code>\uff09\u662f\u4e00\u4e2a\u7279\u6b8a\u7684\u6570\u503c\uff0c\u6bd4\u4efb\u4f55\u6570\u503c\u90fd\u5927\uff08\u5c0f\uff09\u3002<\/li>\n<li><code>NaN<\/code>\u00a0\u4ee3\u8868\u4e00\u4e2a error\u3002<br \/>\n\u5b83\u4eec\u5c5e\u4e8e\u00a0<code>number<\/code>\u00a0\u7c7b\u578b\uff0c\u4f46\u4e0d\u662f\u201c\u666e\u901a\u201d\u6570\u5b57\uff0c\u56e0\u6b64\uff0c\u8fd9\u91cc\u6709\u7528\u4e8e\u68c0\u67e5\u5b83\u4eec\u7684\u7279\u6b8a\u51fd\u6570\uff1a<\/li>\n<li><code>isNaN(value)<\/code>\u00a0\u5c06\u5176\u53c2\u6570\u8f6c\u6362\u4e3a\u6570\u5b57(number(&quot;str&quot;) == NaN)\uff0c\u7136\u540e\u6d4b\u8bd5\u5b83\u662f\u5426\u4e3a\u00a0<code>NaN<\/code><br \/>\n\u4f46\u662f\u6211\u4eec\u9700\u8981\u8fd9\u4e2a\u51fd\u6570\u5417\uff1f\u6211\u4eec\u4e0d\u80fd\u53ea\u4f7f\u7528\u00a0<code>=== NaN<\/code>\u00a0\u6bd4\u8f83\u5417\uff1f\u5f88\u4e0d\u5e78\uff0c\u8fd9\u4e0d\u884c\u3002\u503c \u201cNaN\u201d \u662f\u72ec\u4e00\u65e0\u4e8c\u7684\uff0c\u5b83\u4e0d\u7b49\u4e8e\u4efb\u4f55\u4e1c\u897f\uff0c\u5305\u62ec\u5b83\u81ea\u8eab<\/li>\n<li><code>isFinite(value)<\/code>\u00a0\u5c06\u5176\u53c2\u6570\u8f6c\u6362\u4e3a\u6570\u5b57\uff0c\u5982\u679c\u662f\u5e38\u89c4\u6570\u5b57\u800c\u4e0d\u662f\u00a0<code>NaN\/Infinity\/-Infinity<\/code>\uff0c\u5219\u8fd4\u56de\u00a0<code>true<\/code><br \/>\n\u6709\u65f6\u00a0<code>isFinite<\/code>\u00a0\u88ab\u7528\u4e8e\u9a8c\u8bc1\u5b57\u7b26\u4e32\u503c\u662f\u5426\u4e3a\u5e38\u89c4\u6570\u5b57<br \/>\n\u8bf7\u6ce8\u610f\uff0c\u5728\u6240\u6709\u6570\u5b57\u51fd\u6570\u4e2d\uff0c\u5305\u62ec\u00a0<code>isFinite<\/code>\uff0c\u7a7a\u5b57\u7b26\u4e32\u6216\u4ec5\u6709\u7a7a\u683c\u7684\u5b57\u7b26\u4e32\u5747\u88ab\u89c6\u4e3a\u00a0<code>0<\/code>\u3002<\/li>\n<\/ul>\n<blockquote>\n<p>\u4e0e\u00a0<code>Object.is<\/code>\u00a0\u8fdb\u884c\u6bd4\u8f83<br \/>\n\u6709\u4e00\u4e2a\u7279\u6b8a\u7684\u5185\u5efa\u65b9\u6cd5\u00a0<code>Object.is<\/code>\uff0c\u5b83\u7c7b\u4f3c\u4e8e\u00a0<code>===<\/code>\u00a0\u4e00\u6837\u5bf9\u503c\u8fdb\u884c\u6bd4\u8f83\uff0c\u4f46\u5b83\u5bf9\u4e8e\u4e24\u79cd\u8fb9\u7f18\u60c5\u51b5\u66f4\u53ef\u9760\uff1a<\/p>\n<ol>\n<li>\u5b83\u9002\u7528\u4e8e\u00a0<code>NaN<\/code>\uff1a<code>Object.is(NaN, NaN) === true<\/code>\uff0c\u8fd9\u662f\u4ef6\u597d\u4e8b\u3002<\/li>\n<li>\u503c\u00a0<code>0<\/code>\u00a0\u548c\u00a0<code>-0<\/code>\u00a0\u662f\u4e0d\u540c\u7684\uff1a<code>Object.is(0, -0) === false<\/code>\uff0c\u4ece\u6280\u672f\u4e0a\u8bb2\u8fd9\u662f\u5bf9\u7684\uff0c\u56e0\u4e3a\u5728\u5185\u90e8\uff0c\u6570\u5b57\u7684\u7b26\u53f7\u4f4d\u53ef\u80fd\u4f1a\u4e0d\u540c\uff0c\u5373\u4f7f\u5176\u4ed6\u6240\u6709\u4f4d\u5747\u4e3a\u96f6\u3002<br \/>\n\u5728\u6240\u6709\u5176\u4ed6\u60c5\u51b5\u4e0b\uff0c<code>Object.is(a, b)<\/code>\u00a0\u4e0e\u00a0<code>a === b<\/code>\u00a0\u76f8\u540c\u3002<br \/>\n\u8fd9\u79cd\u6bd4\u8f83\u65b9\u5f0f\u7ecf\u5e38\u88ab\u7528\u5728 JavaScript \u89c4\u8303\u4e2d\u3002\u5f53\u5185\u90e8\u7b97\u6cd5\u9700\u8981\u6bd4\u8f83\u4e24\u4e2a\u503c\u662f\u5426\u5b8c\u5168\u76f8\u540c\u65f6\uff0c\u5b83\u4f7f\u7528\u00a0<code>Object.is<\/code>\uff08\u5185\u90e8\u79f0\u4e3a\u00a0<a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-samevalue\">SameValue<\/a>\uff09\u3002<\/li>\n<\/ol>\n<\/blockquote>\n<h4>parseInt \u548c parseFloat<\/h4>\n<p>\u4f7f\u7528\u52a0\u53f7\u00a0<code>+<\/code>\u00a0\u6216\u00a0<code>Number()<\/code>\u00a0\u7684\u6570\u5b57\u8f6c\u6362\u662f\u4e25\u683c\u7684\u3002\u5982\u679c\u4e00\u4e2a\u503c\u4e0d\u5b8c\u5168\u662f\u4e00\u4e2a\u6570\u5b57\uff0c\u5c31\u4f1a\u5931\u8d25<\/p>\n<pre><code class=\"language-js\">alert( +&quot;100px&quot; ); \/\/ NaN\n<\/code><\/pre>\n<p>\u552f\u4e00\u7684\u4f8b\u5916\u662f\u5b57\u7b26\u4e32\u5f00\u5934\u6216\u7ed3\u5c3e\u7684\u7a7a\u683c\uff0c\u56e0\u4e3a\u5b83\u4eec\u4f1a\u88ab\u5ffd\u7565\u3002<br \/>\n\u4f46\u5728\u73b0\u5b9e\u751f\u6d3b\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u4f1a\u6709\u5e26\u6709\u5355\u4f4d\u7684\u503c\uff0c\u4f8b\u5982 CSS \u4e2d\u7684\u00a0<code>&quot;100px&quot;<\/code>\u00a0\u6216\u00a0<code>&quot;12pt&quot;<\/code>\u3002\u5e76\u4e14\uff0c\u5728\u5f88\u591a\u56fd\u5bb6\uff0c\u8d27\u5e01\u7b26\u53f7\u662f\u7d27\u968f\u91d1\u989d\u4e4b\u540e\u7684\uff0c\u6240\u4ee5\u6211\u4eec\u6709\u00a0<code>&quot;19\u20ac&quot;<\/code>\uff0c\u5e76\u5e0c\u671b\u4ece\u4e2d\u63d0\u53d6\u51fa\u4e00\u4e2a\u6570\u503c\u3002<br \/>\n\u8fd9\u5c31\u662f\u00a0<code>parseInt<\/code>\u00a0\u548c\u00a0<code>parseFloat<\/code>\u00a0\u7684\u4f5c\u7528\u3002<br \/>\n\u5b83\u4eec\u53ef\u4ee5\u4ece\u5b57\u7b26\u4e32\u4e2d\u201c\u8bfb\u53d6\u201d\u6570\u5b57\uff0c\u76f4\u5230\u65e0\u6cd5\u8bfb\u53d6\u4e3a\u6b62\u3002\u5982\u679c\u53d1\u751f error\uff0c\u5219\u8fd4\u56de\u6536\u96c6\u5230\u7684\u6570\u5b57\u3002\u51fd\u6570\u00a0<code>parseInt<\/code>\u00a0\u8fd4\u56de\u4e00\u4e2a\u6574\u6570\uff0c\u800c\u00a0<code>parseFloat<\/code>\u00a0\u8fd4\u56de\u4e00\u4e2a\u6d6e\u70b9\u6570\u3002<\/p>\n<pre><code class=\"language-js\">alert( parseInt('100px') ); \/\/ 100\nalert( parseFloat('12.5em') ); \/\/ 12.5\n\nalert( parseInt('12.3') ); \/\/ 12\uff0c\u53ea\u6709\u6574\u6570\u90e8\u5206\u88ab\u8fd4\u56de\u4e86\nalert( parseFloat('12.3.4') ); \/\/ 12.3\uff0c\u5728\u7b2c\u4e8c\u4e2a\u70b9\u51fa\u505c\u6b62\u4e86\u8bfb\u53d6\n<\/code><\/pre>\n<p>\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c<code>parseInt\/parseFloat<\/code>\u00a0\u4f1a\u8fd4\u56de\u00a0<code>NaN<\/code>\u3002\u5f53\u6ca1\u6709\u6570\u5b57\u53ef\u8bfb\u65f6\u4f1a\u53d1\u751f\u8fd9\u79cd\u60c5\u51b5\uff1a<\/p>\n<pre><code class=\"language-js\">alert( parseInt('a123') ); \/\/ NaN\uff0c\u7b2c\u4e00\u4e2a\u7b26\u53f7\u505c\u6b62\u4e86\u8bfb\u53d6\n<\/code><\/pre>\n<blockquote>\n<p>parseInt(str, radix) \u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570<br \/>\n<code>parseInt()<\/code>\u00a0\u51fd\u6570\u5177\u6709\u53ef\u9009\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u3002\u5b83\u6307\u5b9a\u4e86\u6570\u5b57\u7cfb\u7edf\u7684\u57fa\u6570\uff0c\u56e0\u6b64\u00a0<code>parseInt<\/code>\u00a0\u8fd8\u53ef\u4ee5\u89e3\u6790\u5341\u516d\u8fdb\u5236\u6570\u5b57\u3001\u4e8c\u8fdb\u5236\u6570\u5b57\u7b49\u7684\u5b57\u7b26\u4e32\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">alert( parseInt('0xff', 16) ); \/\/ 255\nalert( parseInt('ff', 16) ); \/\/ 255\uff0c\u6ca1\u6709 0x \u4ecd\u7136\u6709\u6548\n\nalert( parseInt('2n9c', 36) ); \/\/ 123456\n<\/code><\/pre>\n<h4>\u5176\u4ed6\u6570\u5b66\u51fd\u6570<\/h4>\n<p>JavaScript \u6709\u4e00\u4e2a\u5185\u5efa\u7684\u00a0<a href=\"https:\/\/developer.mozilla.org\/en\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\">Math<\/a>\u00a0\u5bf9\u8c61\uff0c\u5b83\u5305\u542b\u4e86\u4e00\u4e2a\u5c0f\u578b\u7684\u6570\u5b66\u51fd\u6570\u548c\u5e38\u91cf\u5e93\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ 0-1\u968f\u673a\u6570\uff0c\u4e0d\u5305\u62ec1\nMath.random();\n\/\/ \u4ece\u4efb\u610f\u6570\u91cf\u7684\u53c2\u6570\u4e2d\u8fd4\u56de\u6700\u5927\/\u6700\u5c0f\u503c\nMath.max(a, b, c...);\nMath.min(a, b, c...);\n\/\/ power\u6b21\u5e42\nMath.pow(2, 10);\n<\/code><\/pre>\n<p><code>Math<\/code>\u00a0\u5bf9\u8c61\u4e2d\u8fd8\u6709\u66f4\u591a\u51fd\u6570\u548c\u5e38\u91cf\uff0c\u5305\u62ec\u4e09\u89d2\u51fd\u6570\uff0c\u4f60\u53ef\u4ee5\u5728\u00a0<a href=\"https:\/\/developer.mozilla.org\/en\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Math\">Math \u5bf9\u8c61\u6587\u6863<\/a>\u00a0\u4e2d\u627e\u5230\u8fd9\u4e9b\u5185\u5bb9\u3002<\/p>\n<h4>\u5728\u5904\u7406\u5c0f\u6570\u65f6\u907f\u514d\u76f8\u7b49\u6027\u68c0\u67e5\u3002<\/h4>\n<h3>\u5b57\u7b26\u4e32<\/h3>\n<p>\u5728 JavaScript \u4e2d\uff0c\u6587\u672c\u6570\u636e\u88ab\u4ee5\u5b57\u7b26\u4e32\u5f62\u5f0f\u5b58\u50a8\uff0c\u5355\u4e2a\u5b57\u7b26\u6ca1\u6709\u5355\u72ec\u7684\u7c7b\u578b\u3002<br \/>\n\u5b57\u7b26\u4e32\u7684\u5185\u90e8\u683c\u5f0f\u59cb\u7ec8\u662fUTF-16\uff0c\u5b83\u4e0d\u4f9d\u8d56\u4e8e\u9875\u9762\u7f16\u7801\u3002<\/p>\n<h4>\u5f15\u53f7<\/h4>\n<p>\u5355\u5f15\u53f7\u548c\u53cc\u5f15\u53f7\u57fa\u672c\u76f8\u540c\u3002\u4f46\u662f\uff0c\u53cd\u5f15\u53f7\u5141\u8bb8\u6211\u4eec\u901a\u8fc7\u00a0<code>${\u2026}<\/code>\u00a0\u5c06\u4efb\u4f55\u8868\u8fbe\u5f0f\u5d4c\u5165\u5230\u5b57\u7b26\u4e32\u4e2d\uff0c\u4f7f\u7528\u53cd\u5f15\u53f7\u7684\u53e6\u4e00\u4e2a\u4f18\u70b9\u662f\u5b83\u4eec\u5141\u8bb8\u5b57\u7b26\u4e32\u8de8\u884c\u3002<br \/>\n\u53cd\u5f15\u53f7\u8fd8\u5141\u8bb8\u6211\u4eec\u5728\u7b2c\u4e00\u4e2a\u53cd\u5f15\u53f7\u4e4b\u524d\u6307\u5b9a\u4e00\u4e2a\u201c\u6a21\u7248\u51fd\u6570\u201d\u3002\u8bed\u6cd5\u662f\uff1a<code>func`string`<\/code>\u3002\u51fd\u6570\u00a0<code>func<\/code>\u00a0\u88ab\u81ea\u52a8\u8c03\u7528\uff0c\u63a5\u6536\u5b57\u7b26\u4e32\u548c\u5d4c\u5165\u5f0f\u8868\u8fbe\u5f0f\uff0c\u5e76\u5904\u7406\u5b83\u4eec\u3002\u4f60\u53ef\u4ee5\u5728\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Template_literals#Tagged_template_literals\">docs<\/a>\u00a0\u4e2d\u9605\u8bfb\u66f4\u591a\u5173\u4e8e\u5b83\u4eec\u7684\u4fe1\u606f\u3002\u8fd9\u53eb\u505a \u201ctagged templates\u201d\u3002\u6b64\u529f\u80fd\u53ef\u4ee5\u66f4\u8f7b\u677e\u5730\u5c06\u5b57\u7b26\u4e32\u5305\u88c5\u5230\u81ea\u5b9a\u4e49\u6a21\u7248\u6216\u5176\u4ed6\u51fd\u6570\u4e2d\uff0c\u4f46\u8fd9\u5f88\u5c11\u4f7f\u7528\u3002<\/p>\n<h4>\u7279\u6b8a\u5b57\u7b26<\/h4>\n<table>\n<thead>\n<tr>\n<th>\u5b57\u7b26<\/th>\n<th>\u63cf\u8ff0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\\n<\/code><\/td>\n<td>\u6362\u884c<\/td>\n<\/tr>\n<tr>\n<td><code>\\r<\/code><\/td>\n<td>\u5728 Windows \u6587\u672c\u6587\u4ef6\u4e2d\uff0c\u4e24\u4e2a\u5b57\u7b26\u00a0<code>\\r\\n<\/code>\u00a0\u7684\u7ec4\u5408\u4ee3\u8868\u4e00\u4e2a\u6362\u884c\u3002\u800c\u5728\u975e Windows \u64cd\u4f5c\u7cfb\u7edf\u4e0a\uff0c\u5b83\u5c31\u662f\u00a0<code>\\n<\/code>\u3002\u8fd9\u662f\u5386\u53f2\u539f\u56e0\u9020\u6210\u7684\uff0c\u5927\u591a\u6570\u7684 Windows \u8f6f\u4ef6\u4e5f\u7406\u89e3\u00a0<code>\\n<\/code>\u3002<\/td>\n<\/tr>\n<tr>\n<td><code>\\'<\/code>,\u00a0<code>\\&quot;<\/code><\/td>\n<td>\u5f15\u53f7<\/td>\n<\/tr>\n<tr>\n<td><code>\\\\<\/code><\/td>\n<td>\u53cd\u659c\u7ebf<\/td>\n<\/tr>\n<tr>\n<td><code>\\t<\/code><\/td>\n<td>\u5236\u8868\u7b26<\/td>\n<\/tr>\n<tr>\n<td><code>\\b<\/code>,\u00a0<code>\\f<\/code>,\u00a0<code>\\v<\/code><\/td>\n<td>\u9000\u683c\uff0c\u6362\u9875\uff0c\u5782\u76f4\u6807\u7b7e \u2014\u2014 \u4e3a\u4e86\u517c\u5bb9\u6027\uff0c\u73b0\u5728\u5df2\u7ecf\u4e0d\u4f7f\u7528\u4e86\u3002<\/td>\n<\/tr>\n<tr>\n<td><code>\\xXX<\/code><\/td>\n<td>\u5177\u6709\u7ed9\u5b9a\u5341\u516d\u8fdb\u5236 Unicode\u00a0<code>XX<\/code>\u00a0\u7684 Unicode \u5b57\u7b26\uff0c\u4f8b\u5982\uff1a<code>'\\x7A'<\/code>\u00a0\u548c\u00a0<code>'z'<\/code>\u00a0\u76f8\u540c\u3002<\/td>\n<\/tr>\n<tr>\n<td><code>\\uXXXX<\/code><\/td>\n<td>\u4ee5 UTF-16 \u7f16\u7801\u7684\u5341\u516d\u8fdb\u5236\u4ee3\u7801\u00a0<code>XXXX<\/code>\u00a0\u7684 Unicode \u5b57\u7b26\uff0c\u4f8b\u5982\u00a0<code>\\u00A9<\/code>\u00a0\u2014\u2014 \u662f\u7248\u6743\u7b26\u53f7\u00a0<code>\u00a9<\/code>\u00a0\u7684 Unicode\u3002\u5b83\u5fc5\u987b\u6b63\u597d\u662f 4 \u4e2a\u5341\u516d\u8fdb\u5236\u6570\u5b57\u3002<\/td>\n<\/tr>\n<tr>\n<td><code>\\u{X\u2026XXXXXX}<\/code>\uff081 \u5230 6 \u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\uff09<\/td>\n<td>\u5177\u6709\u7ed9\u5b9a UTF-32 \u7f16\u7801\u7684 Unicode \u7b26\u53f7\u3002\u4e00\u4e9b\u7f55\u89c1\u7684\u5b57\u7b26\u7528\u4e24\u4e2a Unicode \u7b26\u53f7\u7f16\u7801\uff0c\u5360\u7528 4 \u4e2a\u5b57\u8282\u3002\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u63d2\u5165\u957f\u4ee3\u7801\u4e86\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-js\">alert( &quot;\\u00A9&quot; ); \/\/ \u00a9\nalert( &quot;\\u{20331}&quot; ); \/\/ \u4f6b\uff0c\u7f55\u89c1\u7684\u4e2d\u56fd\u8c61\u5f62\u6587\u5b57\uff08\u957f Unicode\uff09\nalert( &quot;\\u{1F60D}&quot; ); \/\/ \ud83d\ude0d\uff0c\u7b11\u8138\u7b26\u53f7\uff08\u53e6\u4e00\u4e2a\u957f Unicode\uff09\n<\/code><\/pre>\n<h4>\u5b57\u7b26\u4e32\u957f\u5ea6<\/h4>\n<p>string.length '\\n'\u4e5f\u5c5e\u4e8e\u4e00\u4e2a\u5b57\u7b26<\/p>\n<blockquote>\n<p><code>length<\/code>\u00a0\u662f\u4e00\u4e2a\u5c5e\u6027<br \/>\n\u638c\u63e1\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\u7684\u4eba\uff0c\u6709\u65f6\u4f1a\u9519\u8bef\u5730\u8c03\u7528\u00a0<code>str.length()<\/code>\u00a0\u800c\u4e0d\u662f\u00a0<code>str.length<\/code>\u3002\u8fd9\u662f\u884c\u4e0d\u901a\u7684\u3002<br \/>\n\u8bf7\u6ce8\u610f\u00a0<code>str.length<\/code>\u00a0\u662f\u4e00\u4e2a\u6570\u5b57\u5c5e\u6027\uff0c\u800c\u4e0d\u662f\u51fd\u6570\u3002\u540e\u9762\u4e0d\u9700\u8981\u6dfb\u52a0\u62ec\u53f7\u3002<\/p>\n<\/blockquote>\n<h4>\u83b7\u53d6\u5b57\u7b26<\/h4>\n<p>\u8981\u83b7\u53d6\u5728\u00a0<code>pos<\/code>\u00a0\u4f4d\u7f6e\u7684\u4e00\u4e2a\u5b57\u7b26\uff0c\u53ef\u4ee5\u4f7f\u7528\u65b9\u62ec\u53f7\u00a0<code>[pos]<\/code>\u00a0\u6216\u8005\u8c03\u7528\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/charAt\">str.charAt(pos)<\/a>\u00a0\u65b9\u6cd5\u3002\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4ece\u96f6\u4f4d\u7f6e\u5f00\u59cb<br \/>\n\u65b9\u62ec\u53f7\u662f\u83b7\u53d6\u5b57\u7b26\u7684\u4e00\u79cd\u73b0\u4ee3\u5316\u65b9\u6cd5\uff0c\u800c\u00a0<code>charAt<\/code>\u00a0\u662f\u5386\u53f2\u539f\u56e0\u624d\u5b58\u5728\u7684\u3002<br \/>\n\u5b83\u4eec\u4e4b\u95f4\u7684\u552f\u4e00\u533a\u522b\u662f\uff0c\u5982\u679c\u6ca1\u6709\u627e\u5230\u5b57\u7b26\uff0c<code>[]<\/code>\u00a0\u8fd4\u56de\u00a0<code>undefined<\/code>\uff0c\u800c\u00a0<code>charAt<\/code>\u00a0\u8fd4\u56de\u4e00\u4e2a\u7a7a\u5b57\u7b26\u4e32<br \/>\n\u6211\u4eec\u4e5f\u53ef\u4ee5\u4f7f\u7528\u00a0<code>for..of<\/code>\u00a0\u904d\u5386\u5b57\u7b26<\/p>\n<h4>\u5b57\u7b26\u4e32\u4e0d\u53ef\u53d8<\/h4>\n<p>\u5728 JavaScript \u4e2d\uff0c\u5b57\u7b26\u4e32\u4e0d\u53ef\u66f4\u6539\u3002\u6539\u53d8\u5b57\u7b26\u662f\u4e0d\u53ef\u80fd\u7684\u3002<\/p>\n<pre><code class=\"language-js\">let str = 'Hi';\n\nstr[0] = 'h'; \/\/ error\nalert( str[0] ); \/\/ \u65e0\u6cd5\u8fd0\u884c\n<\/code><\/pre>\n<p>\u901a\u5e38\u7684\u89e3\u51b3\u65b9\u6cd5\u662f\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5b57\u7b26\u4e32\uff0c\u5e76\u5c06\u5176\u5206\u914d\u7ed9 str \u800c\u4e0d\u662f\u4ee5\u524d\u7684\u5b57\u7b26\u4e32\u3002<\/p>\n<h4>\u6539\u53d8\u5927\u5c0f\u5199<\/h4>\n<pre><code class=\"language-js\">alert( 'Interface'.toUpperCase() ); \/\/ INTERFACE\nalert( 'Interface'.toLowerCase() ); \/\/ interface\nalert( 'Interface'[0].toLowerCase() ); \/\/ 'i'\n<\/code><\/pre>\n<h4>\u67e5\u627e\u5b50\u5b57\u7b26\u4e32<\/h4>\n<h5>string.indexOf(substr,pos)<\/h5>\n<p>\u5b83\u4ece\u7ed9\u5b9a\u4f4d\u7f6e\u00a0<code>pos<\/code>\u00a0\u5f00\u59cb\uff0c\u5728\u00a0<code>str<\/code>\u00a0\u4e2d\u67e5\u627e\u00a0<code>substr<\/code>\uff0c\u5982\u679c\u6ca1\u6709\u627e\u5230\uff0c\u5219\u8fd4\u56de\u00a0<code>-1<\/code>\uff0c\u5426\u5219\u8fd4\u56de\u5339\u914d\u6210\u529f\u7684\u4f4d\u7f6e\u3002<br \/>\n\u53ef\u9009\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u5141\u8bb8\u6211\u4eec\u4ece\u4e00\u4e2a\u7ed9\u5b9a\u7684\u4f4d\u7f6e\u5f00\u59cb\u68c0\u7d22\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u5bf9\u6240\u6709\u5b58\u5728\u4f4d\u7f6e\u90fd\u611f\u5174\u8da3\uff0c\u53ef\u4ee5\u5728\u4e00\u4e2a\u5faa\u73af\u4e2d\u4f7f\u7528\u00a0<code>indexOf<\/code>\u3002\u6bcf\u4e00\u6b21\u65b0\u7684\u8c03\u7528\u90fd\u53d1\u751f\u5728\u4e0a\u4e00\u5339\u914d\u4f4d\u7f6e\u4e4b\u540e:<\/p>\n<pre><code class=\"language-js\">let str = &quot;As sly as a fox, as strong as an ox&quot;;\nlet target = &quot;as&quot;;\n\nlet pos = -1;\nwhile ((pos = str.indexOf(target, pos + 1)) != -1) {\n  alert( pos );\n}\n<\/code><\/pre>\n<blockquote>\n<p><code>str.lastIndexOf(substr, pos)<\/code><br \/>\n\u8fd8\u6709\u4e00\u4e2a\u7c7b\u4f3c\u7684\u65b9\u6cd5str.lastIndexOf(substr, position)\uff0c\u5b83\u4ece\u5b57\u7b26\u4e32\u7684\u672b\u5c3e\u5f00\u59cb\u641c\u7d22\u5230\u5f00\u5934\u3002<br \/>\n\u5b83\u4f1a\u4ee5\u76f8\u53cd\u7684\u987a\u5e8f\u5217\u51fa\u8fd9\u4e9b\u4e8b\u4ef6\u3002<\/p>\n<\/blockquote>\n<p>\u5728\u00a0<code>if<\/code>\u00a0\u6d4b\u8bd5\u4e2d\u00a0<code>indexOf<\/code>\u00a0\u6709\u4e00\u70b9\u4e0d\u65b9\u4fbf\u3002\u6211\u4eec\u4e0d\u80fd\u50cf\u8fd9\u6837\u628a\u5b83\u653e\u5728\u00a0<code>if<\/code>\u00a0\u4e2d\uff0c\u5e94\u8be5\u4e0e-1\u68c0\u67e5\u3002<\/p>\n<pre><code class=\"language-js\">let str = &quot;Widget with id&quot;;\n\nif (str.indexOf(&quot;Widget&quot;)) {\n    alert(&quot;We found it&quot;); \/\/ \u4e0d\u5de5\u4f5c\uff01\n}\n<\/code><\/pre>\n<h5>\u6309\u4f4dnot\u6280\u5de7<\/h5>\n<p>\u8fd9\u91cc\u4f7f\u7528\u7684\u4e00\u4e2a\u8001\u6280\u5de7\u662f\u00a0<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Operators\/Bitwise_NOT\">bitwise NOT<\/a>\u00a0<code>~<\/code>\u00a0\u8fd0\u7b97\u7b26\u3002\u5b83\u5c06\u6570\u5b57\u8f6c\u6362\u4e3a 32-bit \u6574\u6570\uff08\u5982\u679c\u5b58\u5728\u5c0f\u6570\u90e8\u5206\uff0c\u5219\u5220\u9664\u5c0f\u6570\u90e8\u5206\uff09\uff0c\u7136\u540e\u5bf9\u5176\u4e8c\u8fdb\u5236\u8868\u793a\u5f62\u5f0f\u4e2d\u7684\u6240\u6709\u4f4d\u5747\u53d6\u53cd\u3002<br \/>\n\u5b9e\u9645\u4e0a\uff0c\u8fd9\u610f\u5473\u7740\u4e00\u4ef6\u5f88\u7b80\u5355\u7684\u4e8b\u513f\uff1a\u5bf9\u4e8e 32-bit \u6574\u6570\uff0c<code>~n<\/code>\u00a0\u7b49\u4e8e\u00a0<code>-(n+1)<\/code>\u3002<\/p>\n<pre><code class=\"language-js\">alert( ~2 ); \/\/ -3\uff0c\u548c -(2+1) \u76f8\u540c\nalert( ~1 ); \/\/ -2\uff0c\u548c -(1+1) \u76f8\u540c\nalert( ~0 ); \/\/ -1\uff0c\u548c -(0+1) \u76f8\u540c\nalert( ~-1 ); \/\/ 0\uff0c\u548c -(-1+1) \u76f8\u540c\n<\/code><\/pre>\n<p>\u6b63\u5982\u6211\u4eec\u770b\u5230\u8fd9\u6837\uff0c\u53ea\u6709\u5f53\u00a0<code>n == -1<\/code>\u00a0\u65f6\uff0c<code>~n<\/code>\u00a0\u624d\u4e3a\u96f6\uff08\u9002\u7528\u4e8e\u4efb\u4f55 32-bit \u5e26\u7b26\u53f7\u7684\u6574\u6570\u00a0<code>n<\/code>\uff09\u3002<br \/>\n\u56e0\u6b64\uff0c\u4ec5\u5f53\u00a0<code>indexOf<\/code>\u00a0\u7684\u7ed3\u679c\u4e0d\u662f\u00a0<code>-1<\/code>\u00a0\u65f6\uff0c\u68c0\u67e5\u00a0<code>if ( ~str.indexOf(&quot;...&quot;) )<\/code>\u00a0\u624d\u4e3a\u771f\u3002\u6362\u53e5\u8bdd\u8bf4\uff0c\u5f53\u6709\u5339\u914d\u65f6\u3002<br \/>\n\u4eba\u4eec\u7528\u5b83\u6765\u7b80\u5199\u00a0<code>indexOf<\/code>\u00a0\u68c0\u67e5\uff1a<\/p>\n<pre><code class=\"language-js\">let str = &quot;Widget&quot;;\n\nif (~str.indexOf(&quot;Widget&quot;)) {\n  alert( 'Found it!' ); \/\/ \u6b63\u5e38\u8fd0\u884c\n}\n<\/code><\/pre>\n<p>\u901a\u5e38\u4e0d\u5efa\u8bae\u4ee5\u975e\u663e\u800c\u6613\u89c1\u7684\u65b9\u5f0f\u4f7f\u7528\u8bed\u8a00\u7279\u6027\uff0c\u4f46\u8fd9\u79cd\u7279\u6b8a\u6280\u5de7\u5728\u65e7\u4ee3\u7801\u4e2d\u4ecd\u88ab\u5e7f\u6cdb\u4f7f\u7528\uff0c\u6240\u4ee5\u6211\u4eec\u5e94\u8be5\u7406\u89e3\u5b83\u3002<br \/>\n\u53ea\u8981\u8bb0\u4f4f\uff1a<code>if (~str.indexOf(...))<\/code>\u00a0\u8bfb\u4f5c \u201cif found\u201d\u3002<br \/>\n\u786e\u5207\u5730\u8bf4\uff0c\u7531\u4e8e\u00a0<code>~<\/code>\u00a0\u8fd0\u7b97\u7b26\u5c06\u5927\u6570\u5b57\u622a\u65ad\u4e3a 32 \u4f4d\uff0c\u56e0\u6b64\u5b58\u5728\u7ed9\u51fa\u00a0<code>0<\/code>\u00a0\u7684\u5176\u4ed6\u6570\u5b57\uff0c\u6700\u5c0f\u7684\u6570\u5b57\u662f\u00a0<code>~4294967295=0<\/code>\u3002\u8fd9\u4f7f\u5f97\u8fd9\u79cd\u68c0\u67e5\u53ea\u6709\u5728\u5b57\u7b26\u4e32\u6ca1\u6709\u90a3\u4e48\u957f\u7684\u60c5\u51b5\u4e0b\u624d\u662f\u6b63\u786e\u7684\u3002<br \/>\n\u73b0\u5728\u6211\u4eec\u53ea\u4f1a\u5728\u65e7\u7684\u4ee3\u7801\u4e2d\u770b\u5230\u8fd9\u4e2a\u6280\u5de7\uff0c\u56e0\u4e3a\u73b0\u4ee3 JavaScript \u63d0\u4f9b\u4e86\u00a0<code>.includes<\/code>\u00a0\u65b9\u6cd5\uff08\u89c1\u4e0b\u6587\uff09\u3002<\/p>\n<h5>str.includes(substr,pos), str.startsWith(substr), str.endsWith(substr)<\/h5>\n<p>\u66f4\u73b0\u4ee3\u7684\u65b9\u6cd5\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/includes\">str.includes(substr, pos)<\/a>\u00a0\u6839\u636e\u00a0<code>str<\/code>\u00a0\u4e2d\u662f\u5426\u5305\u542b\u00a0<code>substr<\/code>\u00a0\u6765\u8fd4\u56de\u00a0<code>true\/false<\/code>\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u9700\u8981\u68c0\u6d4b\u5339\u914d\uff0c\u4f46\u4e0d\u9700\u8981\u5b83\u7684\u4f4d\u7f6e\uff0c\u90a3\u4e48\u8fd9\u662f\u6b63\u786e\u7684\u9009\u62e9<br \/>\n<code>str.includes<\/code>\u00a0\u7684\u7b2c\u4e8c\u4e2a\u53ef\u9009\u53c2\u6570\u662f\u5f00\u59cb\u641c\u7d22\u7684\u8d77\u59cb\u4f4d\u7f6e<br \/>\n\u65b9\u6cd5\u00a0str.startsWith\u548cstr.endsWith\u7684\u529f\u80fd\u4e0e\u5176\u540d\u79f0\u6240\u8868\u793a\u7684\u610f\u601d\u76f8\u540c<\/p>\n<h4>\u83b7\u53d6\u5b50\u5b57\u7b26\u4e32<\/h4>\n<p>JavaScript \u4e2d\u6709\u4e09\u79cd\u83b7\u53d6\u5b57\u7b26\u4e32\u7684\u65b9\u6cd5\uff1a<code>substring<\/code>\u3001<code>substr<\/code>\u00a0\u548c\u00a0<code>slice<\/code>\u3002<\/p>\n<h5><code>str.slice(start [, end])<\/code><\/h5>\n<p>\u8fd4\u56de\u5b57\u7b26\u4e32\u4ece\u00a0<code>start<\/code>\u00a0\u5230\uff08\u4f46\u4e0d\u5305\u62ec\uff09<code>end<\/code>\u00a0\u7684\u90e8\u5206\u3002<\/p>\n<pre><code class=\"language-js\">let str = &quot;stringify&quot;;\nalert( str.slice(0, 5) ); \/\/ 'strin'\uff0c\u4ece 0 \u5230 5 \u7684\u5b50\u5b57\u7b26\u4e32\uff08\u4e0d\u5305\u62ec 5\uff09\nalert( str.slice(0, 1) ); \/\/ 's'\uff0c\u4ece 0 \u5230 1\uff0c\u4f46\u4e0d\u5305\u62ec 1\uff0c\u6240\u4ee5\u53ea\u6709\u5728 0 \u5904\u7684\u5b57\u7b26\n\n\/\/\u5982\u679c\u6ca1\u6709\u7b2c\u4e8c\u4e2a\u53c2\u6570\nlet str = &quot;stringify&quot;;\nalert( str.slice(2) ); \/\/ \u4ece\u7b2c\u4e8c\u4e2a\u4f4d\u7f6e\u76f4\u5230\u7ed3\u675f\n\n\/\/`start\/end`\u00a0\u4e5f\u6709\u53ef\u80fd\u662f\u8d1f\u503c\u3002\u5b83\u4eec\u7684\u610f\u601d\u662f\u8d77\u59cb\u4f4d\u7f6e\u4ece\u5b57\u7b26\u4e32\u7ed3\u5c3e\u8ba1\u7b97\nlet str = &quot;stringify&quot;;\n\/\/ \u4ece\u53f3\u8fb9\u7684\u7b2c\u56db\u4e2a\u4f4d\u7f6e\u5f00\u59cb\uff0c\u5728\u53f3\u8fb9\u7684\u7b2c\u4e00\u4e2a\u4f4d\u7f6e\u7ed3\u675f\nalert( str.slice(-4, -1) ); \/\/ 'gif'\n<\/code><\/pre>\n<h5><code>str.substring(start [, end])<\/code><\/h5>\n<p>\u8fd4\u56de\u5b57\u7b26\u4e32\u4ece\u00a0<code>start<\/code>\u00a0\u5230\uff08\u4f46\u4e0d\u5305\u62ec\uff09<code>end<\/code>\u00a0\u7684\u90e8\u5206\u3002<br \/>\n\u8fd9\u4e0e\u00a0<code>slice<\/code>\u00a0\u51e0\u4e4e\u76f8\u540c\uff0c\u4f46\u5b83\u5141\u8bb8\u00a0<code>start<\/code>\u00a0\u5927\u4e8e\u00a0<code>end<\/code>\u3002<\/p>\n<pre><code class=\"language-js\">let str = &quot;stringify&quot;;\n\n\/\/ \u8fd9\u4e9b\u5bf9\u4e8e substring \u662f\u76f8\u540c\u7684\nalert( str.substring(2, 6) ); \/\/ &quot;ring&quot;\nalert( str.substring(6, 2) ); \/\/ &quot;ring&quot;\n\n\/\/ \u2026\u2026\u4f46\u5bf9 slice \u662f\u4e0d\u540c\u7684\uff1a\nalert( str.slice(2, 6) ); \/\/ &quot;ring&quot;\uff08\u4e00\u6837\uff09\nalert( str.slice(6, 2) ); \/\/ &quot;&quot;\uff08\u7a7a\u5b57\u7b26\u4e32\uff09\n<\/code><\/pre>\n<p>\u4e0d\u652f\u6301\u8d1f\u53c2\u6570\uff08\u4e0d\u50cf slice\uff09\uff0c\u5b83\u4eec\u88ab\u89c6\u4e3a\u00a0<code>0<\/code>\u3002<\/p>\n<h5><code>str.substr(start [, length])<\/code><\/h5>\n<p>\u8fd4\u56de\u5b57\u7b26\u4e32\u4ece\u00a0<code>start<\/code>\u00a0\u5f00\u59cb\u7684\u7ed9\u5b9a\u00a0<code>length<\/code>\u00a0\u7684\u90e8\u5206\u3002<br \/>\n\u4e0e\u4ee5\u524d\u7684\u65b9\u6cd5\u76f8\u6bd4\uff0c\u8fd9\u4e2a\u5141\u8bb8\u6211\u4eec\u6307\u5b9a\u00a0<code>length<\/code>\u00a0\u800c\u4e0d\u662f\u7ed3\u675f\u4f4d\u7f6e<\/p>\n<pre><code class=\"language-js\">let str = &quot;stringify&quot;;\nalert( str.substr(2, 4) ); \/\/ 'ring'\uff0c\u4ece\u4f4d\u7f6e 2 \u5f00\u59cb\uff0c\u83b7\u53d6 4 \u4e2a\u5b57\u7b26\n\n\/\/ \u7b2c\u4e00\u4e2a\u53c2\u6570\u53ef\u4e3a\u8d1f\u6570\nlet str = &quot;stringify&quot;;\nalert( str.substr(-4, 2) ); \/\/ 'gi'\uff0c\u4ece\u7b2c 4 \u4f4d\u83b7\u53d6 2 \u4e2a\u5b57\u7b26\n<\/code><\/pre>\n<blockquote>\n<p>\u4f7f\u7528\u54ea\u4e00\u4e2a\uff1f<br \/>\n\u5b83\u4eec\u90fd\u53ef\u7528\u4e8e\u83b7\u53d6\u5b50\u5b57\u7b26\u4e32\u3002\u6b63\u5f0f\u4e00\u70b9\u6765\u8bb2\uff0c<code>substr<\/code>\u00a0\u6709\u4e00\u4e2a\u5c0f\u7f3a\u70b9\uff1a\u5b83\u4e0d\u662f\u5728 JavaScript \u6838\u5fc3\u89c4\u8303\u4e2d\u63cf\u8ff0\u7684\uff0c\u800c\u662f\u5728\u9644\u5f55 B \u4e2d\u3002\u9644\u5f55 B \u7684\u5185\u5bb9\u4e3b\u8981\u662f\u63cf\u8ff0\u56e0\u5386\u53f2\u539f\u56e0\u800c\u9057\u7559\u4e0b\u6765\u7684\u4ec5\u6d4f\u89c8\u5668\u7279\u6027\u3002\u56e0\u6b64\uff0c\u7406\u8bba\u4e0a\u975e\u6d4f\u89c8\u5668\u73af\u5883\u53ef\u80fd\u65e0\u6cd5\u652f\u6301\u00a0<code>substr<\/code>\uff0c\u4f46\u5b9e\u9645\u4e0a\u5b83\u5728\u522b\u7684\u5730\u65b9\u4e5f\u90fd\u80fd\u7528\u3002<br \/>\n\u76f8\u8f83\u4e8e\u5176\u4ed6\u4e24\u4e2a\u53d8\u4f53\uff0c<code>slice<\/code>\u00a0\u7a0d\u5fae\u7075\u6d3b\u4e00\u4e9b\uff0c\u5b83\u5141\u8bb8\u4ee5\u8d1f\u503c\u4f5c\u4e3a\u53c2\u6570\u5e76\u4e14\u5199\u6cd5\u66f4\u7b80\u77ed\u3002\u56e0\u6b64\u4ec5\u4ec5\u8bb0\u4f4f\u8fd9\u4e09\u79cd\u65b9\u6cd5\u4e2d\u7684\u00a0<code>slice<\/code>\u00a0\u5c31\u8db3\u591f\u4e86\u3002<\/p>\n<\/blockquote>\n<h4>\u6bd4\u8f83\u5b57\u7b26\u4e32<\/h4>\n<p>\u6b63\u5982\u6211\u4eec\u4ece\u00a0<a href=\"https:\/\/zh.javascript.info\/comparison\">\u503c\u7684\u6bd4\u8f83<\/a>\u00a0\u4e00\u7ae0\u4e2d\u4e86\u89e3\u5230\u7684\uff0c\u5b57\u7b26\u4e32\u6309\u5b57\u6bcd\u987a\u5e8f\u9010\u5b57\u6bd4\u8f83\u3002<br \/>\n\u4e0d\u8fc7\uff0c\u4e5f\u6709\u4e00\u4e9b\u5947\u602a\u7684\u5730\u65b9\u3002<\/p>\n<ol>\n<li>\u5c0f\u5199\u5b57\u6bcd\u603b\u662f\u5927\u4e8e\u5927\u5199\u5b57\u6bcd<\/li>\n<li>\u5e26\u53d8\u97f3\u7b26\u53f7\u7684\u5b57\u6bcd\u5b58\u5728\u201c\u4e71\u5e8f\u201d\u7684\u60c5\u51b5\uff1a<\/li>\n<\/ol>\n<pre><code class=\"language-js\">alert( '\u00d6sterreich' &gt; 'Zealand' ); \/\/ true\n<\/code><\/pre>\n<p>\u5982\u679c\u6211\u4eec\u5bf9\u8fd9\u4e9b\u56fd\u5bb6\u540d\u8fdb\u884c\u6392\u5e8f\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4\u5947\u602a\u7684\u7ed3\u679c\u3002\u901a\u5e38\uff0c\u4eba\u4eec\u4f1a\u671f\u671b\u00a0<code>Zealand<\/code>\u00a0\u5728\u540d\u5355\u4e2d\u7684\u00a0<code>\u00d6sterreich<\/code>\u00a0\u4e4b\u540e\u51fa\u73b0\u3002<br \/>\n\u6240\u6709\u7684\u5b57\u7b26\u4e32\u90fd\u4f7f\u7528\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/UTF-16\">UTF-16<\/a>\u00a0\u7f16\u7801\u3002\u5373\uff1a\u6bcf\u4e2a\u5b57\u7b26\u90fd\u6709\u5bf9\u5e94\u7684\u6570\u5b57\u4ee3\u7801\u3002\u6709\u7279\u6b8a\u7684\u65b9\u6cd5\u53ef\u4ee5\u83b7\u53d6\u4ee3\u7801\u8868\u793a\u7684\u5b57\u7b26\uff0c\u4ee5\u53ca\u5b57\u7b26\u5bf9\u5e94\u7684\u4ee3\u7801\u3002<br \/>\n<code>str.codePointAt(pos)<\/code><br \/>\n\u8fd4\u56de\u5728\u00a0<code>pos<\/code>\u00a0\u4f4d\u7f6e\u7684\u5b57\u7b26\u4ee3\u7801<\/p>\n<pre><code class=\"language-js\">\/\/ \u4e0d\u540c\u7684\u5b57\u6bcd\u6709\u4e0d\u540c\u7684\u4ee3\u7801\nalert( &quot;z&quot;.codePointAt(0) ); \/\/ 122\nalert( &quot;Z&quot;.codePointAt(0) ); \/\/ 90\n<\/code><\/pre>\n<p><code>String.fromCodePoint(code)<\/code><br \/>\n\u901a\u8fc7\u6570\u5b57\u00a0<code>code<\/code>\u00a0\u521b\u5efa\u5b57\u7b26<\/p>\n<pre><code class=\"language-js\">alert( String.fromCodePoint(90) ); \/\/ Z\n\n\/\/ \u6211\u4eec\u8fd8\u53ef\u4ee5\u7528 \\u \u540e\u8ddf\u5341\u516d\u8fdb\u5236\u4ee3\u7801\uff0c\u901a\u8fc7\u8fd9\u4e9b\u4ee3\u7801\u6dfb\u52a0 Unicode \u5b57\u7b26\n\/\/ \u5728\u5341\u516d\u8fdb\u5236\u7cfb\u7edf\u4e2d 90 \u4e3a 5a\nalert( '\\u005a' ); \/\/ Z\n\n\/\/ \u73b0\u5728\u6211\u4eec\u770b\u4e00\u4e0b\u4ee3\u7801\u4e3a\u00a0`65..220`\u00a0\u7684\u5b57\u7b26\uff08\u62c9\u4e01\u5b57\u6bcd\u548c\u4e00\u4e9b\u989d\u5916\u7684\u5b57\u7b26\uff09\nlet str = '';\nfor (let i = 65; i &lt;= 220; i++) {\n  str += String.fromCodePoint(i);\n}\nalert( str );\n\/\/ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u0080\u0081\u0082\u0083\u0084\n\/\/ \u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\n<\/code><\/pre>\n<p>\u770b\u5230\u6ca1\uff1f\u5148\u662f\u5927\u5199\u5b57\u7b26\uff0c\u7136\u540e\u662f\u4e00\u4e9b\u7279\u6b8a\u5b57\u7b26\uff0c\u7136\u540e\u662f\u5c0f\u5199\u5b57\u7b26\uff0c\u800c\u00a0<code>\u00d6<\/code>\u00a0\u51e0\u4e4e\u662f\u6700\u540e\u8f93\u51fa\u3002<br \/>\n\u73b0\u5728\u5f88\u660e\u663e\u4e3a\u4ec0\u4e48\u00a0<code>a &gt; Z<\/code>\u3002<br \/>\n\u5b57\u7b26\u901a\u8fc7\u6570\u5b57\u4ee3\u7801\u8fdb\u884c\u6bd4\u8f83\u3002\u8d8a\u5927\u7684\u4ee3\u7801\u610f\u5473\u7740\u5b57\u7b26\u8d8a\u5927\u3002<code>a<\/code>\uff0897\uff09\u7684\u4ee3\u7801\u5927\u4e8e\u00a0<code>Z<\/code>\uff0890\uff09\u7684\u4ee3\u7801\u3002<\/p>\n<ul>\n<li>\u6240\u6709\u5c0f\u5199\u5b57\u6bcd\u8ffd\u968f\u5728\u5927\u5199\u5b57\u6bcd\u4e4b\u540e\uff0c\u56e0\u4e3a\u5b83\u4eec\u7684\u4ee3\u7801\u66f4\u5927\u3002<\/li>\n<li>\u4e00\u4e9b\u50cf\u00a0<code>\u00d6<\/code>\u00a0\u7684\u5b57\u6bcd\u4e0e\u4e3b\u8981\u5b57\u6bcd\u8868\u4e0d\u540c\u3002\u8fd9\u91cc\uff0c\u5b83\u7684\u4ee3\u7801\u6bd4\u4efb\u4f55\u4ece\u00a0<code>a<\/code>\u00a0\u5230\u00a0<code>z<\/code>\u00a0\u7684\u4ee3\u7801\u90fd\u8981\u5927\u3002<\/li>\n<\/ul>\n<h5>\u6b63\u786e\u7684\u6bd4\u8f83<\/h5>\n<p>\u6267\u884c\u5b57\u7b26\u4e32\u6bd4\u8f83\u7684\u201c\u6b63\u786e\u201d\u7b97\u6cd5\u6bd4\u770b\u8d77\u6765\u66f4\u590d\u6742\uff0c\u56e0\u4e3a\u4e0d\u540c\u8bed\u8a00\u7684\u5b57\u6bcd\u90fd\u4e0d\u76f8\u540c\u3002<br \/>\n\u56e0\u6b64\u6d4f\u89c8\u5668\u9700\u8981\u77e5\u9053\u8981\u6bd4\u8f83\u7684\u8bed\u8a00\u3002<br \/>\n\u5e78\u8fd0\u7684\u662f\uff0c\u6240\u6709\u73b0\u4ee3\u6d4f\u89c8\u5668\uff08IE10- \u9700\u8981\u989d\u5916\u7684\u5e93\u00a0<a href=\"https:\/\/github.com\/andyearnshaw\/Intl.js\/\">Intl.JS<\/a>) \u90fd\u652f\u6301\u56fd\u9645\u5316\u6807\u51c6\u00a0<a href=\"http:\/\/www.ecma-international.org\/ecma-402\/1.0\/ECMA-402.pdf\">ECMA-402<\/a>\u3002<br \/>\n\u5b83\u63d0\u4f9b\u4e86\u4e00\u79cd\u7279\u6b8a\u7684\u65b9\u6cd5\u6765\u6bd4\u8f83\u4e0d\u540c\u8bed\u8a00\u7684\u5b57\u7b26\u4e32\uff0c\u9075\u5faa\u5b83\u4eec\u7684\u89c4\u5219\u3002<br \/>\n\u8c03\u7528\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/localeCompare\">str.localeCompare(str2)<\/a>\u00a0\u4f1a\u6839\u636e\u8bed\u8a00\u89c4\u5219\u8fd4\u56de\u4e00\u4e2a\u6574\u6570\uff0c\u8fd9\u4e2a\u6574\u6570\u80fd\u6307\u793a\u5b57\u7b26\u4e32\u00a0<code>str<\/code>\u00a0\u5728\u6392\u5e8f\u987a\u5e8f\u4e2d\u6392\u5728\u5b57\u7b26\u4e32\u00a0<code>str2<\/code>\u00a0\u524d\u9762\u3001\u540e\u9762\u3001\u8fd8\u662f\u76f8\u540c\uff1a<\/p>\n<ul>\n<li>\u5982\u679c\u00a0<code>str<\/code>\u00a0\u6392\u5728\u00a0<code>str2<\/code>\u00a0\u524d\u9762\uff0c\u5219\u8fd4\u56de\u8d1f\u6570\u3002<\/li>\n<li>\u5982\u679c\u00a0<code>str<\/code>\u00a0\u6392\u5728\u00a0<code>str2<\/code>\u00a0\u540e\u9762\uff0c\u5219\u8fd4\u56de\u6b63\u6570\u3002<\/li>\n<li>\u5982\u679c\u5b83\u4eec\u5728\u76f8\u540c\u4f4d\u7f6e\uff0c\u5219\u8fd4\u56de\u00a0<code>0<\/code>\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">alert( '\u00d6sterreich'.localeCompare('Zealand') ); \/\/ -1\n<\/code><\/pre>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u5b9e\u9645\u4e0a\u5728 \u6587\u6863 \u4e2d\u6307\u5b9a\u4e86\u4e24\u4e2a\u989d\u5916\u7684\u53c2\u6570\uff0c\u8fd9\u4e24\u4e2a\u53c2\u6570\u5141\u8bb8\u5b83\u6307\u5b9a\u8bed\u8a00\uff08\u9ed8\u8ba4\u8bed\u8a00\u4ece\u73af\u5883\u4e2d\u83b7\u53d6\uff0c\u5b57\u7b26\u987a\u5e8f\u89c6\u8bed\u8a00\u4e0d\u540c\u800c\u4e0d\u540c\uff09\u5e76\u8bbe\u7f6e\u8bf8\u5982\u533a\u5206\u5927\u5c0f\u5199\uff0c\u6216\u5e94\u8be5\u5c06 &quot;a&quot; \u548c &quot;a\u0301&quot; \u4f5c\u76f8\u540c\u5904\u7406\u7b49\u9644\u52a0\u7684\u89c4\u5219\u3002<\/p>\n<h4>\u5185\u90e8\uff0cunicode<\/h4>\n<p>\u8fdb\u9636\u5185\u5bb9<br \/>\n\u8fd9\u90e8\u5206\u4f1a\u6df1\u5165\u5b57\u7b26\u4e32\u5185\u90e8\u3002\u5982\u679c\u4f60\u8ba1\u5212\u5904\u7406 emoji\u3001\u7f55\u89c1\u7684\u6570\u5b66\u6216\u8c61\u5f62\u6587\u5b57\u6216\u5176\u4ed6\u7f55\u89c1\u7684\u7b26\u53f7\uff0c\u8fd9\u4e9b\u77e5\u8bc6\u4f1a\u5bf9\u4f60\u6709\u7528\u3002<\/p>\n<h5>\u4ee3\u7406\u5bf9<\/h5>\n<p>\u6240\u6709\u5e38\u7528\u7684\u5b57\u7b26\u90fd\u662f\u4e00\u4e2a 2 \u5b57\u8282\u7684\u4ee3\u7801\u3002\u5927\u591a\u6570\u6b27\u6d32\u8bed\u8a00\uff0c\u6570\u5b57\u751a\u81f3\u5927\u591a\u6570\u8c61\u5f62\u6587\u5b57\u4e2d\u7684\u5b57\u6bcd\u90fd\u6709 2 \u5b57\u8282\u7684\u8868\u793a\u5f62\u5f0f\u3002<br \/>\n\u4f46 2 \u5b57\u8282\u53ea\u5141\u8bb8 65536 \u4e2a\u7ec4\u5408\uff0c\u8fd9\u5bf9\u4e8e\u8868\u793a\u6bcf\u4e2a\u53ef\u80fd\u7684\u7b26\u53f7\u662f\u4e0d\u591f\u7684\u3002\u6240\u4ee5\u7a00\u6709\u7684\u7b26\u53f7\u88ab\u79f0\u4e3a\u201c\u4ee3\u7406\u5bf9\u201d\u7684\u4e00\u5bf9 2 \u5b57\u8282\u7684\u7b26\u53f7\u7f16\u7801\u3002<br \/>\n\u8fd9\u4e9b\u7b26\u53f7\u7684\u957f\u5ea6\u662f\u00a0<code>2<\/code><\/p>\n<pre><code class=\"language-js\">alert( '\ud835\udcb3'.length ); \/\/ 2\uff0c\u5927\u5199\u6570\u5b66\u7b26\u53f7 X\nalert( '\ud83d\ude02'.length ); \/\/ 2\uff0c\u7b11\u54ed\u8868\u60c5\nalert( '\ud867\uddf6'.length ); \/\/ 2\uff0c\u7f55\u89c1\u7684\u4e2d\u56fd\u8c61\u5f62\u6587\u5b57\n<\/code><\/pre>\n<p>\u6ce8\u610f\uff0c\u4ee3\u7406\u5bf9\u5728 JavaScript \u88ab\u521b\u5efa\u65f6\u5e76\u4e0d\u5b58\u5728\uff0c\u56e0\u6b64\u65e0\u6cd5\u88ab\u7f16\u7a0b\u8bed\u8a00\u6b63\u786e\u5904\u7406\uff01<br \/>\n\u6211\u4eec\u5b9e\u9645\u4e0a\u5728\u4e0a\u9762\u7684\u6bcf\u4e2a\u5b57\u7b26\u4e32\u4e2d\u90fd\u6709\u4e00\u4e2a\u7b26\u53f7\uff0c\u4f46\u00a0<code>length<\/code>\u00a0\u663e\u793a\u957f\u5ea6\u4e3a\u00a0<code>2<\/code>\u3002<br \/>\n<code>String.fromCodePoint<\/code>\u00a0\u548c\u00a0<code>str.codePointAt<\/code>\u00a0\u662f\u51e0\u79cd\u5904\u7406\u4ee3\u7406\u5bf9\u7684\u5c11\u6570\u65b9\u6cd5\u3002\u5b83\u4eec\u6700\u8fd1\u624d\u51fa\u73b0\u5728\u7f16\u7a0b\u8bed\u8a00\u4e2d\u3002\u5728\u5b83\u4eec\u4e4b\u524d\uff0c\u53ea\u6709\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/fromCharCode\">String.fromCharCode<\/a>\u00a0\u548c\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/charCodeAt\">str.charCodeAt<\/a>\u3002\u8fd9\u4e9b\u65b9\u6cd5\u5b9e\u9645\u4e0a\u4e0e\u00a0<code>fromCodePoint\/codePointAt<\/code>\u00a0\u76f8\u540c\uff0c\u4f46\u662f\u4e0d\u9002\u7528\u4e8e\u4ee3\u7406\u5bf9\u3002<br \/>\n\u83b7\u53d6\u7b26\u53f7\u53ef\u80fd\u4f1a\u975e\u5e38\u9ebb\u70e6\uff0c\u56e0\u4e3a\u4ee3\u7406\u5bf9\u88ab\u8ba4\u4e3a\u662f\u4e24\u4e2a\u5b57\u7b26<\/p>\n<pre><code class=\"language-js\">alert( '\ud835\udcb3'[0] ); \/\/ \u5947\u602a\u7684\u7b26\u53f7\u2026\u2026\nalert( '\ud835\udcb3'[1] ); \/\/ \u2026\u2026\u4ee3\u7406\u5bf9\u7684\u4e00\u5757\n<\/code><\/pre>\n<p>\u8bf7\u6ce8\u610f\uff0c\u4ee3\u7406\u5bf9\u7684\u5404\u90e8\u5206\u6ca1\u6709\u4efb\u4f55\u610f\u4e49\u3002\u56e0\u6b64\uff0c\u4e0a\u8ff0\u793a\u4f8b\u4e2d\u7684 alert \u663e\u793a\u7684\u5b9e\u9645\u4e0a\u662f\u5783\u573e\u4fe1\u606f\u3002<br \/>\n\u6280\u672f\u89d2\u5ea6\u6765\u8bf4\uff0c\u4ee3\u7406\u5bf9\u4e5f\u662f\u53ef\u4ee5\u901a\u8fc7\u5b83\u4eec\u7684\u4ee3\u7801\u68c0\u6d4b\u5230\u7684\uff1a\u5982\u679c\u4e00\u4e2a\u5b57\u7b26\u7684\u4ee3\u7801\u5728\u00a0<code>0xd800..0xdbff<\/code>\u00a0\u8303\u56f4\u5185\uff0c\u90a3\u4e48\u5b83\u662f\u4ee3\u7406\u5bf9\u7684\u7b2c\u4e00\u90e8\u5206\u3002\u4e0b\u4e00\u4e2a\u5b57\u7b26\uff08\u7b2c\u4e8c\u90e8\u5206\uff09\u5fc5\u987b\u5728\u00a0<code>0xdc00..0xdfff<\/code>\u00a0\u8303\u56f4\u4e2d\u3002\u8fd9\u4e9b\u8303\u56f4\u662f\u6309\u7167\u6807\u51c6\u4e13\u95e8\u4e3a\u4ee3\u7406\u5bf9\u4fdd\u7559\u7684\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ charCodeAt \u4e0d\u7406\u89e3\u4ee3\u7406\u5bf9\uff0c\u6240\u4ee5\u5b83\u7ed9\u51fa\u4e86\u4ee3\u7406\u5bf9\u7684\u4ee3\u7801\n\nalert( '\ud835\udcb3'.charCodeAt(0).toString(16) ); \/\/ d835\uff0c\u5728 0xd800 \u548c 0xdbff \u4e4b\u95f4\nalert( '\ud835\udcb3'.charCodeAt(1).toString(16) ); \/\/ dcb3, \u5728 0xdc00 \u548c 0xdfff \u4e4b\u95f4\n<\/code><\/pre>\n<p>\u672c\u7ae0\u8282\u540e\u9762\u7684\u00a0<a href=\"https:\/\/zh.javascript.info\/iterable\">Iterable object\uff08\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff09<\/a>\u00a0\u7ae0\u8282\u4e2d\uff0c\u4f60\u53ef\u4ee5\u627e\u5230\u66f4\u591a\u5904\u7406\u4ee3\u7406\u5bf9\u7684\u65b9\u6cd5\u3002\u53ef\u80fd\u6709\u4e13\u95e8\u7684\u5e93\uff0c\u8fd9\u91cc\u6ca1\u6709\u4ec0\u4e48\u8db3\u591f\u597d\u7684\u5efa\u8bae\u4e86\u3002<\/p>\n<h5>\u53d8\u97f3\u7b26\u53f7\u4e0e\u89c4\u8303\u5316<\/h5>\n<p>\u5728\u8bb8\u591a\u8bed\u8a00\u4e2d\uff0c\u90fd\u6709\u4e00\u4e9b\u7531\u57fa\u672c\u5b57\u7b26\u7ec4\u6210\u7684\u7b26\u53f7\uff0c\u5728\u5176\u4e0a\u65b9\/\u4e0b\u65b9\u6709\u4e00\u4e2a\u6807\u8bb0\u3002<br \/>\n\u4f8b\u5982\uff0c\u5b57\u6bcd\u00a0<code>a<\/code>\u00a0\u53ef\u4ee5\u662f\u00a0<code>\u00e0\u00e1\u00e2\u00e4\u00e3\u00e5\u0101<\/code>\u00a0\u7684\u57fa\u672c\u5b57\u7b26\u3002\u6700\u5e38\u89c1\u7684\u201c\u590d\u5408\u201d\u5b57\u7b26\u5728 UTF-16 \u8868\u4e2d\u90fd\u6709\u81ea\u5df1\u7684\u4ee3\u7801\u3002\u4f46\u4e0d\u662f\u5168\u90e8\uff0c\u56e0\u4e3a\u53ef\u80fd\u7684\u7ec4\u5408\u592a\u591a\u3002<br \/>\n\u4e3a\u4e86\u652f\u6301\u4efb\u610f\u7ec4\u5408\uff0cUTF-16 \u5141\u8bb8\u6211\u4eec\u4f7f\u7528\u591a\u4e2a Unicode \u5b57\u7b26\uff1a\u57fa\u672c\u5b57\u7b26\u7d27\u8ddf\u201c\u88c5\u9970\u201d\u5b83\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u201c\u6807\u8bb0\u201d\u5b57\u7b26\u3002<br \/>\n\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u00a0<code>S<\/code>\u00a0\u540e\u8ddf\u6709\u7279\u6b8a\u7684 \u201cdot above\u201d \u5b57\u7b26\uff08\u4ee3\u7801\u00a0<code>\\u0307<\/code>\uff09\uff0c\u5219\u663e\u793a S\u0307\u3002<\/p>\n<pre><code class=\"language-js\">alert( 'S\\u0307' ); \/\/ S\u0307\n<\/code><\/pre>\n<p>\u5982\u679c\u6211\u4eec\u9700\u8981\u5728\u5b57\u6bcd\u4e0a\u65b9\uff08\u6216\u4e0b\u65b9\uff09\u6dfb\u52a0\u989d\u5916\u7684\u6807\u8bb0 \u2014\u2014 \u6ca1\u95ee\u9898\uff0c\u53ea\u9700\u8981\u6dfb\u52a0\u5fc5\u8981\u7684\u6807\u8bb0\u5b57\u7b26\u5373\u53ef\u3002<br \/>\n\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u8ffd\u52a0\u4e00\u4e2a\u5b57\u7b26 \u201cdot below\u201d\uff08\u4ee3\u7801\u00a0<code>\\u0323<\/code>\uff09\uff0c\u90a3\u4e48\u6211\u4eec\u5c06\u5f97\u5230\u201cS \u4e0a\u9762\u548c\u4e0b\u9762\u90fd\u6709\u70b9\u201d\u7684\u5b57\u7b26\uff1a<code>S\u0307\u0323<\/code>\u3002<\/p>\n<pre><code class=\"language-js\">alert( 'S\\u0307\\u0323' ); \/\/ S\u0307\u0323\n<\/code><\/pre>\n<p>\u8fd9\u5728\u63d0\u4f9b\u826f\u597d\u7075\u6d3b\u6027\u7684\u540c\u65f6\uff0c\u4e5f\u5b58\u5728\u4e00\u4e2a\u6709\u8da3\u7684\u95ee\u9898\uff1a\u4e24\u4e2a\u89c6\u89c9\u4e0a\u770b\u8d77\u6765\u76f8\u540c\u7684\u5b57\u7b26\uff0c\u53ef\u4ee5\u7528\u4e0d\u540c\u7684 Unicode \u7ec4\u5408\u8868\u793a\u3002<\/p>\n<pre><code class=\"language-js\">let s1 = 'S\\u0307\\u0323'; \/\/ S\u0307\u0323\uff0cS + \u4e0a\u70b9 + \u4e0b\u70b9\nlet s2 = 'S\\u0323\\u0307'; \/\/ S\u0323\u0307\uff0cS + \u4e0b\u70b9 + \u4e0a\u70b9\n\nalert( `s1: ${s1}, s2: ${s2}` );\n\nalert( s1 == s2 ); \/\/ false\uff0c\u5c3d\u7ba1\u5b57\u7b26\u770b\u8d77\u6765\u76f8\u540c\uff08?!\uff09\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u6709\u4e00\u4e2a \u201cUnicode \u89c4\u8303\u5316\u201d\u7b97\u6cd5\uff0c\u5b83\u5c06\u6bcf\u4e2a\u5b57\u7b26\u4e32\u90fd\u8f6c\u5316\u6210\u5355\u4e2a\u201c\u901a\u7528\u201d\u683c\u5f0f\u3002<br \/>\n\u5b83\u7531\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/normalize\">str.normalize()<\/a>\u00a0\u5b9e\u73b0\u3002<\/p>\n<pre><code class=\"language-js\">alert( &quot;S\\u0307\\u0323&quot;.normalize() == &quot;S\\u0323\\u0307&quot;.normalize() ); \/\/ true\n<\/code><\/pre>\n<p>\u6709\u8da3\u7684\u662f\uff0c\u5728\u5b9e\u9645\u60c5\u51b5\u4e0b\uff0c<code>normalize()<\/code>\u00a0\u5b9e\u9645\u4e0a\u5c06\u4e00\u4e2a\u7531 3 \u4e2a\u5b57\u7b26\u7ec4\u6210\u7684\u5e8f\u5217\u5408\u5e76\u4e3a\u4e00\u4e2a\uff1a<code>\\u1e68<\/code>\uff08S \u6709\u4e24\u4e2a\u70b9\uff09\u3002<\/p>\n<pre><code class=\"language-js\">alert( &quot;S\\u0307\\u0323&quot;.normalize().length ); \/\/ 1\n\nalert( &quot;S\\u0307\\u0323&quot;.normalize() == &quot;\\u1e68&quot; ); \/\/ true\n<\/code><\/pre>\n<p>\u4e8b\u5b9e\u4e0a\uff0c\u60c5\u51b5\u5e76\u975e\u603b\u662f\u5982\u6b64\uff0c\u56e0\u4e3a\u7b26\u53f7\u00a0<code>S\u0307\u0323<\/code>\u00a0\u662f\u201c\u5e38\u7528\u201d\u7684\uff0c\u6240\u4ee5 UTF-16 \u521b\u5efa\u8005\u628a\u5b83\u5305\u542b\u5728\u4e3b\u8868\u4e2d\u5e76\u7ed9\u5b83\u4e86\u5bf9\u5e94\u7684\u4ee3\u7801\u3002<br \/>\n\u5982\u679c\u4f60\u60f3\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u89c4\u8303\u5316\u89c4\u5219\u548c\u53d8\u4f53\u7684\u4fe1\u606f \u2014\u2014 \u5b83\u4eec\u5728 Unicode \u6807\u51c6\u9644\u5f55\u4e2d\u6709\u8be6\u7ec6\u63cf\u8ff0\uff1a<a href=\"http:\/\/www.unicode.org\/reports\/tr15\/\">Unicode \u89c4\u8303\u5316\u5f62\u5f0f<\/a>\uff0c\u4f46\u5bf9\u4e8e\u5927\u591a\u6570\u5b9e\u9645\u76ee\u7684\u6765\u8bf4\uff0c\u672c\u6587\u7684\u5185\u5bb9\u5c31\u5df2\u7ecf\u8db3\u591f\u4e86\u3002<\/p>\n<h3>\u6570\u7ec4<\/h3>\n<p>\u5bf9\u8c61\u5141\u8bb8\u5b58\u50a8\u952e\u503c\u96c6\u5408\uff0c\u8fd9\u5f88\u597d\u3002<br \/>\n\u4f46\u5f88\u591a\u65f6\u5019\u6211\u4eec\u53d1\u73b0\u8fd8\u9700\u8981\u00a0<strong>\u6709\u5e8f\u96c6\u5408<\/strong>\uff0c\u91cc\u9762\u7684\u5143\u7d20\u90fd\u662f\u6309\u987a\u5e8f\u6392\u5217\u7684\u3002<br \/>\n\u8fd9\u91cc\u4f7f\u7528\u5bf9\u8c61\u5c31\u4e0d\u662f\u5f88\u65b9\u4fbf\u4e86\uff0c\u56e0\u4e3a\u5bf9\u8c61\u4e0d\u80fd\u63d0\u4f9b\u80fd\u591f\u7ba1\u7406\u5143\u7d20\u987a\u5e8f\u7684\u65b9\u6cd5\u3002\u6211\u4eec\u4e0d\u80fd\u5728\u5df2\u6709\u7684\u5143\u7d20\u201c\u4e4b\u95f4\u201d\u63d2\u5165\u4e00\u4e2a\u65b0\u7684\u5c5e\u6027\u3002\u8fd9\u79cd\u573a\u666f\u4e0b\u5bf9\u8c61\u5c31\u4e0d\u592a\u9002\u7528\u4e86\u3002<br \/>\n\u8fd9\u65f6\u4e00\u4e2a\u7279\u6b8a\u7684\u6570\u636e\u7ed3\u6784\u6570\u7ec4\uff08<code>Array<\/code>\uff09\u5c31\u6d3e\u4e0a\u7528\u573a\u4e86\uff0c\u5b83\u80fd\u5b58\u50a8\u6709\u5e8f\u7684\u96c6\u5408\u3002<\/p>\n<h4>\u58f0\u660e<\/h4>\n<pre><code class=\"language-js\">let arr = new Array();\nlet arr = [];\n\nlet arr = [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;];\narr[0]; \/\/ a\narr.length; \/\/ 3\narr[3] = &quot;d&quot;;\narr.length; \/\/ 4\n\n\/\/\u53ef\u4ee5\u5b58\u50a8\u4efb\u610f\u7c7b\u578b\n\/\/ \u6df7\u5408\u503c\nlet arr = [ \n\t'Apple', \n\t{ name: 'John' }, \n\ttrue, \n\tfunction() { alert('hello'); } , \/\/\u53ef\u4ee5\u4ee5\u9017\u53f7\u7ed3\u5c3e\n\t];\n\n\/\/ \u83b7\u53d6\u7d22\u5f15\u4e3a 1 \u7684\u5bf9\u8c61\u7136\u540e\u663e\u793a\u5b83\u7684 name\nalert( arr[1].name ); \/\/ John\n\n\/\/ \u83b7\u53d6\u7d22\u5f15\u4e3a 3 \u7684\u51fd\u6570\u5e76\u6267\u884c\narr[3](); \/\/ hello\n<\/code><\/pre>\n<h4>at \u83b7\u53d6\u6700\u540e\u4e00\u4e2a\u5143\u7d20<\/h4>\n<p>\u5047\u8bbe\u6211\u4eec\u60f3\u8981\u6570\u7ec4\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u3002<br \/>\n\u4e00\u4e9b\u7f16\u7a0b\u8bed\u8a00\u5141\u8bb8\u6211\u4eec\u4f7f\u7528\u8d1f\u6570\u7d22\u5f15\u6765\u5b9e\u73b0\u8fd9\u4e00\u70b9\uff0c\u4f8b\u5982\u00a0<code>fruits[-1]<\/code>\u3002<br \/>\n\u4f46\u5728 JavaScript \u4e2d\u8fd9\u884c\u4e0d\u901a\u3002\u7ed3\u679c\u5c06\u662f\u00a0<code>undefined<\/code>\uff0c\u56e0\u4e3a\u65b9\u62ec\u53f7\u4e2d\u7684\u7d22\u5f15\u662f\u88ab\u6309\u7167\u5176\u5b57\u9762\u610f\u601d\u5904\u7406\u7684\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u663e\u5f0f\u5730\u8ba1\u7b97\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u7684\u7d22\u5f15\uff0c\u7136\u540e\u8bbf\u95ee\u5b83\uff1a<code>fruits[fruits.length - 1]<\/code>\u3002<br \/>\n\u6709\u70b9\u9ebb\u70e6\uff0c\u4e0d\u662f\u5417\uff1f\u6211\u4eec\u9700\u8981\u5199\u4e24\u6b21\u53d8\u91cf\u540d\u3002<br \/>\n\u5e78\u8fd0\u7684\u662f\uff0c\u8fd9\u91cc\u6709\u4e00\u4e2a\u66f4\u7b80\u77ed\u7684\u8bed\u6cd5\u00a0<code>fruits.at(-1)<\/code><br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c<code>arr.at(i)<\/code>\uff1a<\/p>\n<ul>\n<li>\u5982\u679c\u00a0<code>i &gt;= 0<\/code>\uff0c\u5219\u4e0e\u00a0<code>arr[i]<\/code>\u00a0\u5b8c\u5168\u76f8\u540c\u3002<\/li>\n<li>\u5bf9\u4e8e\u00a0<code>i<\/code>\u00a0\u4e3a\u8d1f\u6570\u7684\u60c5\u51b5\uff0c\u5b83\u5219\u4ece\u6570\u7ec4\u7684\u5c3e\u90e8\u5411\u524d\u6570\u3002<\/li>\n<\/ul>\n<h4>pop\/push,shift\/unshift<\/h4>\n<p>\u961f\u5217\uff08queue\uff09\u662f\u6700\u5e38\u89c1\u7684\u4f7f\u7528\u6570\u7ec4\u7684\u65b9\u6cd5\u4e4b\u4e00\u3002\u5728\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\uff0c\u8fd9\u8868\u793a\u652f\u6301\u4e24\u4e2a\u64cd\u4f5c\u7684\u4e00\u4e2a\u6709\u5e8f\u5143\u7d20\u7684\u96c6\u5408\uff1a<\/p>\n<ul>\n<li><code>push<\/code>\u00a0\u5728\u672b\u7aef\u6dfb\u52a0\u4e00\u4e2a\u5143\u7d20.<\/li>\n<li><code>shift<\/code>\u00a0\u53d6\u51fa\u961f\u5217\u9996\u7aef\u7684\u4e00\u4e2a\u5143\u7d20\uff0c\u6574\u4e2a\u961f\u5217\u5f80\u524d\u79fb\uff0c\u8fd9\u6837\u539f\u5148\u6392\u7b2c\u4e8c\u7684\u5143\u7d20\u73b0\u5728\u6392\u5728\u4e86\u7b2c\u4e00\u3002<br \/>\n\u6808\uff08stack\uff09\u5b83\u652f\u6301\u4e24\u79cd\u64cd\u4f5c\uff1a<\/li>\n<li><code>push<\/code>\u00a0\u5728\u672b\u7aef\u6dfb\u52a0\u4e00\u4e2a\u5143\u7d20.<\/li>\n<li><code>pop<\/code>\u00a0\u4ece\u672b\u7aef\u53d6\u51fa\u4e00\u4e2a\u5143\u7d20.<br \/>\n\u5bf9\u4e8e\u6808\u6765\u8bf4\uff0c\u6700\u540e\u653e\u8fdb\u53bb\u7684\u5185\u5bb9\u662f\u6700\u5148\u63a5\u6536\u7684\uff0c\u4e5f\u53eb\u505a LIFO\uff08Last-In-First-Out\uff09\uff0c\u5373\u540e\u8fdb\u5148\u51fa\u6cd5\u5219\u3002\u800c\u4e0e\u961f\u5217\u76f8\u5bf9\u5e94\u7684\u53eb\u505a FIFO\uff08First-In-First-Out\uff09\uff0c\u5373\u5148\u8fdb\u5148\u51fa\u3002<br \/>\nJavaScript \u4e2d\u7684\u6570\u7ec4\u65e2\u53ef\u4ee5\u7528\u4f5c\u961f\u5217\uff0c\u4e5f\u53ef\u4ee5\u7528\u4f5c\u6808\u3002\u5b83\u4eec\u5141\u8bb8\u4f60\u4ece\u9996\u7aef\/\u672b\u7aef\u6765\u6dfb\u52a0\/\u5220\u9664\u5143\u7d20\u3002<br \/>\n\u8fd9\u5728\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\uff0c\u5141\u8bb8\u8fd9\u6837\u7684\u64cd\u4f5c\u7684\u6570\u636e\u7ed3\u6784\u88ab\u79f0\u4e3a\u53cc\u7aef\u961f\u5217\uff08deque\uff09\u3002<\/li>\n<\/ul>\n<h5>\u672b\u7aef\u65b9\u6cd5<\/h5>\n<p><code>pop<\/code><br \/>\n\u53d6\u51fa\u5e76\u8fd4\u56de\u6570\u7ec4\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\uff0c\u4e0e\u67d0\u4e9b\u8bed\u8a00pop\u53ea\u5220\u9664\u5143\u7d20\u4e0d\u540c\uff0cpop\u4f1a\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u5143\u7d20\uff0c\u7136\u540e\u53d6\u51fa<br \/>\n<code>fruits.pop()<\/code>\u00a0\u548c\u00a0<code>fruits.at(-1)<\/code>\u00a0\u90fd\u8fd4\u56de\u6570\u7ec4\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\uff0c\u4f46\u00a0<code>fruits.pop()<\/code>\u00a0\u540c\u65f6\u4e5f\u5220\u9664\u4e86\u6570\u7ec4\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\uff0c\u8fdb\u800c\u4fee\u6539\u4e86\u539f\u6570\u7ec4\u3002<br \/>\n<code>push<\/code><br \/>\n\u5728\u6570\u7ec4\u672b\u7aef\u6dfb\u52a0\u5143\u7d20\uff0c\u53ef\u4ee5\u4e00\u6b21\u6dfb\u52a0\u591a\u4e2a\u5143\u7d20<br \/>\n\u8c03\u7528\u00a0<code>fruits.push(...)<\/code>\u00a0\u4e0e\u00a0<code>fruits[fruits.length] = ...<\/code>\u00a0\u662f\u4e00\u6837\u7684\u3002<\/p>\n<h5>\u9996\u7aef\u65b9\u6cd5<\/h5>\n<p><code>shift<\/code><br \/>\n\u53d6\u51fa\u6570\u7ec4\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u5e76\u8fd4\u56de\u5b83<br \/>\n<code>unshift<\/code><br \/>\n\u5728\u6570\u7ec4\u7684\u9996\u7aef\u6dfb\u52a0\u5143\u7d20\uff0c\u53ef\u4ee5\u4e00\u6b21\u6dfb\u52a0\u591a\u4e2a\u5143\u7d20<\/p>\n<h4>\u5185\u90e8<\/h4>\n<p>\u6570\u7ec4\u662f\u4e00\u79cd\u7279\u6b8a\u7684\u5bf9\u8c61\u3002\u4f7f\u7528\u65b9\u62ec\u53f7\u6765\u8bbf\u95ee\u5c5e\u6027\u00a0<code>arr[0]<\/code>\u00a0\u5b9e\u9645\u4e0a\u662f\u6765\u81ea\u4e8e\u5bf9\u8c61\u7684\u8bed\u6cd5\u3002\u5b83\u5176\u5b9e\u4e0e\u00a0<code>obj[key]<\/code>\u00a0\u76f8\u540c\uff0c\u5176\u4e2d\u00a0<code>arr<\/code>\u00a0\u662f\u5bf9\u8c61\uff0c\u800c\u6570\u5b57\u7528\u4f5c\u952e\uff08key\uff09\u3002<br \/>\n\u5b83\u4eec\u6269\u5c55\u4e86\u5bf9\u8c61\uff0c\u63d0\u4f9b\u4e86\u7279\u6b8a\u7684\u65b9\u6cd5\u6765\u5904\u7406\u6709\u5e8f\u7684\u6570\u636e\u96c6\u5408\u4ee5\u53ca\u00a0<code>length<\/code>\u00a0\u5c5e\u6027\u3002\u4f46\u4ece\u672c\u8d28\u4e0a\u8bb2\uff0c\u5b83\u4ecd\u7136\u662f\u4e00\u4e2a\u5bf9\u8c61\u3002<br \/>\n\u8bb0\u4f4f\uff0c\u5728 JavaScript \u4e2d\u53ea\u6709 8 \u79cd\u57fa\u672c\u7684\u6570\u636e\u7c7b\u578b\uff08\u8be6\u89c1\u00a0<a href=\"https:\/\/zh.javascript.info\/types\">\u6570\u636e\u7c7b\u578b<\/a>\u00a0\u4e00\u7ae0\uff09\u3002\u6570\u7ec4\u662f\u4e00\u4e2a\u5bf9\u8c61\uff0c\u56e0\u6b64\u5176\u884c\u4e3a\u4e5f\u50cf\u4e00\u4e2a\u5bf9\u8c61\u3002<br \/>\n\u4f8b\u5982\uff0c\u5b83\u662f\u901a\u8fc7\u5f15\u7528\u6765\u590d\u5236\u7684<br \/>\n\u4f46\u662f\u6570\u7ec4\u771f\u6b63\u7279\u6b8a\u7684\u662f\u5b83\u4eec\u7684\u5185\u90e8\u5b9e\u73b0\u3002JavaScript \u5f15\u64ce\u5c1d\u8bd5\u628a\u8fd9\u4e9b\u5143\u7d20\u4e00\u4e2a\u63a5\u4e00\u4e2a\u5730\u5b58\u50a8\u5728\u8fde\u7eed\u7684\u5185\u5b58\u533a\u57df\uff0c\u5c31\u50cf\u672c\u7ae0\u7684\u63d2\u56fe\u663e\u793a\u7684\u4e00\u6837\uff0c\u800c\u4e14\u8fd8\u6709\u4e00\u4e9b\u5176\u5b83\u7684\u4f18\u5316\uff0c\u4ee5\u4f7f\u6570\u7ec4\u8fd0\u884c\u5f97\u975e\u5e38\u5feb\u3002<br \/>\n\u4f46\u662f\uff0c\u5982\u679c\u6211\u4eec\u4e0d\u50cf\u201c\u6709\u5e8f\u96c6\u5408\u201d\u90a3\u6837\u4f7f\u7528\u6570\u7ec4\uff0c\u800c\u662f\u50cf\u5e38\u89c4\u5bf9\u8c61\u90a3\u6837\u4f7f\u7528\u6570\u7ec4\uff0c\u8fd9\u4e9b\u5c31\u90fd\u4e0d\u751f\u6548\u4e86\u3002<br \/>\n\u4f8b\u5982\uff0c\u4ece\u6280\u672f\u4e0a\u8bb2\uff0c\u6211\u4eec\u53ef\u4ee5\u8fd9\u6837\u505a<\/p>\n<pre><code class=\"language-js\">let fruits = []; \/\/ \u521b\u5efa\u4e00\u4e2a\u6570\u7ec4\n\nfruits[99999] = 5; \/\/ \u5206\u914d\u7d22\u5f15\u8fdc\u5927\u4e8e\u6570\u7ec4\u957f\u5ea6\u7684\u5c5e\u6027\n\nfruits.age = 25; \/\/ \u521b\u5efa\u4e00\u4e2a\u5177\u6709\u4efb\u610f\u540d\u79f0\u7684\u5c5e\u6027\n<\/code><\/pre>\n<p>\u8fd9\u662f\u53ef\u4ee5\u7684\uff0c\u56e0\u4e3a\u6570\u7ec4\u662f\u57fa\u4e8e\u5bf9\u8c61\u7684\u3002\u6211\u4eec\u53ef\u4ee5\u7ed9\u5b83\u4eec\u6dfb\u52a0\u4efb\u4f55\u5c5e\u6027\u3002<br \/>\n\u4f46\u662f Javascript \u5f15\u64ce\u4f1a\u53d1\u73b0\uff0c\u6211\u4eec\u5728\u50cf\u4f7f\u7528\u5e38\u89c4\u5bf9\u8c61\u4e00\u6837\u4f7f\u7528\u6570\u7ec4\uff0c\u90a3\u4e48\u9488\u5bf9\u6570\u7ec4\u7684\u4f18\u5316\u5c31\u4e0d\u518d\u9002\u7528\u4e86\uff0c\u7136\u540e\u5bf9\u5e94\u7684\u4f18\u5316\u5c31\u4f1a\u88ab\u5173\u95ed\uff0c\u8fd9\u4e9b\u4f18\u5316\u6240\u5e26\u6765\u7684\u4f18\u52bf\u4e5f\u5c31\u8361\u7136\u65e0\u5b58\u4e86\u3002<br \/>\n\u6570\u7ec4\u8bef\u7528\u7684\u51e0\u79cd\u65b9\u5f0f:<\/p>\n<ul>\n<li>\u6dfb\u52a0\u4e00\u4e2a\u975e\u6570\u5b57\u7684\u5c5e\u6027\uff0c\u6bd4\u5982\u00a0<code>arr.test = 5<\/code>\u3002<\/li>\n<li>\u5236\u9020\u7a7a\u6d1e\uff0c\u6bd4\u5982\uff1a\u6dfb\u52a0\u00a0<code>arr[0]<\/code>\uff0c\u7136\u540e\u6dfb\u52a0\u00a0<code>arr[1000]<\/code>\u00a0(\u5b83\u4eec\u4e2d\u95f4\u4ec0\u4e48\u90fd\u6ca1\u6709)\u3002<\/li>\n<li>\u4ee5\u5012\u5e8f\u586b\u5145\u6570\u7ec4\uff0c\u6bd4\u5982\u00a0<code>arr[1000]<\/code>\uff0c<code>arr[999]<\/code>\u00a0\u7b49\u7b49\u3002<br \/>\n\u8bf7\u5c06\u6570\u7ec4\u89c6\u4e3a\u4f5c\u7528\u4e8e\u00a0<strong>\u6709\u5e8f\u6570\u636e<\/strong>\u00a0\u7684\u7279\u6b8a\u7ed3\u6784\u3002\u5b83\u4eec\u4e3a\u6b64\u63d0\u4f9b\u4e86\u7279\u6b8a\u7684\u65b9\u6cd5\u3002\u6570\u7ec4\u5728 JavaScript \u5f15\u64ce\u5185\u90e8\u662f\u7ecf\u8fc7\u7279\u6b8a\u8c03\u6574\u7684\uff0c\u4f7f\u5f97\u66f4\u597d\u5730\u4f5c\u7528\u4e8e\u8fde\u7eed\u7684\u6709\u5e8f\u6570\u636e\uff0c\u6240\u4ee5\u8bf7\u4ee5\u6b63\u786e\u7684\u65b9\u5f0f\u4f7f\u7528\u6570\u7ec4\u3002\u5982\u679c\u4f60\u9700\u8981\u4efb\u610f\u952e\u503c\uff0c\u90a3\u5f88\u6709\u53ef\u80fd\u5b9e\u9645\u4e0a\u4f60\u9700\u8981\u7684\u662f\u5e38\u89c4\u5bf9\u8c61\u00a0<code>{}<\/code>\u3002<\/li>\n<\/ul>\n<h4>\u6027\u80fd<\/h4>\n<p><code>push\/pop<\/code>\u00a0\u65b9\u6cd5\u8fd0\u884c\u7684\u6bd4\u8f83\u5feb\uff0c\u800c\u00a0<code>shift\/unshift<\/code>\u00a0\u6bd4\u8f83\u6162\u3002<\/p>\n<p>shift\/unshift \u53ea\u83b7\u53d6\u5e76\u79fb\u9664\u7d22\u5f15\u00a0<code>0<\/code>\u00a0\u5bf9\u5e94\u7684\u5143\u7d20\u662f\u4e0d\u591f\u7684\u3002\u5176\u5b83\u5143\u7d20\u4e5f\u9700\u8981\u88ab\u91cd\u65b0\u7f16\u53f7\u3002<br \/>\n<code>shift<\/code>\u00a0\u64cd\u4f5c\u5fc5\u987b\u505a\u4e09\u4ef6\u4e8b:<\/p>\n<ol>\n<li>\u79fb\u9664\u7d22\u5f15\u4e3a\u00a0<code>0<\/code>\u00a0\u7684\u5143\u7d20\u3002<\/li>\n<li>\u628a\u6240\u6709\u7684\u5143\u7d20\u5411\u5de6\u79fb\u52a8\uff0c\u628a\u7d22\u5f15\u00a0<code>1<\/code>\u00a0\u6539\u6210\u00a0<code>0<\/code>\uff0c<code>2<\/code>\u00a0\u6539\u6210\u00a0<code>1<\/code>\u00a0\u4ee5\u6b64\u7c7b\u63a8\uff0c\u5bf9\u5176\u91cd\u65b0\u7f16\u53f7\u3002<\/li>\n<li>\u66f4\u65b0\u00a0<code>length<\/code>\u00a0\u5c5e\u6027\u3002<br \/>\n<strong>\u6570\u7ec4\u91cc\u7684\u5143\u7d20\u8d8a\u591a\uff0c\u79fb\u52a8\u5b83\u4eec\u5c31\u8981\u82b1\u8d8a\u591a\u7684\u65f6\u95f4\uff0c\u4e5f\u5c31\u610f\u5473\u7740\u8d8a\u591a\u7684\u5185\u5b58\u64cd\u4f5c\u3002<\/strong><br \/>\n<code>unshift<\/code>\u00a0\u4e5f\u662f\u4e00\u6837\uff1a\u4e3a\u4e86\u5728\u6570\u7ec4\u7684\u9996\u7aef\u6dfb\u52a0\u5143\u7d20\uff0c\u6211\u4eec\u9996\u5148\u9700\u8981\u5c06\u73b0\u6709\u7684\u5143\u7d20\u5411\u53f3\u79fb\u52a8\uff0c\u589e\u52a0\u5b83\u4eec\u7684\u7d22\u5f15\u503c\u3002<br \/>\n\u90a3\u00a0<code>push\/pop<\/code>\u00a0\u662f\u4ec0\u4e48\u6837\u7684\u5462\uff1f\u5b83\u4eec\u4e0d\u9700\u8981\u79fb\u52a8\u4efb\u4f55\u4e1c\u897f\u3002\u5982\u679c\u4ece\u672b\u7aef\u79fb\u9664\u4e00\u4e2a\u5143\u7d20\uff0c<code>pop<\/code>\u00a0\u65b9\u6cd5\u53ea\u9700\u8981\u6e05\u7406\u7d22\u5f15\u503c\u5e76\u7f29\u77ed\u00a0<code>length<\/code>\u00a0\u5c31\u53ef\u4ee5\u4e86\u3002<br \/>\n<strong><code>pop<\/code>\u00a0\u65b9\u6cd5\u4e0d\u9700\u8981\u79fb\u52a8\u4efb\u4f55\u4e1c\u897f\uff0c\u56e0\u4e3a\u5176\u5b83\u5143\u7d20\u90fd\u4fdd\u7559\u4e86\u5404\u81ea\u7684\u7d22\u5f15\u3002\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u00a0<code>pop<\/code>\u00a0\u4f1a\u7279\u522b\u5feb\u3002<\/strong><br \/>\n<code>push<\/code>\u00a0\u65b9\u6cd5\u4e5f\u662f\u4e00\u6837\u7684\u3002<\/li>\n<\/ol>\n<h4>\u5faa\u73af<\/h4>\n<pre><code class=\"language-js\">let arr = [&quot;Apple&quot;, &quot;Orange&quot;, &quot;Pear&quot;];\n\n\/\/ \u4f20\u7edffor\nfor (let i = 0; i &lt; arr.length; i++) {\n\tarr[i];\n}\n\n\/\/ for of\nfor (let element of arr) {\n\telement;\n}\n\n\/\/ for in \u4e0d\u5efa\u8bae\nfor (let key in arr) {\n\tarr[key];\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u4f46\u8fd9\u5176\u5b9e\u662f\u4e00\u4e2a\u5f88\u4e0d\u597d\u7684\u60f3\u6cd5\u3002\u4f1a\u6709\u4e00\u4e9b\u6f5c\u5728\u95ee\u9898\u5b58\u5728\uff1a<\/p>\n<ol>\n<li><code>for..in<\/code>\u00a0\u5faa\u73af\u4f1a\u904d\u5386\u00a0<strong>\u6240\u6709\u5c5e\u6027<\/strong>\uff0c\u4e0d\u4ec5\u4ec5\u662f\u8fd9\u4e9b\u6570\u5b57\u5c5e\u6027\u3002<br \/>\n\u5728\u6d4f\u89c8\u5668\u548c\u5176\u5b83\u73af\u5883\u4e2d\u6709\u4e00\u79cd\u79f0\u4e3a\u201c\u7c7b\u6570\u7ec4\u201d\u7684\u5bf9\u8c61\uff0c\u5b83\u4eec\u00a0<strong>\u770b\u4f3c\u662f\u6570\u7ec4<\/strong>\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5b83\u4eec\u6709\u00a0<code>length<\/code>\u00a0\u548c\u7d22\u5f15\u5c5e\u6027\uff0c\u4f46\u662f\u4e5f\u53ef\u80fd\u6709\u5176\u5b83\u7684\u975e\u6570\u5b57\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\uff0c\u8fd9\u901a\u5e38\u662f\u6211\u4eec\u4e0d\u9700\u8981\u7684\u3002<code>for..in<\/code>\u00a0\u5faa\u73af\u4f1a\u628a\u5b83\u4eec\u90fd\u5217\u51fa\u6765\u3002\u6240\u4ee5\u5982\u679c\u6211\u4eec\u9700\u8981\u5904\u7406\u7c7b\u6570\u7ec4\u5bf9\u8c61\uff0c\u8fd9\u4e9b\u201c\u989d\u5916\u201d\u7684\u5c5e\u6027\u5c31\u4f1a\u5b58\u5728\u95ee\u9898\u3002<\/li>\n<li><code>for..in<\/code>\u00a0\u5faa\u73af\u9002\u7528\u4e8e\u666e\u901a\u5bf9\u8c61\uff0c\u5e76\u4e14\u505a\u4e86\u5bf9\u5e94\u7684\u4f18\u5316\u3002\u4f46\u662f\u4e0d\u9002\u7528\u4e8e\u6570\u7ec4\uff0c\u56e0\u6b64\u901f\u5ea6\u8981\u6162 10-100 \u500d\u3002\u5f53\u7136\u5373\u4f7f\u662f\u8fd9\u6837\u4e5f\u4f9d\u7136\u975e\u5e38\u5feb\u3002\u53ea\u6709\u5728\u9047\u5230\u74f6\u9888\u65f6\u53ef\u80fd\u4f1a\u6709\u95ee\u9898\u3002\u4f46\u662f\u6211\u4eec\u4ecd\u7136\u5e94\u8be5\u4e86\u89e3\u8fd9\u5176\u4e2d\u7684\u4e0d\u540c\u3002<br \/>\n\u901a\u5e38\u6765\u8bf4\uff0c\u6211\u4eec\u4e0d\u5e94\u8be5\u7528\u00a0<code>for..in<\/code>\u00a0\u6765\u5904\u7406\u6570\u7ec4\u3002<\/li>\n<\/ol>\n<\/blockquote>\n<h4>\u5173\u4e8elength<\/h4>\n<p>\u5f53\u6211\u4eec\u4fee\u6539\u6570\u7ec4\u7684\u65f6\u5019\uff0c<code>length<\/code>\u00a0\u5c5e\u6027\u4f1a\u81ea\u52a8\u66f4\u65b0\u3002\u51c6\u786e\u6765\u8bf4\uff0c\u5b83\u5b9e\u9645\u4e0a\u4e0d\u662f\u6570\u7ec4\u91cc\u5143\u7d20\u7684\u4e2a\u6570\uff0c\u800c\u662f\u6700\u5927\u7684\u6570\u5b57\u7d22\u5f15\u503c\u52a0\u4e00\u3002<br \/>\n\u4f8b\u5982\uff0c\u4e00\u4e2a\u6570\u7ec4\u53ea\u6709\u4e00\u4e2a\u5143\u7d20\uff0c\u4f46\u662f\u8fd9\u4e2a\u5143\u7d20\u7684\u7d22\u5f15\u503c\u5f88\u5927\uff0c\u90a3\u4e48\u8fd9\u4e2a\u6570\u7ec4\u7684\u00a0<code>length<\/code>\u00a0\u4e5f\u4f1a\u5f88\u5927<\/p>\n<pre><code class=\"language-js\">let fruits = [];\nfruits[123] = &quot;Apple&quot;;\n\nalert( fruits.length ); \/\/ 124\n<\/code><\/pre>\n<p>\u8981\u77e5\u9053\u7684\u662f\u6211\u4eec\u901a\u5e38\u4e0d\u4f1a\u8fd9\u6837\u4f7f\u7528\u6570\u7ec4\u3002<br \/>\n<code>length<\/code>\u00a0\u5c5e\u6027\u7684\u53e6\u4e00\u4e2a\u6709\u610f\u601d\u7684\u70b9\u662f\u5b83\u662f\u53ef\u5199\u7684\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u624b\u52a8\u589e\u52a0\u5b83\uff0c\u5219\u4e0d\u4f1a\u53d1\u751f\u4efb\u4f55\u6709\u8da3\u7684\u4e8b\u513f\u3002\u4f46\u662f\u5982\u679c\u6211\u4eec\u51cf\u5c11\u5b83\uff0c\u6570\u7ec4\u5c31\u4f1a\u88ab\u622a\u65ad\u3002\u8be5\u8fc7\u7a0b\u662f\u4e0d\u53ef\u9006\u7684<br \/>\n\u6240\u4ee5\uff0c\u6e05\u7a7a\u6570\u7ec4\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u5c31\u662f\uff1a<code>arr.length = 0;<\/code><\/p>\n<h4>new Array()<\/h4>\n<p>\u8fd9\u662f\u521b\u5efa\u6570\u7ec4\u7684\u53e6\u4e00\u79cd\u8bed\u6cd5\uff1a<\/p>\n<pre><code class=\"language-js\">let arr = new Array(&quot;Apple&quot;, &quot;Pear&quot;, &quot;etc&quot;);\n<\/code><\/pre>\n<p>\u5b83\u5f88\u5c11\u88ab\u4f7f\u7528\uff0c\u56e0\u4e3a\u65b9\u62ec\u53f7\u00a0<code>[]<\/code>\u00a0\u66f4\u77ed\u66f4\u7b80\u6d01\u3002\u800c\u4e14\uff0c\u8fd9\u79cd\u8bed\u6cd5\u8fd8\u6709\u4e00\u4e2a\u68d8\u624b\u7684\u7279\u6027\u3002<br \/>\n\u5982\u679c\u4f7f\u7528\u5355\u4e2a\u53c2\u6570\uff08\u5373\u6570\u5b57\uff09\u8c03\u7528\u00a0<code>new Array<\/code>\uff0c\u90a3\u4e48\u5b83\u4f1a\u521b\u5efa\u4e00\u4e2a\u00a0<strong>\u6307\u5b9a\u4e86\u957f\u5ea6\uff0c\u5374\u6ca1\u6709\u4efb\u4f55\u9879<\/strong>\u00a0\u7684\u6570\u7ec4\u3002<br \/>\n\u8ba9\u6211\u4eec\u770b\u770b\u5982\u4f55\u642c\u8d77\u77f3\u5934\u7838\u81ea\u5df1\u7684\u811a:<\/p>\n<pre><code class=\"language-js\">let arr = new Array(2); \/\/ \u4f1a\u521b\u5efa\u4e00\u4e2a [2] \u7684\u6570\u7ec4\u5417\uff1f\n\nalert( arr[0] ); \/\/ undefined\uff01\u6ca1\u6709\u5143\u7d20\u3002\n\nalert( arr.length ); \/\/ length 2\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u907f\u514d\u8fd9\u79cd\u610f\u5916\u60c5\u51b5\uff0c\u6211\u4eec\u901a\u5e38\u4f7f\u7528\u65b9\u62ec\u53f7\uff0c\u9664\u975e\u6211\u4eec\u771f\u7684\u77e5\u9053\u81ea\u5df1\u5728\u505a\u4ec0\u4e48\u3002<br \/>\n\u53ef\u7528\u4ee5\u4e0b\u65b9\u6cd5\u586b\u5145\u5143\u7d20\u4e3a0<\/p>\n<pre><code class=\"language-js\">let arr = new Array(2).fill(0)\n<\/code><\/pre>\n<h4>\u591a\u7ef4\u6570\u7ec4<\/h4>\n<p>\u6570\u7ec4\u91cc\u7684\u9879\u4e5f\u53ef\u4ee5\u662f\u6570\u7ec4\u3002\u6211\u4eec\u53ef\u4ee5\u5c06\u5176\u7528\u4e8e\u591a\u7ef4\u6570\u7ec4\uff0c\u4f8b\u5982\u5b58\u50a8\u77e9\u9635<\/p>\n<pre><code class=\"language-js\">let matrix = [\n  [1, 2, 3],\n  [4, 5, 6],\n  [7, 8, 9]\n];\n\nalert( matrix[1][1] ); \/\/ \u6700\u4e2d\u95f4\u7684\u90a3\u4e2a\u6570\n<\/code><\/pre>\n<p>\u6709\u65f6\u5019\u6211\u4eec\u4e0d\u4f1a\u6307\u5b9a\u5168\u90e8\u5143\u7d20\u53ea\u60f3\u521b\u5efa\u4e00\u4e2a\u591a\u7ef4\u6570\u7ec4\uff0c\u5f53\u7136\u53ef\u4ee5\u4f7f\u7528for\uff0c\u8003\u8651\u4ee5\u4e0b\u65b9\u6cd5<br \/>\n\u53ef\u4ee5\u4f7f\u7528Array.from(),\u521b\u5efa\u4e00\u4e2am*n\u7684\u6570\u7ec4<\/p>\n<pre><code class=\"language-js\">let matrix = Array.from(Array(m), () =&gt; new Array(n));\n<\/code><\/pre>\n<h4>toString<\/h4>\n<p>\u6570\u7ec4\u6709\u81ea\u5df1\u7684\u00a0<code>toString<\/code>\u00a0\u65b9\u6cd5\u7684\u5b9e\u73b0\uff0c\u4f1a\u8fd4\u56de\u4ee5\u9017\u53f7\u9694\u5f00\u7684\u5143\u7d20\u5217\u8868\u3002<\/p>\n<pre><code class=\"language-js\">let arr = [1, 2, 3];\n\nalert( arr ); \/\/ 1,2,3\nalert( String(arr) === '1,2,3' ); \/\/ true\n<\/code><\/pre>\n<p>\u6570\u7ec4\u6ca1\u6709\u00a0<code>Symbol.toPrimitive<\/code>\uff0c\u4e5f\u6ca1\u6709\u00a0<code>valueOf<\/code>\uff0c\u5b83\u4eec\u53ea\u80fd\u6267\u884c\u00a0<code>toString<\/code>\u00a0\u8fdb\u884c\u8f6c\u6362\uff0c\u6240\u4ee5\u8fd9\u91cc\u00a0<code>[]<\/code>\u00a0\u5c31\u53d8\u6210\u4e86\u4e00\u4e2a\u7a7a\u5b57\u7b26\u4e32\uff0c<code>[1]<\/code>\u00a0\u53d8\u6210\u4e86\u00a0<code>&quot;1&quot;<\/code>\uff0c<code>[1,2]<\/code>\u00a0\u53d8\u6210\u4e86\u00a0<code>&quot;1,2&quot;<\/code>\u3002<br \/>\n\u5f53\u00a0<code>&quot;+&quot;<\/code>\u00a0\u8fd0\u7b97\u7b26\u628a\u4e00\u4e9b\u9879\u52a0\u5230\u5b57\u7b26\u4e32\u540e\u9762\u65f6\uff0c\u52a0\u53f7\u540e\u9762\u7684\u9879\u4e5f\u4f1a\u88ab\u8f6c\u6362\u6210\u5b57\u7b26\u4e32\uff0c\u6240\u4ee5\u4e0b\u4e00\u6b65\u5c31\u4f1a\u662f\u8fd9\u6837<\/p>\n<pre><code class=\"language-js\">alert( [] + 1 ); \/\/ &quot;1&quot;\nalert( [1] + 1 ); \/\/ &quot;11&quot;\nalert( [1,2] + 1 ); \/\/ &quot;1,21&quot;\n\n\/\/ |\n\/\/ V\n\nalert( &quot;&quot; + 1 ); \/\/ &quot;1&quot;\nalert( &quot;1&quot; + 1 ); \/\/ &quot;11&quot;\nalert( &quot;1,2&quot; + 1 ); \/\/ &quot;1,21&quot;\n<\/code><\/pre>\n<h4>\u4e0d\u8981\u4f7f\u7528 == \u6bd4\u8f83\u6570\u7ec4<\/h4>\n<p>JavaScript \u4e2d\u7684\u6570\u7ec4\u4e0e\u5176\u5b83\u4e00\u4e9b\u7f16\u7a0b\u8bed\u8a00\u7684\u4e0d\u540c\uff0c\u4e0d\u5e94\u8be5\u4f7f\u7528\u00a0<code>==<\/code>\u00a0\u8fd0\u7b97\u7b26\u6bd4\u8f83 JavaScript \u4e2d\u7684\u6570\u7ec4\u3002<br \/>\n\u8be5\u8fd0\u7b97\u7b26\u4e0d\u4f1a\u5bf9\u6570\u7ec4\u8fdb\u884c\u7279\u6b8a\u5904\u7406\uff0c\u5b83\u4f1a\u50cf\u5904\u7406\u4efb\u610f\u5bf9\u8c61\u90a3\u6837\u5904\u7406\u6570\u7ec4\u3002<br \/>\n\u8ba9\u6211\u4eec\u56de\u987e\u4e00\u4e0b\u89c4\u5219\uff1a<\/p>\n<ul>\n<li>\u4ec5\u5f53\u4e24\u4e2a\u5bf9\u8c61\u5f15\u7528\u7684\u662f\u540c\u4e00\u4e2a\u5bf9\u8c61\u65f6\uff0c\u5b83\u4eec\u624d\u76f8\u7b49\u00a0<code>==<\/code>\u3002<\/li>\n<li>\u5982\u679c\u00a0<code>==<\/code>\u00a0\u5de6\u53f3\u4e24\u4e2a\u53c2\u6570\u4e4b\u4e2d\u6709\u4e00\u4e2a\u53c2\u6570\u662f\u5bf9\u8c61\uff0c\u53e6\u4e00\u4e2a\u53c2\u6570\u662f\u539f\u59cb\u7c7b\u578b\uff0c\u90a3\u4e48\u8be5\u5bf9\u8c61\u5c06\u4f1a\u88ab\u8f6c\u6362\u4e3a\u539f\u59cb\u7c7b\u578b\uff0c\u8f6c\u6362\u89c4\u5219\u5982\u00a0<a href=\"https:\/\/zh.javascript.info\/object-toprimitive\">\u5bf9\u8c61 \u2014\u2014 \u539f\u59cb\u503c\u8f6c\u6362<\/a>\u00a0\u4e00\u7ae0\u6240\u8ff0\u3002<\/li>\n<li>\u2026\u2026<code>null<\/code>\u00a0\u548c\u00a0<code>undefined<\/code>\u00a0\u76f8\u7b49\u00a0<code>==<\/code>\uff0c\u4e14\u5404\u81ea\u4e0d\u7b49\u4e8e\u4efb\u4f55\u5176\u4ed6\u7684\u503c\u3002<br \/>\n\u4e25\u683c\u6bd4\u8f83\u00a0<code>===<\/code>\u00a0\u66f4\u7b80\u5355\uff0c\u56e0\u4e3a\u5b83\u4e0d\u4f1a\u8fdb\u884c\u7c7b\u578b\u8f6c\u6362\u3002<br \/>\n\u6240\u4ee5\uff0c\u5982\u679c\u6211\u4eec\u4f7f\u7528\u00a0<code>==<\/code>\u00a0\u6765\u6bd4\u8f83\u6570\u7ec4\uff0c\u9664\u975e\u6211\u4eec\u6bd4\u8f83\u7684\u662f\u4e24\u4e2a\u5f15\u7528\u540c\u4e00\u6570\u7ec4\u7684\u53d8\u91cf\uff0c\u5426\u5219\u5b83\u4eec\u6c38\u8fdc\u4e0d\u76f8\u7b49\u3002<br \/>\n\u4ece\u6280\u672f\u4e0a\u8bb2\uff0c\u8fd9\u4e9b\u6570\u7ec4\u662f\u4e0d\u540c\u7684\u5bf9\u8c61\u3002\u6240\u4ee5\u5b83\u4eec\u4e0d\u76f8\u7b49\u3002<code>==<\/code>\u00a0\u8fd0\u7b97\u7b26\u4e0d\u4f1a\u8fdb\u884c\u9010\u9879\u6bd4\u8f83\u3002<br \/>\n\u4e0e\u539f\u59cb\u7c7b\u578b\u7684\u6bd4\u8f83\u4e5f\u53ef\u80fd\u4f1a\u4ea7\u751f\u770b\u4f3c\u5f88\u5947\u602a\u7684\u7ed3\u679c<\/li>\n<\/ul>\n<pre><code class=\"language-js\">alert( [] == [] ); \/\/ false\nalert( [0] == [0] ); \/\/ false\n\nalert( 0 == [] ); \/\/ true\nalert('0' == [] ); \/\/ false\n<\/code><\/pre>\n<p>\u5728\u8fd9\u91cc\u7684\u4e24\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u5c06\u539f\u59cb\u7c7b\u578b\u548c\u6570\u7ec4\u5bf9\u8c61\u8fdb\u884c\u6bd4\u8f83\u3002\u56e0\u6b64\uff0c\u6570\u7ec4\u00a0<code>[]<\/code>\u00a0\u88ab\u8f6c\u6362\u4e3a\u539f\u59cb\u7c7b\u578b\u4ee5\u8fdb\u884c\u6bd4\u8f83\uff0c\u88ab\u8f6c\u6362\u6210\u4e86\u4e00\u4e2a\u7a7a\u5b57\u7b26\u4e32\u00a0<code>''<\/code>\u3002<br \/>\n\u7136\u540e\uff0c\u63a5\u4e0b\u6765\u7684\u6bd4\u8f83\u5c31\u662f\u539f\u59cb\u7c7b\u578b\u4e4b\u95f4\u7684\u6bd4\u8f83\uff0c''\u88ab\u8f6c\u6362\u4e3a0\uff0c\u800c'0'\u6ca1\u6709\u540e\u7eed\u8f6c\u6362\uff0c\u6545\u7b2c\u4e00\u4e2a\u4e3atrue\uff0c\u7b2c\u4e8c\u4e2a\u4e3afalse<\/p>\n<p>\u6211\u4eec\u5e94\u8be5\u5982\u4f55\u5bf9\u6570\u7ec4\u8fdb\u884c\u6bd4\u8f83\u5462\uff1f<br \/>\n\u5f88\u7b80\u5355\uff0c\u4e0d\u8981\u4f7f\u7528\u00a0<code>==<\/code>\u00a0\u8fd0\u7b97\u7b26\u3002\u800c\u662f\uff0c\u53ef\u4ee5\u5728\u5faa\u73af\u4e2d\u6216\u8005\u4f7f\u7528\u4e0b\u4e00\u7ae0\u4e2d\u6211\u4eec\u5c06\u4ecb\u7ecd\u7684\u8fed\u4ee3\u65b9\u6cd5\u9010\u9879\u5730\u6bd4\u8f83\u5b83\u4eec\u3002<\/p>\n<h3>\u6570\u7ec4\u65b9\u6cd5<\/h3>\n<h4>\u6dfb\u52a0\/\u79fb\u9664\u6570\u7ec4\u5143\u7d20<\/h4>\n<p>\u4ece\u6570\u7ec4\u7684\u9996\u7aef\u6216\u5c3e\u7aef\u6dfb\u52a0\u548c\u5220\u9664\u5143\u7d20\u7684\u65b9\u6cd5<\/p>\n<ul>\n<li><code>arr.push(...items)<\/code>\u00a0\u2014\u2014 \u4ece\u5c3e\u7aef\u6dfb\u52a0\u5143\u7d20\uff0c<\/li>\n<li><code>arr.pop()<\/code>\u00a0\u2014\u2014 \u4ece\u5c3e\u7aef\u63d0\u53d6\u5143\u7d20\uff0c<\/li>\n<li><code>arr.shift()<\/code>\u00a0\u2014\u2014 \u4ece\u9996\u7aef\u63d0\u53d6\u5143\u7d20\uff0c<\/li>\n<li><code>arr.unshift(...items)<\/code>\u00a0\u2014\u2014 \u4ece\u9996\u7aef\u6dfb\u52a0\u5143\u7d20\u3002<\/li>\n<\/ul>\n<h5>splice<\/h5>\n<p>\u6570\u7ec4\u662f\u5bf9\u8c61\uff0c\u53ef\u4ee5\u4f7f\u7528delete<\/p>\n<pre><code class=\"language-js\">let arr = [1,2,3];\ndelete arr[1];\narr[1] \/\/ undefined\narr.length \/\/ 3\n<\/code><\/pre>\n<p>arr.splice \u53ef\u4ee5\u6dfb\u52a0\uff0c\u5220\u9664\u548c\u63d2\u5165\u5143\u7d20<\/p>\n<pre><code class=\"language-js\">arr.splice(start[, deleCount, elem1, ..., elemN])\n<\/code><\/pre>\n<p>\u4ece\u7d22\u5f15\u00a0<code>start<\/code>\u00a0\u5f00\u59cb\u4fee\u6539\u00a0<code>arr<\/code>\uff1a\u5220\u9664\u00a0<code>deleteCount<\/code>\u00a0\u4e2a\u5143\u7d20\u5e76\u5728\u5f53\u524d\u4f4d\u7f6e\u63d2\u5165\u00a0<code>elem1, ..., elemN<\/code>\u3002\u6700\u540e\u8fd4\u56de\u88ab\u5220\u9664\u7684\u5143\u7d20\u6240\u7ec4\u6210\u7684\u6570\u7ec4\u3002<\/p>\n<pre><code class=\"language-js\">let arr = [1, 2, 3, 4, 5];\n\narr.splice(1, 1); \/\/ [1, 3, 4, 5]\narr.splice(1); \/\/ [1]\n\narr.splice(0, 3, 1.5, 2.5); \/\/ [1.5, 2.5, 4, 5]\n\narr.splice(2, 0, 3.5) \/\/ [1, 2, 3, 3.5, 4, 5]\n<\/code><\/pre>\n<blockquote>\n<p>\u5141\u8bb8\u8d1f\u6570\u7d22\u5f15<\/p>\n<\/blockquote>\n<h5>slice<\/h5>\n<pre><code class=\"language-js\">arr.slice([start], [end])\n<\/code><\/pre>\n<p>\u8fd4\u56de\u4e00\u4e2a\u65b0\u6570\u7ec4\uff0c\u5c06\u6240\u6709\u4ece\u7d22\u5f15\u00a0<code>start<\/code>\u00a0\u5230\u00a0<code>end<\/code>\uff08\u4e0d\u5305\u62ec\u00a0<code>end<\/code>\uff09\u7684\u6570\u7ec4\u9879\u590d\u5236\u5230\u4e00\u4e2a\u65b0\u7684\u6570\u7ec4\u3002<code>start<\/code>\u00a0\u548c\u00a0<code>end<\/code>\u00a0\u90fd\u53ef\u4ee5\u662f\u8d1f\u6570\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u4ece\u672b\u5c3e\u8ba1\u7b97\u7d22\u5f15\u3002<\/p>\n<pre><code class=\"language-js\">let arr = [1, 2, 3, 4, 5];\n\narr.slice(1, 3) \/\/ [2, 3]\narr.slice(-2) \/\/ [4, 5]\n<\/code><\/pre>\n<p>\u6211\u4eec\u4e5f\u53ef\u4ee5\u4e0d\u5e26\u53c2\u6570\u5730\u8c03\u7528\u5b83\uff1a<code>arr.slice()<\/code>\u00a0\u4f1a\u521b\u5efa\u4e00\u4e2a\u00a0<code>arr<\/code>\u00a0\u7684\u526f\u672c\u3002\u5176\u901a\u5e38\u7528\u4e8e\u83b7\u53d6\u526f\u672c\uff0c\u4ee5\u8fdb\u884c\u4e0d\u5f71\u54cd\u539f\u59cb\u6570\u7ec4\u7684\u8fdb\u4e00\u6b65\u8f6c\u6362\u3002<\/p>\n<h5>concat<\/h5>\n<p>\u521b\u5efa\u4e00\u4e2a\u65b0\u6570\u7ec4\uff0c\u5176\u4e2d\u5305\u542b\u6765\u81ea\u4e8e\u5176\u4ed6\u6570\u7ec4\u548c\u5176\u4ed6\u9879\u7684\u503c\u3002<\/p>\n<pre><code class=\"language-js\">arr.concat(arg1, arg2...)\n<\/code><\/pre>\n<p>\u5b83\u63a5\u53d7\u4efb\u610f\u6570\u91cf\u7684\u53c2\u6570 \u2014\u2014 \u6570\u7ec4\u6216\u503c\u90fd\u53ef\u4ee5\u3002<br \/>\n\u7ed3\u679c\u662f\u4e00\u4e2a\u5305\u542b\u6765\u81ea\u4e8e\u00a0<code>arr<\/code>\uff0c\u7136\u540e\u662f\u00a0<code>arg1<\/code>\uff0c<code>arg2<\/code>\u00a0\u7684\u5143\u7d20\u7684\u65b0\u6570\u7ec4\u3002<br \/>\n\u5982\u679c\u53c2\u6570\u00a0<code>argN<\/code>\u00a0\u662f\u4e00\u4e2a\u6570\u7ec4\uff0c\u90a3\u4e48\u5176\u4e2d\u7684\u6240\u6709\u5143\u7d20\u90fd\u4f1a\u88ab\u590d\u5236\u3002\u5426\u5219\uff0c\u5c06\u590d\u5236\u53c2\u6570\u672c\u8eab\u3002<\/p>\n<pre><code class=\"language-js\">let arr = [1, 2];\n\n\/\/ \u4ece arr \u548c [3,4] \u521b\u5efa\u4e00\u4e2a\u65b0\u6570\u7ec4\nalert( arr.concat([3, 4]) ); \/\/ 1,2,3,4\n\n\/\/ \u4ece arr\u3001[3,4] \u548c [5,6] \u521b\u5efa\u4e00\u4e2a\u65b0\u6570\u7ec4\nalert( arr.concat([3, 4], [5, 6]) ); \/\/ 1,2,3,4,5,6\n\n\/\/ \u4ece arr\u3001[3,4]\u30015 \u548c 6 \u521b\u5efa\u4e00\u4e2a\u65b0\u6570\u7ec4\nalert( arr.concat([3, 4], 5, 6) ); \/\/ 1,2,3,4,5,6\n<\/code><\/pre>\n<p>\u901a\u5e38\uff0c\u5b83\u53ea\u590d\u5236\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u3002\u5176\u4ed6\u5bf9\u8c61\uff0c\u5373\u4f7f\u5b83\u4eec\u770b\u8d77\u6765\u50cf\u6570\u7ec4\u4e00\u6837\uff0c\u4f46\u4ecd\u7136\u4f1a\u88ab\u4f5c\u4e3a\u4e00\u4e2a\u6574\u4f53\u6dfb\u52a0\uff1a<\/p>\n<pre><code class=\"language-js\">let arr = [1, 2];\n\nlet arrayLike = {\n  0: &quot;something&quot;,\n  length: 1\n};\n\nalert( arr.concat(arrayLike) ); \/\/ 1,2,[object Object]\n<\/code><\/pre>\n<p>\u2026\u2026\u4f46\u662f\uff0c\u5982\u679c\u7c7b\u6570\u7ec4\u5bf9\u8c61\u5177\u6709\u00a0<code>Symbol.isConcatSpreadable<\/code>\u00a0\u5c5e\u6027\uff0c\u90a3\u4e48\u5b83\u5c31\u4f1a\u88ab\u00a0<code>concat<\/code>\u00a0\u5f53\u4f5c\u4e00\u4e2a\u6570\u7ec4\u6765\u5904\u7406\uff1a\u6b64\u5bf9\u8c61\u4e2d\u7684\u5143\u7d20\u5c06\u88ab\u6dfb\u52a0\uff1a<\/p>\n<pre><code class=\"language-js\">let arr = [1, 2];\n\nlet arrayLike = {\n  0: &quot;something&quot;,\n  1: &quot;else&quot;,\n  [Symbol.isConcatSpreadable]: true,\n  length: 2\n};\n\nalert( arr.concat(arrayLike) ); \/\/ 1,2,something,else\n<\/code><\/pre>\n<h4>\u904d\u5386 forEach<\/h4>\n<p>\u5141\u8bb8\u4e3a\u6570\u7ec4\u7684\u6bcf\u4e2a\u5143\u7d20\u90fd\u8fd0\u884c\u4e00\u4e2a\u51fd\u6570\u3002<\/p>\n<pre><code class=\"language-js\">arr.forEach(function(item, index, array) {\n\t\/\/do something\n});\n<\/code><\/pre>\n<pre><code class=\"language-js\">[1, 2, 4].forEach(alert);\n\n[&quot;Bilbo&quot;, &quot;Gandalf&quot;, &quot;Nazgul&quot;].forEach((item, index, array) =&gt; {\n  alert(`${item} is at index ${index} in ${array}`);\n});\n<\/code><\/pre>\n<p>\u8be5\u51fd\u6570\u7684\u7ed3\u679c\uff08\u5982\u679c\u5b83\u6709\u8fd4\u56de\uff09\u4f1a\u88ab\u629b\u5f03\u548c\u5ffd\u7565\u3002<\/p>\n<h4>\u641c\u7d22<\/h4>\n<h5>indexOf lastIndexOf includes<\/h5>\n<p>arr.indexOf\u548carr.includes\u65b9\u6cd5\u8bed\u6cd5\u76f8\u4f3c\uff0c\u5e76\u4e14\u4f5c\u7528\u57fa\u672c\u4e0a\u4e5f\u4e0e\u5b57\u7b26\u4e32\u7684\u65b9\u6cd5\u76f8\u540c\uff0c\u53ea\u4e0d\u8fc7\u8fd9\u91cc\u662f\u5bf9\u6570\u7ec4\u5143\u7d20\u800c\u4e0d\u662f\u5b57\u7b26\u8fdb\u884c\u64cd\u4f5c<\/p>\n<ul>\n<li><code>arr.indexOf(item, from)<\/code>\u00a0\u2014\u2014 \u4ece\u7d22\u5f15\u00a0<code>from<\/code>\u00a0\u5f00\u59cb\u641c\u7d22\u00a0<code>item<\/code>\uff0c\u5982\u679c\u627e\u5230\u5219\u8fd4\u56de\u7d22\u5f15\uff0c\u5426\u5219\u8fd4\u56de\u00a0<code>-1<\/code>\u3002<\/li>\n<li><code>arr.includes(item, from)<\/code>\u00a0\u2014\u2014 \u4ece\u7d22\u5f15\u00a0<code>from<\/code>\u00a0\u5f00\u59cb\u641c\u7d22\u00a0<code>item<\/code>\uff0c\u5982\u679c\u627e\u5230\u5219\u8fd4\u56de\u00a0<code>true<\/code>\uff08\u8bd1\u6ce8\uff1a\u5982\u679c\u6ca1\u627e\u5230\uff0c\u5219\u8fd4\u56de\u00a0<code>false<\/code>\uff09\u3002<br \/>\n\u901a\u5e38\u4f7f\u7528\u8fd9\u4e9b\u65b9\u6cd5\u65f6\u53ea\u4f1a\u4f20\u5165\u4e00\u4e2a\u53c2\u6570\uff1a\u4f20\u5165\u00a0<code>item<\/code>\u00a0\u5f00\u59cb\u641c\u7d22\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u641c\u7d22\u662f\u4ece\u5934\u5f00\u59cb\u7684\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let arr = [1, 0, false];\n\nalert( arr.indexOf(0) ); \/\/ 1\nalert( arr.indexOf(false) ); \/\/ 2\nalert( arr.indexOf(null) ); \/\/ -1\n\nalert( arr.includes(1) ); \/\/ true\n<\/code><\/pre>\n<p>\u8bf7\u6ce8\u610f\uff0c<code>indexOf<\/code>\u00a0\u548c\u00a0<code>includes<\/code>\u00a0\u4f7f\u7528\u4e25\u683c\u76f8\u7b49\u00a0<code>===<\/code>\u00a0\u8fdb\u884c\u6bd4\u8f83\u3002\u6240\u4ee5\uff0c\u5982\u679c\u6211\u4eec\u641c\u7d22\u00a0<code>false<\/code>\uff0c\u5b83\u4f1a\u51c6\u786e\u627e\u5230\u00a0<code>false<\/code>\u00a0\u800c\u4e0d\u662f\u6570\u5b57\u00a0<code>0<\/code>\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u60f3\u68c0\u67e5\u6570\u7ec4\u4e2d\u662f\u5426\u5305\u542b\u5143\u7d20\u00a0<code>item<\/code>\uff0c\u5e76\u4e14\u4e0d\u9700\u8981\u77e5\u9053\u5176\u786e\u5207\u7684\u7d22\u5f15\uff0c\u90a3\u4e48\u00a0<code>arr.includes<\/code>\u00a0\u662f\u9996\u9009\u3002<\/p>\n<p>\u65b9\u6cd5arr.lastIndexOf\u4e0e\u00a0<code>indexOf<\/code>\u00a0\u76f8\u540c\uff0c\u4f46\u4ece\u53f3\u5411\u5de6\u67e5\u627e\u3002<\/p>\n<pre><code class=\"language-js\">let fruits = ['Apple', 'Orange', 'Apple'];\n\nalert( fruits.indexOf('Apple') ); \/\/ 0\uff08\u7b2c\u4e00\u4e2a Apple\uff09\nalert( fruits.lastIndexOf('Apple') ); \/\/ 2\uff08\u6700\u540e\u4e00\u4e2a Apple\uff09\n<\/code><\/pre>\n<blockquote>\n<p>\u65b9\u6cd5\u00a0<code>includes<\/code>\u00a0\u53ef\u4ee5\u6b63\u786e\u7684\u5904\u7406\u00a0<code>NaN<\/code><br \/>\n\u65b9\u6cd5\u00a0<code>includes<\/code>\u00a0\u7684\u4e00\u4e2a\u6b21\u8981\u4f46\u503c\u5f97\u6ce8\u610f\u7684\u7279\u6027\u662f\uff0c\u5b83\u53ef\u4ee5\u6b63\u786e\u5904\u7406\u00a0<code>NaN<\/code>\uff0c\u8fd9\u4e0e\u00a0<code>indexOf<\/code>\u00a0\u4e0d\u540c\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">const arr = [NaN];\nalert( arr.indexOf(NaN) ); \/\/ -1\uff08\u9519\uff0c\u5e94\u8be5\u4e3a 0\uff09\nalert( arr.includes(NaN) );\/\/ true\uff08\u6b63\u786e\uff09\n<\/code><\/pre>\n<blockquote>\n<p>\u8fd9\u662f\u56e0\u4e3a\u00a0<code>includes<\/code>\u00a0\u662f\u5728\u6bd4\u8f83\u665a\u7684\u65f6\u5019\u624d\u88ab\u6dfb\u52a0\u5230 JavaScript \u4e2d\u7684\uff0c\u5e76\u4e14\u5728\u5185\u90e8\u4f7f\u7528\u4e86\u66f4\u65b0\u4e86\u7684\u6bd4\u8f83\u7b97\u6cd5\u3002<\/p>\n<\/blockquote>\n<h5>find findIndex findLastIndex<\/h5>\n<p>\u6211\u4eec\u6709\u4e00\u4e2a\u5bf9\u8c61\u6570\u7ec4\u3002\u6211\u4eec\u5982\u4f55\u627e\u5230\u5177\u6709\u7279\u5b9a\u6761\u4ef6\u7684\u5bf9\u8c61\uff1f<br \/>\n\u8fd9\u65f6\u53ef\u4ee5\u7528arr.find\u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-js\">let result = arr.find(function(item, index, array) {\n  \/\/ \u5982\u679c\u8fd4\u56de true\uff0c\u5219\u8fd4\u56de item \u5e76\u505c\u6b62\u8fed\u4ee3\n  \/\/ \u5bf9\u4e8e\u5047\u503c\uff08false\uff09\u7684\u60c5\u51b5\uff0c\u5219\u8fd4\u56de undefined\n});\n<\/code><\/pre>\n<p>\u4f9d\u6b21\u5bf9\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u5143\u7d20\u8c03\u7528\u8be5\u51fd\u6570\uff1a<\/p>\n<ul>\n<li><code>item<\/code>\u00a0\u662f\u5143\u7d20\u3002<\/li>\n<li><code>index<\/code>\u00a0\u662f\u5b83\u7684\u7d22\u5f15\u3002<\/li>\n<li><code>array<\/code>\u00a0\u662f\u6570\u7ec4\u672c\u8eab\u3002<br \/>\n\u5982\u679c\u5b83\u8fd4\u56de\u00a0<code>true<\/code>\uff0c\u5219\u641c\u7d22\u505c\u6b62\uff0c\u5e76\u8fd4\u56de\u00a0<code>item<\/code>\u3002\u5982\u679c\u6ca1\u6709\u641c\u7d22\u5230\uff0c\u5219\u8fd4\u56de\u00a0<code>undefined<\/code>\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let users = [\n  {id: 1, name: &quot;John&quot;},\n  {id: 2, name: &quot;Pete&quot;},\n  {id: 3, name: &quot;Mary&quot;}\n];\n\nlet user = users.find(item =&gt; item.id == 1);\n\nalert(user.name); \/\/ John\n<\/code><\/pre>\n<p>arr.findIndex\u65b9\u6cd5\uff08\u4e0e\u00a0<code>arr.find<\/code>\uff09\u5177\u6709\u76f8\u540c\u7684\u8bed\u6cd5\uff0c\u4f46\u5b83\u8fd4\u56de\u627e\u5230\u7684\u5143\u7d20\u7684\u7d22\u5f15\uff0c\u800c\u4e0d\u662f\u5143\u7d20\u672c\u8eab\u3002\u5982\u679c\u6ca1\u627e\u5230\uff0c\u5219\u8fd4\u56de\u00a0<code>-1<\/code>\u3002<br \/>\narr.findLastIndex\u65b9\u6cd5\u7c7b\u4f3c\u4e8e\u00a0<code>findIndex<\/code>\uff0c\u4f46\u4ece\u53f3\u5411\u5de6\u641c\u7d22\uff0c\u7c7b\u4f3c\u4e8e\u00a0<code>lastIndexOf<\/code>\u3002<\/p>\n<h5>filter<\/h5>\n<p><code>find<\/code>\u00a0\u65b9\u6cd5\u641c\u7d22\u7684\u662f\u4f7f\u51fd\u6570\u8fd4\u56de\u00a0<code>true<\/code>\u00a0\u7684\u7b2c\u4e00\u4e2a\uff08\u5355\u4e2a\uff09\u5143\u7d20\u3002<br \/>\n\u5982\u679c\u9700\u8981\u5339\u914d\u7684\u6709\u5f88\u591a\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/filter\">arr.filter(fn)<\/a>\u3002<br \/>\n\u8bed\u6cd5\u4e0e\u00a0<code>find<\/code>\u00a0\u5927\u81f4\u76f8\u540c\uff0c\u4f46\u662f\u00a0<code>filter<\/code>\u00a0\u8fd4\u56de\u7684\u662f\u6240\u6709\u5339\u914d\u5143\u7d20\u7ec4\u6210\u7684\u6570\u7ec4\uff1a<\/p>\n<pre><code class=\"language-js\">let results = arr.filter(function(item, index, array) {\n  \/\/ \u5982\u679c true item \u88ab push \u5230 results\uff0c\u8fed\u4ee3\u7ee7\u7eed\n  \/\/ \u5982\u679c\u4ec0\u4e48\u90fd\u6ca1\u627e\u5230\uff0c\u5219\u8fd4\u56de\u7a7a\u6570\u7ec4\n});\n<\/code><\/pre>\n<pre><code class=\"language-js\">let users = [\n  {id: 1, name: &quot;John&quot;},\n  {id: 2, name: &quot;Pete&quot;},\n  {id: 3, name: &quot;Mary&quot;}\n];\n\n\/\/ \u8fd4\u56de\u524d\u4e24\u4e2a\u7528\u6237\u7684\u6570\u7ec4\nlet someUsers = users.filter(item =&gt; item.id &lt; 3);\n\nalert(someUsers.length); \/\/ 2\n<\/code><\/pre>\n<h4>\u8f6c\u6362\u6570\u7ec4<\/h4>\n<h5>map<\/h5>\n<p>map \u65b9\u6cd5\u662f\u6700\u6709\u7528\u548c\u7ecf\u5e38\u4f7f\u7528\u7684\u65b9\u6cd5\u4e4b\u4e00\u3002<br \/>\n\u5b83\u5bf9\u6570\u7ec4\u7684\u6bcf\u4e2a\u5143\u7d20\u90fd\u8c03\u7528\u51fd\u6570\uff0c\u5e76\u8fd4\u56de\u7ed3\u679c\u6570\u7ec4\u3002<\/p>\n<pre><code class=\"language-js\">let result = arr.map(function(item, index, array) {\n  \/\/ \u8fd4\u56de\u65b0\u503c\u800c\u4e0d\u662f\u5f53\u524d\u5143\u7d20\n})\n<\/code><\/pre>\n<p>\u5728\u8fd9\u91cc\u6211\u4eec\u5c06\u6bcf\u4e2a\u5143\u7d20\u8f6c\u6362\u4e3a\u5b83\u7684\u5b57\u7b26\u4e32\u957f\u5ea6<\/p>\n<pre><code class=\"language-js\">let lengths = [&quot;Bilbo&quot;, &quot;Gandalf&quot;, &quot;Nazgul&quot;].map(item =&gt; item.length);\nalert(lengths); \/\/ 5,7,6\n<\/code><\/pre>\n<h5>sort<\/h5>\n<p>sort \u65b9\u6cd5\u5bf9\u6570\u7ec4\u8fdb\u884c\u00a0<strong>\u539f\u4f4d\uff08in-place\uff09<\/strong>\u00a0\u6392\u5e8f\uff0c\u66f4\u6539\u5143\u7d20\u7684\u987a\u5e8f\u3002(\u8bd1\u6ce8\uff1a\u539f\u4f4d\u662f\u6307\u5728\u6b64\u6570\u7ec4\u5185\uff0c\u800c\u975e\u751f\u6210\u4e00\u4e2a\u65b0\u6570\u7ec4\u3002)<br \/>\n\u5b83\u8fd8\u8fd4\u56de\u6392\u5e8f\u540e\u7684\u6570\u7ec4\uff0c\u4f46\u662f\u8fd4\u56de\u503c\u901a\u5e38\u4f1a\u88ab\u5ffd\u7565\uff0c\u56e0\u4e3a\u4fee\u6539\u4e86\u00a0<code>arr<\/code>\u00a0\u672c\u8eab\u3002<\/p>\n<pre><code class=\"language-js\">let arr = [ 1, 2, 15 ];\n\n\/\/ \u8be5\u65b9\u6cd5\u91cd\u65b0\u6392\u5217 arr \u7684\u5185\u5bb9\narr.sort();\n\nalert( arr );  \/\/ 1, 15, 2\n<\/code><\/pre>\n<p><strong>\u8fd9\u4e9b\u5143\u7d20\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u88ab\u6309\u5b57\u7b26\u4e32\u8fdb\u884c\u6392\u5e8f\u3002<\/strong><br \/>\n\u4ece\u5b57\u9762\u4e0a\u770b\uff0c\u6240\u6709\u5143\u7d20\u90fd\u88ab\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\uff0c\u7136\u540e\u8fdb\u884c\u6bd4\u8f83\u3002\u5bf9\u4e8e\u5b57\u7b26\u4e32\uff0c\u6309\u7167\u8bcd\u5178\u987a\u5e8f\u8fdb\u884c\u6392\u5e8f\uff0c\u5b9e\u9645\u4e0a\u5e94\u8be5\u662f\u00a0<code>&quot;2&quot; &gt; &quot;15&quot;<\/code>\u3002<br \/>\n\u8981\u4f7f\u7528\u6211\u4eec\u81ea\u5df1\u7684\u6392\u5e8f\u987a\u5e8f\uff0c\u6211\u4eec\u9700\u8981\u63d0\u4f9b\u4e00\u4e2a\u51fd\u6570\u4f5c\u4e3a\u00a0<code>arr.sort()<\/code>\u00a0\u7684\u53c2\u6570\u3002<br \/>\n\u8be5\u51fd\u6570\u5e94\u8be5\u6bd4\u8f83\u4e24\u4e2a\u4efb\u610f\u503c\u5e76\u8fd4\u56de<\/p>\n<pre><code class=\"language-js\">function compareNumeric(a, b) {\n  if (a &gt; b) return 1;\n  if (a == b) return 0;\n  if (a &lt; b) return -1;\n}\n\nlet arr = [ 1, 2, 15 ];\n\narr.sort(compareNumeric);\n\nalert(arr);  \/\/ 1, 2, 15\n<\/code><\/pre>\n<p>\u73b0\u5728\u7ed3\u679c\u7b26\u5408\u9884\u671f\u4e86\u3002<br \/>\n\u6211\u4eec\u601d\u8003\u4e00\u4e0b\u8fd9\u513f\u53d1\u751f\u4e86\u4ec0\u4e48\u3002<code>arr<\/code>\u00a0\u53ef\u4ee5\u662f\u7531\u4efb\u4f55\u5185\u5bb9\u7ec4\u6210\u7684\u6570\u7ec4\uff0c\u5bf9\u5417\uff1f\u5b83\u53ef\u80fd\u5305\u542b\u6570\u5b57\u3001\u5b57\u7b26\u4e32\u3001\u5bf9\u8c61\u6216\u5176\u4ed6\u4efb\u4f55\u5185\u5bb9\u3002\u6211\u4eec\u6709\u4e00\u7ec4\u00a0<strong>\u4e00\u4e9b\u5143\u7d20<\/strong>\u3002\u8981\u5bf9\u5176\u8fdb\u884c\u6392\u5e8f\uff0c\u6211\u4eec\u9700\u8981\u4e00\u4e2a\u00a0<strong>\u6392\u5e8f\u51fd\u6570<\/strong>\u00a0\u6765\u786e\u8ba4\u5982\u4f55\u6bd4\u8f83\u8fd9\u4e9b\u5143\u7d20\u3002\u9ed8\u8ba4\u662f\u6309\u5b57\u7b26\u4e32\u8fdb\u884c\u6392\u5e8f\u7684\u3002<br \/>\n<code>arr.sort(fn)<\/code>\u00a0\u65b9\u6cd5\u5b9e\u73b0\u4e86\u901a\u7528\u7684\u6392\u5e8f\u7b97\u6cd5\u3002\u6211\u4eec\u4e0d\u9700\u8981\u5173\u5fc3\u5b83\u7684\u5185\u90e8\u5de5\u4f5c\u539f\u7406\uff08\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u90fd\u662f\u7ecf\u8fc7\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Quicksort\">\u5feb\u901f\u6392\u5e8f<\/a>\u00a0\u6216\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Timsort\">Timsort<\/a>\u00a0\u7b97\u6cd5\u4f18\u5316\u7684\uff09\u3002\u5b83\u5c06\u904d\u5386\u6570\u7ec4\uff0c\u4f7f\u7528\u63d0\u4f9b\u7684\u51fd\u6570\u6bd4\u8f83\u5176\u5143\u7d20\u5e76\u5bf9\u5176\u91cd\u65b0\u6392\u5e8f\uff0c\u6211\u4eec\u6240\u9700\u8981\u7684\u5c31\u662f\u63d0\u4f9b\u6267\u884c\u6bd4\u8f83\u7684\u51fd\u6570\u00a0<code>fn<\/code>\u3002<\/p>\n<p>\u987a\u4fbf\u8bf4\u4e00\u53e5\uff0c\u5982\u679c\u6211\u4eec\u60f3\u77e5\u9053\u8981\u6bd4\u8f83\u54ea\u4e9b\u5143\u7d20 \u2014\u2014 \u90a3\u4e48\u4ec0\u4e48\u90fd\u4e0d\u4f1a\u963b\u6b62 alert \u5b83\u4eec<\/p>\n<pre><code class=\"language-js\">[1, -2, 15, 2, 0, 8].sort(function(a, b) {\n  alert( a + &quot; &lt;&gt; &quot; + b );\n  return a - b;\n});\n<\/code><\/pre>\n<p>\u8be5\u7b97\u6cd5\u53ef\u4ee5\u5728\u6b64\u8fc7\u7a0b\u4e2d\uff0c\u5c06\u4e00\u4e2a\u5143\u7d20\u4e0e\u591a\u4e2a\u5176\u4ed6\u5143\u7d20\u8fdb\u884c\u6bd4\u8f83\uff0c\u4f46\u662f\u5b83\u4f1a\u5c1d\u8bd5\u8fdb\u884c\u5c3d\u53ef\u80fd\u5c11\u7684\u6bd4\u8f83\u3002<\/p>\n<blockquote>\n<p>\u6bd4\u8f83\u51fd\u6570\u53ef\u4ee5\u8fd4\u56de\u4efb\u4f55\u6570\u5b57<br \/>\n\u5b9e\u9645\u4e0a\uff0c\u6bd4\u8f83\u51fd\u6570\u53ea\u9700\u8981\u8fd4\u56de\u4e00\u4e2a\u6b63\u6570\u8868\u793a\u201c\u5927\u4e8e\u201d\uff0c\u4e00\u4e2a\u8d1f\u6570\u8868\u793a\u201c\u5c0f\u4e8e\u201d\u3002<br \/>\n\u901a\u8fc7\u8fd9\u4e2a\u539f\u7406\u6211\u4eec\u53ef\u4ee5\u7f16\u5199\u66f4\u77ed\u7684\u51fd\u6570<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let arr = [ 1, 2, 15 ];\narr.sort(function(a, b) { return a - b; });\nalert(arr);  \/\/ 1, 2, 15\n<\/code><\/pre>\n<blockquote>\n<p>\u7bad\u5934\u51fd\u6570\u6700\u597d<br \/>\n\u4f60\u8fd8\u8bb0\u5f97\u00a0<a href=\"https:\/\/zh.javascript.info\/arrow-functions-basics\">\u7bad\u5934\u51fd\u6570<\/a>\u00a0\u5417\uff1f\u8fd9\u91cc\u4f7f\u7528\u7bad\u5934\u51fd\u6570\u4f1a\u66f4\u52a0\u7b80\u6d01\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">arr.sort( (a, b) =&gt; a - b );\n<\/code><\/pre>\n<blockquote>\n<p>\u4f7f\u7528\u00a0<code>localeCompare<\/code>\u00a0for strings<br \/>\n\u4f60\u8bb0\u5f97\u00a0<a href=\"https:\/\/zh.javascript.info\/string#correct-comparisons\">\u5b57\u7b26\u4e32\u6bd4\u8f83<\/a>\u00a0\u7b97\u6cd5\u5417\uff1f\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5b83\u901a\u8fc7\u5b57\u6bcd\u7684\u4ee3\u7801\u6bd4\u8f83\u5b57\u6bcd\u3002<br \/>\n\u5bf9\u4e8e\u8bb8\u591a\u5b57\u6bcd\uff0c\u6700\u597d\u4f7f\u7528\u00a0<code>str.localeCompare<\/code>\u00a0\u65b9\u6cd5\u6b63\u786e\u5730\u5bf9\u5b57\u6bcd\u8fdb\u884c\u6392\u5e8f\uff0c\u4f8b\u5982\u00a0<code>\u00d6<\/code>\u3002<br \/>\n\u4f8b\u5982\uff0c\u8ba9\u6211\u4eec\u7528\u5fb7\u8bed\u5bf9\u51e0\u4e2a\u56fd\u5bb6\/\u5730\u533a\u8fdb\u884c\u6392\u5e8f\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let countries = ['\u00d6sterreich', 'Andorra', 'Vietnam'];\n\nalert( countries.sort( (a, b) =&gt; a &gt; b ? 1 : -1) ); \/\/ Andorra, Vietnam, \u00d6sterreich\uff08\u9519\u7684\uff09\n\nalert( countries.sort( (a, b) =&gt; a.localeCompare(b) ) ); \/\/ Andorra,\u00d6sterreich,Vietnam\uff08\u5bf9\u7684\uff01\uff09\n<\/code><\/pre>\n<h5>reverse<\/h5>\n<p>reverse \u65b9\u6cd5\u7528\u4e8e\u98a0\u5012\u00a0<code>arr<\/code>\u00a0\u4e2d\u5143\u7d20\u7684\u987a\u5e8f\uff0c\u4f1a\u6539\u53d8arr\u3002<\/p>\n<pre><code class=\"language-js\">let arr = [1, 2, 3, 4, 5];\narr.reverse(); \/\/ [5, 4, 3, 2, 1]\n<\/code><\/pre>\n<p>\u5b83\u4e5f\u4f1a\u8fd4\u56de\u98a0\u5012\u540e\u7684\u6570\u7ec4\u00a0<code>arr<\/code>\u3002<\/p>\n<h5>split join<\/h5>\n<p>\u4e3e\u4e00\u4e2a\u73b0\u5b9e\u751f\u6d3b\u573a\u666f\u7684\u4f8b\u5b50\u3002\u6211\u4eec\u6b63\u5728\u7f16\u5199\u4e00\u4e2a\u6d88\u606f\u5e94\u7528\u7a0b\u5e8f\uff0c\u5e76\u4e14\u8be5\u4eba\u5458\u8f93\u5165\u4ee5\u9017\u53f7\u5206\u9694\u7684\u63a5\u6536\u8005\u5217\u8868\uff1a<code>John, Pete, Mary<\/code>\u3002\u4f46\u5bf9\u6211\u4eec\u6765\u8bf4\uff0c\u540d\u5b57\u6570\u7ec4\u6bd4\u5355\u4e2a\u5b57\u7b26\u4e32\u8212\u9002\u5f97\u591a\u3002\u600e\u4e48\u505a\u624d\u80fd\u83b7\u5f97\u8fd9\u6837\u7684\u6570\u7ec4\u5462\uff1f<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/split\">str.split(delim)<\/a>\u00a0\u65b9\u6cd5\u53ef\u4ee5\u505a\u5230\u3002\u5b83\u901a\u8fc7\u7ed9\u5b9a\u7684\u5206\u9694\u7b26\u00a0<code>delim<\/code>\u00a0\u5c06\u5b57\u7b26\u4e32\u5206\u5272\u6210\u4e00\u4e2a\u6570\u7ec4\u3002<br \/>\n\u5728\u4e0b\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u7528\u201c\u9017\u53f7\u540e\u8ddf\u7740\u4e00\u4e2a\u7a7a\u683c\u201d\u4f5c\u4e3a\u5206\u9694\u7b26\uff1a<\/p>\n<pre><code class=\"language-js\">let names = 'Bilbo, Gandalf, Nazgul';\n\nlet arr = names.split(', ');\n\nfor (let name of arr) {\n  alert( `A message to ${name}.` ); \/\/ A message to Bilbo\uff08\u548c\u5176\u4ed6\u540d\u5b57\uff09\n}\n<\/code><\/pre>\n<p><code>split<\/code>\u00a0\u65b9\u6cd5\u6709\u4e00\u4e2a\u53ef\u9009\u7684\u7b2c\u4e8c\u4e2a\u6570\u5b57\u53c2\u6570 \u2014\u2014 \u5bf9\u6570\u7ec4\u957f\u5ea6\u7684\u9650\u5236\u3002\u5982\u679c\u63d0\u4f9b\u4e86\uff0c\u90a3\u4e48\u989d\u5916\u7684\u5143\u7d20\u4f1a\u88ab\u5ffd\u7565\u3002\u4f46\u5b9e\u9645\u4e0a\u5b83\u5f88\u5c11\u4f7f\u7528<\/p>\n<pre><code class=\"language-js\">let arr = 'Bilbo, Gandalf, Nazgul, Saruman'.split(', ', 2);\n\nalert(arr); \/\/ Bilbo, Gandalf\n<\/code><\/pre>\n<blockquote>\n<p>\u62c6\u5206\u4e3a\u5b57\u6bcd<br \/>\n\u8c03\u7528\u5e26\u6709\u7a7a\u53c2\u6570\u00a0<code>s<\/code>\u00a0\u7684\u00a0<code>split(s)<\/code>\uff0c\u4f1a\u5c06\u5b57\u7b26\u4e32\u62c6\u5206\u4e3a\u5b57\u6bcd\u6570\u7ec4\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let str = &quot;test&quot;;\n\nalert( str.split('') ); \/\/ t,e,s,t\n<\/code><\/pre>\n<p><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/join\">arr.join(glue)<\/a>\u00a0\u4e0e\u00a0<code>split<\/code>\u00a0\u76f8\u53cd\u3002\u5b83\u4f1a\u5728\u5b83\u4eec\u4e4b\u95f4\u521b\u5efa\u4e00\u4e32\u7531\u00a0<code>glue<\/code>\u00a0\u7c98\u5408\u7684\u00a0<code>arr<\/code>\u00a0\u9879\u3002<\/p>\n<pre><code class=\"language-js\">let arr = ['Bilbo', 'Gandalf', 'Nazgul'];\n\nlet str = arr.join(';'); \/\/ \u4f7f\u7528\u5206\u53f7 ; \u5c06\u6570\u7ec4\u7c98\u5408\u6210\u5b57\u7b26\u4e32\n\nalert( str ); \/\/ Bilbo;Gandalf;Nazgul\n<\/code><\/pre>\n<h5>reduce reduceRight<\/h5>\n<p>\u5f53\u6211\u4eec\u9700\u8981\u904d\u5386\u4e00\u4e2a\u6570\u7ec4\u65f6 \u2014\u2014 \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>forEach<\/code>\uff0c<code>for<\/code>\u00a0\u6216\u00a0<code>for..of<\/code>\u3002<br \/>\n\u5f53\u6211\u4eec\u9700\u8981\u904d\u5386\u5e76\u8fd4\u56de\u6bcf\u4e2a\u5143\u7d20\u7684\u6570\u636e\u65f6 \u2014\u2014 \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>map<\/code>\u3002<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/reduce\">arr.reduce<\/a>\u00a0\u65b9\u6cd5\u548c\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/reduceRight\">arr.reduceRight<\/a>\u00a0\u65b9\u6cd5\u548c\u4e0a\u9762\u7684\u79cd\u7c7b\u5dee\u4e0d\u591a\uff0c\u4f46\u7a0d\u5fae\u590d\u6742\u4e00\u70b9\u3002\u5b83\u4eec\u7528\u4e8e\u6839\u636e\u6570\u7ec4\u8ba1\u7b97\u5355\u4e2a\u503c\u3002<br \/>\n\u8bed\u6cd5\u662f\uff1a<\/p>\n<pre><code class=\"language-js\">let value = arr.reduce(function(accumulator, item, index, array) {\n  \/\/ ...\n}, [initial]);\n<\/code><\/pre>\n<p>\u8be5\u51fd\u6570\u4e00\u4e2a\u63a5\u4e00\u4e2a\u5730\u5e94\u7528\u4e8e\u6240\u6709\u6570\u7ec4\u5143\u7d20\uff0c\u5e76\u5c06\u5176\u7ed3\u679c\u201c\u642c\u8fd0\uff08carry on\uff09\u201d\u5230\u4e0b\u4e00\u4e2a\u8c03\u7528\u3002<br \/>\n\u53c2\u6570\uff1a<\/p>\n<ul>\n<li><code>accumulator<\/code>\u00a0\u2014\u2014 \u662f\u4e0a\u4e00\u4e2a\u51fd\u6570\u8c03\u7528\u7684\u7ed3\u679c\uff0c\u7b2c\u4e00\u6b21\u7b49\u4e8e\u00a0<code>initial<\/code>\uff08\u5982\u679c\u63d0\u4f9b\u4e86\u00a0<code>initial<\/code>\u00a0\u7684\u8bdd\uff09\u3002<\/li>\n<li><code>item<\/code>\u00a0\u2014\u2014 \u5f53\u524d\u7684\u6570\u7ec4\u5143\u7d20\u3002<\/li>\n<li><code>index<\/code>\u00a0\u2014\u2014 \u5f53\u524d\u7d22\u5f15\u3002<\/li>\n<li><code>arr<\/code>\u00a0\u2014\u2014 \u6570\u7ec4\u672c\u8eab\u3002<br \/>\n\u5e94\u7528\u51fd\u6570\u65f6\uff0c\u4e0a\u4e00\u4e2a\u51fd\u6570\u8c03\u7528\u7684\u7ed3\u679c\u5c06\u4f5c\u4e3a\u7b2c\u4e00\u4e2a\u53c2\u6570\u4f20\u9012\u7ed9\u4e0b\u4e00\u4e2a\u51fd\u6570\u3002<br \/>\n\u56e0\u6b64\uff0c\u7b2c\u4e00\u4e2a\u53c2\u6570\u672c\u8d28\u4e0a\u662f\u7d2f\u52a0\u5668\uff0c\u7528\u4e8e\u5b58\u50a8\u6240\u6709\u5148\u524d\u6267\u884c\u7684\u7ec4\u5408\u7ed3\u679c\u3002\u6700\u540e\uff0c\u5b83\u6210\u4e3a\u00a0<code>reduce<\/code>\u00a0\u7684\u7ed3\u679c\u3002<br \/>\n\u542c\u8d77\u6765\u590d\u6742\u5417\uff1f<br \/>\n\u638c\u63e1\u8fd9\u4e2a\u77e5\u8bc6\u70b9\u7684\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u5c31\u662f\u901a\u8fc7\u793a\u4f8b\u3002<br \/>\n\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u901a\u8fc7\u4e00\u884c\u4ee3\u7801\u5f97\u5230\u4e00\u4e2a\u6570\u7ec4\u7684\u603b\u548c\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let arr = [1, 2, 3, 4, 5];\n\nlet result = arr.reduce((sum, current) =&gt; sum + current, 0);\n\nalert(result); \/\/ 15\n<\/code><\/pre>\n<p>\u4f20\u9012\u7ed9 reduce \u7684\u51fd\u6570\u4ec5\u4f7f\u7528\u4e86 2 \u4e2a\u53c2\u6570\uff0c\u901a\u5e38\u8fd9\u5c31\u8db3\u591f\u4e86\u3002<br \/>\n\u8ba9\u6211\u4eec\u770b\u770b\u7ec6\u8282\uff0c\u5230\u5e95\u53d1\u751f\u4e86\u4ec0\u4e48\u3002<br \/>\n\u5728\u7b2c\u4e00\u6b21\u8fd0\u884c\u65f6\uff0csum \u7684\u503c\u4e3a\u521d\u59cb\u503c initial\uff08reduce \u7684\u6700\u540e\u4e00\u4e2a\u53c2\u6570\uff09\uff0c\u7b49\u4e8e 0\uff0ccurrent \u662f\u7b2c\u4e00\u4e2a\u6570\u7ec4\u5143\u7d20\uff0c\u7b49\u4e8e 1\u3002\u6240\u4ee5\u51fd\u6570\u8fd0\u884c\u7684\u7ed3\u679c\u662f 1\u3002<br \/>\n\u5728\u7b2c\u4e8c\u6b21\u8fd0\u884c\u65f6\uff0csum = 1\uff0c\u6211\u4eec\u5c06\u7b2c\u4e8c\u4e2a\u6570\u7ec4\u5143\u7d20\uff082\uff09\u4e0e\u5176\u76f8\u52a0\u5e76\u8fd4\u56de\u3002<br \/>\n\u5728\u7b2c\u4e09\u6b21\u8fd0\u884c\u4e2d\uff0csum = 3\uff0c\u6211\u4eec\u7ee7\u7eed\u628a\u4e0b\u4e00\u4e2a\u5143\u7d20\u4e0e\u5176\u76f8\u52a0\uff0c\u4ee5\u6b64\u7c7b\u63a8\u2026\u2026<\/p>\n<p>\u7701\u7565\u521d\u59cb\u503c\u7ed3\u679c\u662f\u4e00\u6837\u7684\u3002\u8fd9\u662f\u56e0\u4e3a\u5982\u679c\u6ca1\u6709\u521d\u59cb\u503c\uff0c\u90a3\u4e48\u00a0<code>reduce<\/code>\u00a0\u4f1a\u5c06\u6570\u7ec4\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u4f5c\u4e3a\u521d\u59cb\u503c\uff0c\u5e76\u4ece\u7b2c\u4e8c\u4e2a\u5143\u7d20\u5f00\u59cb\u8fed\u4ee3\u3002<br \/>\n\u4f46\u662f\u8fd9\u79cd\u4f7f\u7528\u9700\u8981\u975e\u5e38\u5c0f\u5fc3\u3002\u5982\u679c\u6570\u7ec4\u4e3a\u7a7a\uff0c\u90a3\u4e48\u5728\u6ca1\u6709\u521d\u59cb\u503c\u7684\u60c5\u51b5\u4e0b\u8c03\u7528\u00a0<code>reduce<\/code>\u00a0\u4f1a\u5bfc\u81f4\u9519\u8bef\u3002<br \/>\n\u5efa\u8bae\u59cb\u7ec8\u6307\u5b9a\u521d\u59cb\u503c\u3002<\/p>\n<p>arr.reduceRight\u548carr.reduce\u65b9\u6cd5\u7684\u529f\u80fd\u4e00\u6837\uff0c\u53ea\u662f\u904d\u5386\u4e3a\u4ece\u53f3\u5230\u5de6\u3002<\/p>\n<h4>Array.isArray<\/h4>\n<p>\u6570\u7ec4\u662f\u57fa\u4e8e\u5bf9\u8c61\u7684\uff0c\u4e0d\u6784\u6210\u5355\u72ec\u7684\u8bed\u8a00\u7c7b\u578b\u3002<br \/>\n\u6240\u4ee5\u00a0<code>typeof<\/code>\u00a0\u4e0d\u80fd\u5e2e\u52a9\u4ece\u6570\u7ec4\u4e2d\u533a\u5206\u51fa\u666e\u901a\u5bf9\u8c61<br \/>\n\u2026\u2026\u4f46\u662f\u6570\u7ec4\u7ecf\u5e38\u88ab\u4f7f\u7528\uff0c\u56e0\u6b64\u6709\u4e00\u79cd\u7279\u6b8a\u7684\u65b9\u6cd5\u7528\u4e8e\u5224\u65ad\uff1a<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/isArray\">Array.isArray(value)<\/a>\u3002\u5982\u679c\u00a0<code>value<\/code>\u00a0\u662f\u4e00\u4e2a\u6570\u7ec4\uff0c\u5219\u8fd4\u56de\u00a0<code>true<\/code>\uff1b\u5426\u5219\u8fd4\u56de\u00a0<code>false<\/code>\u3002<\/p>\n<h4>\u5927\u591a\u6570\u65b9\u6cd5\u90fd\u652f\u6301 thisArg<\/h4>\n<p>\u51e0\u4e4e\u6240\u6709\u8c03\u7528\u51fd\u6570\u7684\u6570\u7ec4\u65b9\u6cd5 \u2014\u2014 \u6bd4\u5982\u00a0<code>find<\/code>\uff0c<code>filter<\/code>\uff0c<code>map<\/code>\uff0c\u9664\u4e86\u00a0<code>sort<\/code>\u00a0\u662f\u4e00\u4e2a\u7279\u4f8b\uff0c\u90fd\u63a5\u53d7\u4e00\u4e2a\u53ef\u9009\u7684\u9644\u52a0\u53c2\u6570\u00a0<code>thisArg<\/code>\u3002<br \/>\n\u4e0a\u9762\u7684\u90e8\u5206\u4e2d\u6ca1\u6709\u89e3\u91ca\u8be5\u53c2\u6570\uff0c\u56e0\u4e3a\u8be5\u53c2\u6570\u5f88\u5c11\u4f7f\u7528\u3002\u4f46\u662f\u4e3a\u4e86\u5b8c\u6574\u6027\uff0c\u6211\u4eec\u9700\u8981\u8bb2\u8bb2\u5b83\u3002<\/p>\n<pre><code class=\"language-js\">arr.find(func, thisArg);\narr.filter(func, thisArg);\narr.map(func, thisArg);\n\/\/ ...\n\/\/ thisArg \u662f\u53ef\u9009\u7684\u6700\u540e\u4e00\u4e2a\u53c2\u6570\n<\/code><\/pre>\n<p><code>thisArg<\/code>\u00a0\u53c2\u6570\u7684\u503c\u5728\u00a0<code>func<\/code>\u00a0\u4e2d\u53d8\u4e3a\u00a0<code>this<\/code>\u3002<br \/>\n\u4f8b\u5982\uff0c\u5728\u8fd9\u91cc\u6211\u4eec\u4f7f\u7528\u00a0<code>army<\/code>\u00a0\u5bf9\u8c61\u65b9\u6cd5\u4f5c\u4e3a\u8fc7\u6ee4\u5668\uff0c<code>thisArg<\/code>\u00a0\u7528\u4e8e\u4f20\u9012\u4e0a\u4e0b\u6587\uff08passes the context\uff09\uff1a<\/p>\n<pre><code class=\"language-js\">let army = {\n  minAge: 18,\n  maxAge: 27,\n  canJoin(user) {\n    return user.age &gt;= this.minAge &amp;&amp; user.age &lt; this.maxAge;\n  }\n};\n\nlet users = [\n  {age: 16},\n  {age: 20},\n  {age: 23},\n  {age: 30}\n];\n\n\/\/ \u627e\u5230 army.canJoin \u8fd4\u56de true \u7684 user\nlet soldiers = users.filter(army.canJoin, army);\n\nalert(soldiers.length); \/\/ 2\nalert(soldiers[0].age); \/\/ 20\nalert(soldiers[1].age); \/\/ 23\n<\/code><\/pre>\n<p>\u5982\u679c\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\u6211\u4eec\u4f7f\u7528\u4e86\u00a0<code>users.filter(army.canJoin)<\/code>\uff0c\u90a3\u4e48\u00a0<code>army.canJoin<\/code>\u00a0\u5c06\u88ab\u4f5c\u4e3a\u72ec\u7acb\u51fd\u6570\u8c03\u7528\uff0c\u5e76\u4e14\u8fd9\u65f6\u00a0<code>this=undefined<\/code>\uff0c\u4ece\u800c\u4f1a\u5bfc\u81f4\u5373\u65f6\u9519\u8bef\u3002<br \/>\n\u53ef\u4ee5\u7528\u00a0<code>users.filter(user =&gt; army.canJoin(user))<\/code>\u00a0\u66ff\u6362\u5bf9\u00a0<code>users.filter(army.canJoin, army)<\/code>\u00a0\u7684\u8c03\u7528\u3002\u524d\u8005\u7684\u4f7f\u7528\u9891\u7387\u66f4\u9ad8\uff0c\u56e0\u4e3a\u5bf9\u4e8e\u5927\u591a\u6570\u4eba\u6765\u8bf4\uff0c\u5b83\u66f4\u5bb9\u6613\u7406\u89e3\u3002<\/p>\n<h3>Iterable object \u53ef\u8fed\u4ee3\u5bf9\u8c61<\/h3>\n<p><strong>\u53ef\u8fed\u4ee3\uff08Iterable\uff09<\/strong>\u00a0\u5bf9\u8c61\u662f\u6570\u7ec4\u7684\u6cdb\u5316\u3002\u8fd9\u4e2a\u6982\u5ff5\u662f\u8bf4\u4efb\u4f55\u5bf9\u8c61\u90fd\u53ef\u4ee5\u88ab\u5b9a\u5236\u4e3a\u53ef\u5728\u00a0<code>for..of<\/code>\u00a0\u5faa\u73af\u4e2d\u4f7f\u7528\u7684\u5bf9\u8c61\u3002<br \/>\n\u6570\u7ec4\u662f\u53ef\u8fed\u4ee3\u7684\u3002\u4f46\u4e0d\u4ec5\u4ec5\u662f\u6570\u7ec4\u3002\u5f88\u591a\u5176\u4ed6\u5185\u5efa\u5bf9\u8c61\u4e5f\u90fd\u662f\u53ef\u8fed\u4ee3\u7684\u3002\u4f8b\u5982\u5b57\u7b26\u4e32\u4e5f\u662f\u53ef\u8fed\u4ee3\u7684\u3002<br \/>\n\u5982\u679c\u4ece\u6280\u672f\u4e0a\u8bb2\uff0c\u5bf9\u8c61\u4e0d\u662f\u6570\u7ec4\uff0c\u800c\u662f\u8868\u793a\u67d0\u7269\u7684\u96c6\u5408\uff08\u5217\u8868\uff0c\u96c6\u5408\uff09\uff0c<code>for..of<\/code>\u00a0\u662f\u4e00\u4e2a\u80fd\u591f\u904d\u5386\u5b83\u7684\u5f88\u597d\u7684\u8bed\u6cd5\uff0c\u56e0\u6b64\uff0c\u8ba9\u6211\u4eec\u6765\u770b\u770b\u5982\u4f55\u4f7f\u5176\u53d1\u6325\u4f5c\u7528\u3002<\/p>\n<h4>Symbol.iterator<\/h4>\n<p>\u6bd4\u5982\u4e00\u4e2a\u00a0<code>range<\/code>\u00a0\u5bf9\u8c61\uff0c\u5b83\u4ee3\u8868\u4e86\u4e00\u4e2a\u6570\u5b57\u533a\u95f4\uff1a<\/p>\n<pre><code class=\"language-js\">let range = {\n  from: 1,\n  to: 5\n};\n\n\/\/ \u6211\u4eec\u5e0c\u671b for..of \u8fd9\u6837\u8fd0\u884c\uff1a\n\/\/ for(let num of range) ... num=1,2,3,4,5\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u8ba9\u00a0<code>range<\/code>\u00a0\u5bf9\u8c61\u53ef\u8fed\u4ee3\uff08\u4e5f\u5c31\u8ba9\u00a0<code>for..of<\/code>\u00a0\u53ef\u4ee5\u8fd0\u884c\uff09\u6211\u4eec\u9700\u8981\u4e3a\u5bf9\u8c61\u6dfb\u52a0\u4e00\u4e2a\u540d\u4e3a\u00a0<code>Symbol.iterator<\/code>\u00a0\u7684\u65b9\u6cd5\uff08\u4e00\u4e2a\u4e13\u95e8\u7528\u4e8e\u4f7f\u5bf9\u8c61\u53ef\u8fed\u4ee3\u7684\u5185\u5efa symbol\uff09\u3002<\/p>\n<ol>\n<li>\u5f53\u00a0<code>for..of<\/code>\u00a0\u5faa\u73af\u542f\u52a8\u65f6\uff0c\u5b83\u4f1a\u8c03\u7528\u8fd9\u4e2a\u65b9\u6cd5\uff08\u5982\u679c\u6ca1\u627e\u5230\uff0c\u5c31\u4f1a\u62a5\u9519\uff09\u3002\u8fd9\u4e2a\u65b9\u6cd5\u5fc5\u987b\u8fd4\u56de\u4e00\u4e2a\u00a0<strong>\u8fed\u4ee3\u5668\uff08iterator\uff09<\/strong>\u00a0\u2014\u2014 \u4e00\u4e2a\u6709\u00a0<code>next<\/code>\u00a0\u65b9\u6cd5\u7684\u5bf9\u8c61\u3002<\/li>\n<li>\u4ece\u6b64\u5f00\u59cb\uff0c<code>for..of<\/code>\u00a0<strong>\u4ec5\u9002\u7528\u4e8e\u8fd9\u4e2a\u88ab\u8fd4\u56de\u7684\u5bf9\u8c61<\/strong>\u3002<\/li>\n<li>\u5f53\u00a0<code>for..of<\/code>\u00a0\u5faa\u73af\u5e0c\u671b\u53d6\u5f97\u4e0b\u4e00\u4e2a\u6570\u503c\uff0c\u5b83\u5c31\u8c03\u7528\u8fd9\u4e2a\u5bf9\u8c61\u7684\u00a0<code>next()<\/code>\u00a0\u65b9\u6cd5\u3002<\/li>\n<li><code>next()<\/code>\u00a0\u65b9\u6cd5\u8fd4\u56de\u7684\u7ed3\u679c\u7684\u683c\u5f0f\u5fc5\u987b\u662f\u00a0<code>{done: Boolean, value: any}<\/code>\uff0c\u5f53\u00a0<code>done=true<\/code>\u00a0\u65f6\uff0c\u8868\u793a\u5faa\u73af\u7ed3\u675f\uff0c\u5426\u5219\u00a0<code>value<\/code>\u00a0\u662f\u4e0b\u4e00\u4e2a\u503c\u3002<\/li>\n<\/ol>\n<pre><code class=\"language-js\">let range = {\n  from: 1,\n  to: 5\n};\n\n\/\/ 1. for..of \u8c03\u7528\u9996\u5148\u4f1a\u8c03\u7528\u8fd9\u4e2a\uff1a\nrange[Symbol.iterator] = function() {\n\n  \/\/ \u2026\u2026\u5b83\u8fd4\u56de\u8fed\u4ee3\u5668\u5bf9\u8c61\uff08iterator object\uff09\uff1a\n  \/\/ 2. \u63a5\u4e0b\u6765\uff0cfor..of \u4ec5\u4e0e\u4e0b\u9762\u7684\u8fed\u4ee3\u5668\u5bf9\u8c61\u4e00\u8d77\u5de5\u4f5c\uff0c\u8981\u6c42\u5b83\u63d0\u4f9b\u4e0b\u4e00\u4e2a\u503c\n  return {\n    current: this.from,\n    last: this.to,\n\n    \/\/ 3. next() \u5728 for..of \u7684\u6bcf\u4e00\u8f6e\u5faa\u73af\u8fed\u4ee3\u4e2d\u88ab\u8c03\u7528\n    next() {\n      \/\/ 4. \u5b83\u5c06\u4f1a\u8fd4\u56de {done:.., value :...} \u683c\u5f0f\u7684\u5bf9\u8c61\n      if (this.current &lt;= this.last) {\n        return { done: false, value: this.current++ };\n      } else {\n        return { done: true };\n      }\n    }\n  };\n};\n\n\/\/ \u73b0\u5728\u5b83\u53ef\u4ee5\u8fd0\u884c\u4e86\uff01\nfor (let num of range) {\n  alert(num); \/\/ 1, \u7136\u540e\u662f 2, 3, 4, 5\n}\n<\/code><\/pre>\n<p>\u8bf7\u6ce8\u610f\u53ef\u8fed\u4ee3\u5bf9\u8c61\u7684\u6838\u5fc3\u529f\u80fd\uff1a\u5173\u6ce8\u70b9\u5206\u79bb\u3002<\/p>\n<ul>\n<li><code>range<\/code>\u00a0\u81ea\u8eab\u6ca1\u6709\u00a0<code>next()<\/code>\u00a0\u65b9\u6cd5\u3002<\/li>\n<li>\u76f8\u53cd\uff0c\u662f\u901a\u8fc7\u8c03\u7528\u00a0<code>range[Symbol.iterator]()<\/code>\u00a0\u521b\u5efa\u4e86\u53e6\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5373\u6240\u8c13\u7684\u201c\u8fed\u4ee3\u5668\u201d\u5bf9\u8c61\uff0c\u5e76\u4e14\u5b83\u7684\u00a0<code>next<\/code>\u00a0\u4f1a\u4e3a\u8fed\u4ee3\u751f\u6210\u503c\u3002<br \/>\n\u56e0\u6b64\uff0c\u8fed\u4ee3\u5668\u5bf9\u8c61\u548c\u4e0e\u5176\u8fdb\u884c\u8fed\u4ee3\u7684\u5bf9\u8c61\u662f\u5206\u5f00\u7684\u3002<br \/>\n\u4ece\u6280\u672f\u4e0a\u8bf4\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u5b83\u4eec\u5408\u5e76\uff0c\u5e76\u4f7f\u7528\u00a0<code>range<\/code>\u00a0\u81ea\u8eab\u4f5c\u4e3a\u8fed\u4ee3\u5668\u6765\u7b80\u5316\u4ee3\u7801\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let range = {\n  from: 1,\n  to: 5,\n\n  [Symbol.iterator]() {\n    this.current = this.from;\n    return this;\n  },\n\n  next() {\n    if (this.current &lt;= this.to) {\n      return { done: false, value: this.current++ };\n    } else {\n      return { done: true };\n    }\n  }\n};\n\nfor (let num of range) {\n  alert(num); \/\/ 1, \u7136\u540e\u662f 2, 3, 4, 5\n}\n<\/code><\/pre>\n<p>\u73b0\u5728\u00a0<code>range[Symbol.iterator]()<\/code>\u00a0\u8fd4\u56de\u7684\u662f\u00a0<code>range<\/code>\u00a0\u5bf9\u8c61\u81ea\u8eab\uff1a\u5b83\u5305\u62ec\u4e86\u5fc5\u9700\u7684\u00a0<code>next()<\/code>\u00a0\u65b9\u6cd5\uff0c\u5e76\u901a\u8fc7\u00a0<code>this.current<\/code>\u00a0\u8bb0\u5fc6\u4e86\u5f53\u524d\u7684\u8fed\u4ee3\u8fdb\u7a0b\u3002\u8fd9\u6837\u66f4\u77ed\uff0c\u5bf9\u5417\uff1f\u662f\u7684\u3002\u6709\u65f6\u8fd9\u6837\u4e5f\u53ef\u4ee5\u3002<br \/>\n\u4f46\u7f3a\u70b9\u662f\uff0c\u73b0\u5728\u4e0d\u53ef\u80fd\u540c\u65f6\u5728\u5bf9\u8c61\u4e0a\u8fd0\u884c\u4e24\u4e2a\u00a0<code>for..of<\/code>\u00a0\u5faa\u73af\u4e86\uff1a\u5b83\u4eec\u5c06\u5171\u4eab\u8fed\u4ee3\u72b6\u6001\uff0c\u56e0\u4e3a\u53ea\u6709\u4e00\u4e2a\u8fed\u4ee3\u5668\uff0c\u5373\u5bf9\u8c61\u672c\u8eab\u3002\u4f46\u662f\u4e24\u4e2a\u5e76\u884c\u7684\u00a0<code>for..of<\/code>\u00a0\u662f\u5f88\u7f55\u89c1\u7684\uff0c\u5373\u4f7f\u5728\u5f02\u6b65\u60c5\u51b5\u4e0b\u3002<\/p>\n<blockquote>\n<p>\u65e0\u7a77\u8fed\u4ee3\u5668\uff08iterator\uff09<br \/>\n\u65e0\u7a77\u8fed\u4ee3\u5668\u4e5f\u662f\u53ef\u80fd\u7684\u3002\u4f8b\u5982\uff0c\u5c06\u00a0<code>range<\/code>\u00a0\u8bbe\u7f6e\u4e3a\u00a0<code>range.to = Infinity<\/code>\uff0c\u8fd9\u65f6\u00a0<code>range<\/code>\u00a0\u5219\u6210\u4e3a\u4e86\u65e0\u7a77\u8fed\u4ee3\u5668\u3002\u6216\u8005\u6211\u4eec\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff0c\u5b83\u751f\u6210\u4e00\u4e2a\u65e0\u7a77\u4f2a\u968f\u673a\u6570\u5e8f\u5217\u3002\u4e5f\u662f\u53ef\u80fd\u7684\u3002<br \/>\n<code>next<\/code>\u00a0\u6ca1\u6709\u4ec0\u4e48\u9650\u5236\uff0c\u5b83\u53ef\u4ee5\u8fd4\u56de\u8d8a\u6765\u8d8a\u591a\u7684\u503c\uff0c\u8fd9\u662f\u6b63\u5e38\u7684\u3002<br \/>\n\u5f53\u7136\uff0c\u8fed\u4ee3\u8fd9\u79cd\u5bf9\u8c61\u7684\u00a0<code>for..of<\/code>\u00a0\u5faa\u73af\u5c06\u4e0d\u4f1a\u505c\u6b62\u3002\u4f46\u662f\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4f7f\u7528\u00a0<code>break<\/code>\u00a0\u6765\u505c\u6b62\u5b83\u3002<\/p>\n<\/blockquote>\n<h4>\u5b57\u7b26\u4e32\u662f\u53ef\u8fed\u4ee3\u7684<\/h4>\n<p>\u6570\u7ec4\u548c\u5b57\u7b26\u4e32\u662f\u4f7f\u7528\u6700\u5e7f\u6cdb\u7684\u5185\u5efa\u53ef\u8fed\u4ee3\u5bf9\u8c61\u3002<br \/>\n\u5bf9\u4e8e\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c<code>for..of<\/code>\u00a0\u904d\u5386\u5b83\u7684\u6bcf\u4e2a\u5b57\u7b26\uff1a<\/p>\n<pre><code class=\"language-js\">for (let char of &quot;test&quot;) {\n  \/\/ \u89e6\u53d1 4 \u6b21\uff0c\u6bcf\u4e2a\u5b57\u7b26\u4e00\u6b21\n  alert( char ); \/\/ t, then e, then s, then t\n}\n<\/code><\/pre>\n<p>\u5bf9\u4e8e\u4ee3\u7406\u5bf9\uff08surrogate pairs\uff09\uff0c\u5b83\u4e5f\u80fd\u6b63\u5e38\u5de5\u4f5c\uff01\uff08\u8bd1\u6ce8\uff1a\u8fd9\u91cc\u7684\u4ee3\u7406\u5bf9\u4e5f\u5c31\u6307\u7684\u662f UTF-16 \u7684\u6269\u5c55\u5b57\u7b26\uff09<\/p>\n<pre><code class=\"language-js\">let str = '\ud835\udcb3\ud83d\ude02';\nfor (let char of str) {\n    alert( char ); \/\/ \ud835\udcb3\uff0c\u7136\u540e\u662f \ud83d\ude02\n}\n<\/code><\/pre>\n<h4>\u663e\u5f0f\u8c03\u7528\u8fed\u4ee3\u5668<\/h4>\n<p>\u4e3a\u4e86\u66f4\u6df1\u5c42\u5730\u4e86\u89e3\u5e95\u5c42\u77e5\u8bc6\uff0c\u8ba9\u6211\u4eec\u6765\u770b\u770b\u5982\u4f55\u663e\u5f0f\u5730\u4f7f\u7528\u8fed\u4ee3\u5668\u3002<br \/>\n\u6211\u4eec\u5c06\u4f1a\u91c7\u7528\u4e0e\u00a0<code>for..of<\/code>\u00a0\u5b8c\u5168\u76f8\u540c\u7684\u65b9\u5f0f\u904d\u5386\u5b57\u7b26\u4e32\uff0c\u4f46\u4f7f\u7528\u7684\u662f\u76f4\u63a5\u8c03\u7528\u3002\u8fd9\u6bb5\u4ee3\u7801\u521b\u5efa\u4e86\u4e00\u4e2a\u5b57\u7b26\u4e32\u8fed\u4ee3\u5668\uff0c\u5e76\u201c\u624b\u52a8\u201d\u4ece\u4e2d\u83b7\u53d6\u503c\u3002<\/p>\n<pre><code class=\"language-js\">let str = &quot;Hello&quot;;\n\n\/\/ \u548c for..of \u505a\u76f8\u540c\u7684\u4e8b\n\/\/ for (let char of str) alert(char);\n\nlet iterator = str[Symbol.iterator]();\n\nwhile (true) {\n  let result = iterator.next();\n  if (result.done) break;\n  alert(result.value); \/\/ \u4e00\u4e2a\u63a5\u4e00\u4e2a\u5730\u8f93\u51fa\u5b57\u7b26\n}\n<\/code><\/pre>\n<p>\u5f88\u5c11\u9700\u8981\u6211\u4eec\u8fd9\u6837\u505a\uff0c\u4f46\u662f\u6bd4\u00a0<code>for..of<\/code>\u00a0\u7ed9\u4e86\u6211\u4eec\u66f4\u591a\u7684\u63a7\u5236\u6743\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u53ef\u4ee5\u62c6\u5206\u8fed\u4ee3\u8fc7\u7a0b\uff1a\u8fed\u4ee3\u4e00\u90e8\u5206\uff0c\u7136\u540e\u505c\u6b62\uff0c\u505a\u4e00\u4e9b\u5176\u4ed6\u5904\u7406\uff0c\u7136\u540e\u518d\u6062\u590d\u8fed\u4ee3\u3002<\/p>\n<h4>\u53ef\u8fed\u4ee3\uff08iterable\uff09\u548c\u7c7b\u6570\u7ec4\uff08array-like\uff09<\/h4>\n<p>\u8fd9\u4e24\u4e2a\u5b98\u65b9\u672f\u8bed\u770b\u8d77\u6765\u5dee\u4e0d\u591a\uff0c\u4f46\u5176\u5b9e\u5927\u4e0d\u76f8\u540c\u3002\u8bf7\u786e\u4fdd\u4f60\u80fd\u591f\u5145\u5206\u7406\u89e3\u5b83\u4eec\u7684\u542b\u4e49\uff0c\u4ee5\u514d\u9020\u6210\u6df7\u6dc6\u3002<\/p>\n<ul>\n<li><strong>Iterable<\/strong>\u00a0\u5982\u4e0a\u6240\u8ff0\uff0c\u662f\u5b9e\u73b0\u4e86\u00a0<code>Symbol.iterator<\/code>\u00a0\u65b9\u6cd5\u7684\u5bf9\u8c61\u3002<\/li>\n<li><strong>Array-like<\/strong>\u00a0\u662f\u6709\u7d22\u5f15\u548c\u00a0<code>length<\/code>\u00a0\u5c5e\u6027\u7684\u5bf9\u8c61\uff0c\u6240\u4ee5\u5b83\u4eec\u770b\u8d77\u6765\u5f88\u50cf\u6570\u7ec4\u3002<br \/>\n\u5f53\u6211\u4eec\u5c06 JavaScript \u7528\u4e8e\u7f16\u5199\u5728\u6d4f\u89c8\u5668\u6216\u4efb\u4f55\u5176\u4ed6\u73af\u5883\u4e2d\u7684\u5b9e\u9645\u4efb\u52a1\u65f6\uff0c\u6211\u4eec\u53ef\u80fd\u4f1a\u9047\u5230\u53ef\u8fed\u4ee3\u5bf9\u8c61\u6216\u7c7b\u6570\u7ec4\u5bf9\u8c61\uff0c\u6216\u4e24\u8005\u517c\u6709\u3002<br \/>\n\u4f8b\u5982\uff0c\u5b57\u7b26\u4e32\u5373\u662f\u53ef\u8fed\u4ee3\u7684\uff08<code>for..of<\/code>\u00a0\u5bf9\u5b83\u4eec\u6709\u6548\uff09\uff0c\u53c8\u662f\u7c7b\u6570\u7ec4\u7684\uff08\u5b83\u4eec\u6709\u6570\u503c\u7d22\u5f15\u548c\u00a0<code>length<\/code>\u00a0\u5c5e\u6027\uff09\u3002<br \/>\n\u4f46\u662f\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61\u4e5f\u8bb8\u4e0d\u662f\u7c7b\u6570\u7ec4\u5bf9\u8c61\u3002\u53cd\u4e4b\u4ea6\u7136\uff0c\u7c7b\u6570\u7ec4\u5bf9\u8c61\u53ef\u80fd\u4e0d\u53ef\u8fed\u4ee3\u3002<br \/>\n\u4f8b\u5982\uff0c\u4e0a\u9762\u4f8b\u5b50\u4e2d\u7684\u00a0<code>range<\/code>\u00a0\u662f\u53ef\u8fed\u4ee3\u7684\uff0c\u4f46\u5e76\u975e\u7c7b\u6570\u7ec4\u5bf9\u8c61\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u7d22\u5f15\u5c5e\u6027\uff0c\u4e5f\u6ca1\u6709\u00a0<code>length<\/code>\u00a0\u5c5e\u6027\u3002<br \/>\n\u53ef\u8fed\u4ee3\u5bf9\u8c61\u548c\u7c7b\u6570\u7ec4\u5bf9\u8c61\u901a\u5e38\u90fd\u00a0<strong>\u4e0d\u662f\u6570\u7ec4<\/strong>\uff0c\u5b83\u4eec\u6ca1\u6709\u00a0<code>push<\/code>\u00a0\u548c\u00a0<code>pop<\/code>\u00a0\u7b49\u65b9\u6cd5\u3002\u5982\u679c\u6211\u4eec\u6709\u4e00\u4e2a\u8fd9\u6837\u7684\u5bf9\u8c61\uff0c\u5e76\u60f3\u50cf\u6570\u7ec4\u90a3\u6837\u64cd\u4f5c\u5b83\uff0c\u90a3\u5c31\u975e\u5e38\u4e0d\u65b9\u4fbf\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u60f3\u4f7f\u7528\u6570\u7ec4\u65b9\u6cd5\u64cd\u4f5c\u00a0<code>range<\/code>\uff0c\u5e94\u8be5\u5982\u4f55\u5b9e\u73b0\u5462\uff1f<\/li>\n<\/ul>\n<h4>Array.from<\/h4>\n<p>\u6709\u4e00\u4e2a\u5168\u5c40\u65b9\u6cd5\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/from\">Array.from<\/a>\u00a0\u53ef\u4ee5\u63a5\u53d7\u4e00\u4e2a\u53ef\u8fed\u4ee3\u6216\u7c7b\u6570\u7ec4\u7684\u503c\uff0c\u5e76\u4ece\u4e2d\u83b7\u53d6\u4e00\u4e2a\u201c\u771f\u6b63\u7684\u201d\u6570\u7ec4\u3002\u7136\u540e\u6211\u4eec\u5c31\u53ef\u4ee5\u5bf9\u5176\u8c03\u7528\u6570\u7ec4\u65b9\u6cd5\u4e86\u3002<\/p>\n<pre><code class=\"language-js\">let arrayLike = {\n  0: &quot;Hello&quot;,\n  1: &quot;World&quot;,\n  length: 2\n};\n\nlet arr = Array.from(arrayLike); \/\/ (*)\nalert(arr.pop()); \/\/ World\uff08pop \u65b9\u6cd5\u6709\u6548\uff09\n<\/code><\/pre>\n<p>\u5728\u00a0<code>(*)<\/code>\u00a0\u884c\u7684\u00a0<code>Array.from<\/code>\u00a0\u65b9\u6cd5\u63a5\u53d7\u5bf9\u8c61\uff0c\u68c0\u67e5\u5b83\u662f\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61\u6216\u7c7b\u6570\u7ec4\u5bf9\u8c61\uff0c\u7136\u540e\u521b\u5efa\u4e00\u4e2a\u65b0\u6570\u7ec4\uff0c\u5e76\u5c06\u8be5\u5bf9\u8c61\u7684\u6240\u6709\u5143\u7d20\u590d\u5236\u5230\u8fd9\u4e2a\u65b0\u6570\u7ec4\u3002<br \/>\n\u5982\u679c\u662f\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff0c\u4e5f\u662f\u540c\u6837\uff1a<\/p>\n<pre><code class=\"language-js\">\/\/ \u5047\u8bbe range \u6765\u81ea\u4e0a\u6587\u7684\u4f8b\u5b50\u4e2d\nlet arr = Array.from(range);\nalert(arr); \/\/ 1,2,3,4,5 \uff08\u6570\u7ec4\u7684 toString \u8f6c\u5316\u65b9\u6cd5\u751f\u6548\uff09\n<\/code><\/pre>\n<p><code>Array.from<\/code>\u00a0\u7684\u5b8c\u6574\u8bed\u6cd5\u5141\u8bb8\u6211\u4eec\u63d0\u4f9b\u4e00\u4e2a\u53ef\u9009\u7684\u201c\u6620\u5c04\uff08mapping\uff09\u201d\u51fd\u6570\uff1a<\/p>\n<pre><code class=\"language-js\">Array.from(obj[, mapFn, thisArg])\n<\/code><\/pre>\n<p>\u53ef\u9009\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u00a0<code>mapFn<\/code>\u00a0\u53ef\u4ee5\u662f\u4e00\u4e2a\u51fd\u6570\uff0c\u8be5\u51fd\u6570\u4f1a\u5728\u5bf9\u8c61\u4e2d\u7684\u5143\u7d20\u88ab\u6dfb\u52a0\u5230\u6570\u7ec4\u524d\uff0c\u88ab\u5e94\u7528\u4e8e\u6bcf\u4e2a\u5143\u7d20\uff0c\u6b64\u5916\u00a0<code>thisArg<\/code>\u00a0\u5141\u8bb8\u6211\u4eec\u4e3a\u8be5\u51fd\u6570\u8bbe\u7f6e\u00a0<code>this<\/code>\u3002<br \/>\n<code>Array.from<\/code>\u00a0\u5c06\u4e00\u4e2a\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u5355\u4e2a\u5b57\u7b26\u7684\u6570\u7ec4\u4e0e\u00a0<code>str.split<\/code>\u00a0\u65b9\u6cd5\u4e0d\u540c\uff0c\u5b83\u4f9d\u8d56\u4e8e\u5b57\u7b26\u4e32\u7684\u53ef\u8fed\u4ee3\u7279\u6027\u3002\u2026\u2026\u4f46\u00a0<code>Array.from<\/code>\u00a0\u7cbe\u7b80\u5f88\u591a\u3002<br \/>\n\u6211\u4eec\u751a\u81f3\u53ef\u4ee5\u57fa\u4e8e\u00a0<code>Array.from<\/code>\u00a0\u521b\u5efa\u4ee3\u7406\u611f\u77e5\uff08surrogate-aware\uff09\u7684<code>slice<\/code>\u00a0\u65b9\u6cd5\uff08\u8bd1\u6ce8\uff1a\u4e5f\u5c31\u662f\u80fd\u591f\u5904\u7406 UTF-16 \u6269\u5c55\u5b57\u7b26\u7684\u00a0<code>slice<\/code>\u00a0\u65b9\u6cd5\uff09\uff1a<\/p>\n<pre><code class=\"language-js\">function slice(str, start, end) {\n  return Array.from(str).slice(start, end).join('');\n}\n\nlet str = '\ud835\udcb3\ud83d\ude02\ud867\uddf6';\n\nalert( slice(str, 1, 3) ); \/\/ \ud83d\ude02\ud867\uddf6\n\n\/\/ \u539f\u751f\u65b9\u6cd5\u4e0d\u652f\u6301\u8bc6\u522b\u4ee3\u7406\u5bf9\uff08\u8bd1\u6ce8\uff1aUTF-16 \u6269\u5c55\u5b57\u7b26\uff09\nalert( str.slice(1, 3) ); \/\/ \u4e71\u7801\uff08\u4e24\u4e2a\u4e0d\u540c UTF-16 \u6269\u5c55\u5b57\u7b26\u788e\u7247\u62fc\u63a5\u7684\u7ed3\u679c\uff09\n<\/code><\/pre>\n<h3>Map and Set,\u6620\u5c04\u4e0e\u96c6\u5408<\/h3>\n<p>\u5b66\u5230\u73b0\u5728\uff0c\u6211\u4eec\u5df2\u7ecf\u4e86\u89e3\u4e86\u4ee5\u4e0b\u590d\u6742\u7684\u6570\u636e\u7ed3\u6784\uff1a<\/p>\n<ul>\n<li>\u5bf9\u8c61\uff0c\u5b58\u50a8\u5e26\u6709\u952e\u7684\u6570\u636e\u7684\u96c6\u5408\u3002<\/li>\n<li>\u6570\u7ec4\uff0c\u5b58\u50a8\u6709\u5e8f\u96c6\u5408\u3002<br \/>\n\u4f46\u662f\u8fd8\u4e0d\u8db3\u4ee5\u5e94\u5bf9\u73b0\u5b9e\u60c5\u51b5<\/li>\n<\/ul>\n<h4>Map<\/h4>\n<p>map \u662f\u4e00\u4e2a\u5e26\u952e\u7684\u6570\u636e\u9879\u7684\u96c6\u5408\uff0c\u5c31\u50cf\u4e00\u4e2a\u00a0<code>Object<\/code>\u00a0\u4e00\u6837\u3002 \u4f46\u662f\u5b83\u4eec\u6700\u5927\u7684\u5dee\u522b\u662f\u00a0<code>Map<\/code>\u00a0\u5141\u8bb8\u4efb\u4f55\u7c7b\u578b\u7684\u952e\uff08key\uff09\u3002<br \/>\n\u5b83\u7684\u65b9\u6cd5\u548c\u5c5e\u6027\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li><code>new Map()<\/code>\u00a0\u2014\u2014 \u521b\u5efa map\u3002<\/li>\n<li><code>map.set(key, value)<\/code>\u00a0\u2014\u2014 \u6839\u636e\u952e\u5b58\u50a8\u503c\u3002<\/li>\n<li><code>map.get(key)<\/code>\u00a0\u2014\u2014 \u6839\u636e\u952e\u6765\u8fd4\u56de\u503c\uff0c\u5982\u679c\u00a0<code>map<\/code>\u00a0\u4e2d\u4e0d\u5b58\u5728\u5bf9\u5e94\u7684\u00a0<code>key<\/code>\uff0c\u5219\u8fd4\u56de\u00a0<code>undefined<\/code>\u3002<\/li>\n<li><code>map.has(key)<\/code>\u00a0\u2014\u2014 \u5982\u679c\u00a0<code>key<\/code>\u00a0\u5b58\u5728\u5219\u8fd4\u56de\u00a0<code>true<\/code>\uff0c\u5426\u5219\u8fd4\u56de\u00a0<code>false<\/code>\u3002<\/li>\n<li><code>map.delete(key)<\/code>\u00a0\u2014\u2014 \u5220\u9664\u6307\u5b9a\u952e\u7684\u503c\u3002<\/li>\n<li><code>map.clear()<\/code>\u00a0\u2014\u2014 \u6e05\u7a7a map\u3002<\/li>\n<li><code>map.size<\/code>\u00a0\u2014\u2014 \u8fd4\u56de\u5f53\u524d\u5143\u7d20\u4e2a\u6570\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let map = new Map();\n\nmap.set('1', 'str1');   \/\/ \u5b57\u7b26\u4e32\u952e\nmap.set(1, 'num1');     \/\/ \u6570\u5b57\u952e\nmap.set(true, 'bool1'); \/\/ \u5e03\u5c14\u503c\u952e\n\n\/\/ \u8fd8\u8bb0\u5f97\u666e\u901a\u7684 Object \u5417? \u5b83\u4f1a\u5c06\u952e\u8f6c\u5316\u4e3a\u5b57\u7b26\u4e32\n\/\/ Map \u5219\u4f1a\u4fdd\u7559\u952e\u7684\u7c7b\u578b\uff0c\u6240\u4ee5\u4e0b\u9762\u8fd9\u4e24\u4e2a\u7ed3\u679c\u4e0d\u540c\uff1a\nalert( map.get(1)   ); \/\/ 'num1'\nalert( map.get('1') ); \/\/ 'str1'\n\nalert( map.size ); \/\/ 3\n<\/code><\/pre>\n<blockquote>\n<p><code>map[key]<\/code>\u00a0\u4e0d\u662f\u4f7f\u7528\u00a0<code>Map<\/code>\u00a0\u7684\u6b63\u786e\u65b9\u5f0f<br \/>\n\u867d\u7136\u00a0<code>map[key]<\/code>\u00a0\u4e5f\u6709\u6548\uff0c\u4f8b\u5982\u6211\u4eec\u53ef\u4ee5\u8bbe\u7f6e\u00a0<code>map[key] = 2<\/code>\uff0c\u8fd9\u6837\u4f1a\u5c06\u00a0<code>map<\/code>\u00a0\u89c6\u4e3a JavaScript \u7684 plain object\uff0c\u56e0\u6b64\u5b83\u6697\u542b\u4e86\u6240\u6709\u76f8\u5e94\u7684\u9650\u5236\uff08\u4ec5\u652f\u6301 string\/symbol \u952e\u7b49\uff09\u3002<br \/>\n\u6240\u4ee5\u6211\u4eec\u5e94\u8be5\u4f7f\u7528\u00a0<code>map<\/code>\u00a0\u65b9\u6cd5\uff1a<code>set<\/code>\u00a0\u548c\u00a0<code>get<\/code>\u00a0\u7b49\u3002<\/p>\n<\/blockquote>\n<p>map\u8fd8\u53ef\u4ee5\u4f7f\u7528\u5bf9\u8c61\u4f5c\u4e3a\u952e<\/p>\n<pre><code class=\"language-js\">let john = { name: &quot;John&quot; };\n\n\/\/ \u5b58\u50a8\u6bcf\u4e2a\u7528\u6237\u7684\u6765\u8bbf\u6b21\u6570\nlet visitsCountMap = new Map();\n\n\/\/ john \u662f Map \u4e2d\u7684\u952e\nvisitsCountMap.set(john, 123);\n\nalert( visitsCountMap.get(john) ); \/\/ 123\n<\/code><\/pre>\n<p>\u4f7f\u7528\u5bf9\u8c61\u4f5c\u4e3a\u952e\u662f\u00a0<code>Map<\/code>\u00a0\u6700\u503c\u5f97\u6ce8\u610f\u548c\u91cd\u8981\u7684\u529f\u80fd\u4e4b\u4e00\u3002\u5728\u00a0<code>Object<\/code>\u00a0\u4e2d\uff0c\u6211\u4eec\u5219\u65e0\u6cd5\u4f7f\u7528\u5bf9\u8c61\u4f5c\u4e3a\u952e\u3002\u5728\u00a0<code>Object<\/code>\u00a0\u4e2d\u4f7f\u7528\u5b57\u7b26\u4e32\u4f5c\u4e3a\u952e\u662f\u53ef\u4ee5\u7684\uff0c\u4f46\u6211\u4eec\u65e0\u6cd5\u4f7f\u7528\u53e6\u4e00\u4e2a\u00a0<code>Object<\/code>\u00a0\u4f5c\u4e3a\u00a0<code>Object<\/code>\u00a0\u4e2d\u7684\u952e\u3002<\/p>\n<blockquote>\n<p><code>Map<\/code>\u00a0\u662f\u600e\u4e48\u6bd4\u8f83\u952e\u7684\uff1f<br \/>\n<code>Map<\/code>\u00a0\u4f7f\u7528\u00a0<a href=\"https:\/\/tc39.github.io\/ecma262\/#sec-samevaluezero\">SameValueZero<\/a>\u00a0\u7b97\u6cd5\u6765\u6bd4\u8f83\u952e\u662f\u5426\u76f8\u7b49\u3002\u5b83\u548c\u4e25\u683c\u7b49\u4e8e\u00a0<code>===<\/code>\u00a0\u5dee\u4e0d\u591a\uff0c\u4f46\u533a\u522b\u662f\u00a0<code>NaN<\/code>\u00a0\u88ab\u770b\u6210\u662f\u7b49\u4e8e\u00a0<code>NaN<\/code>\u3002\u6240\u4ee5\u00a0<code>NaN<\/code>\u00a0\u4e5f\u53ef\u4ee5\u88ab\u7528\u4f5c\u952e\u3002<br \/>\n\u8fd9\u4e2a\u7b97\u6cd5\u4e0d\u80fd\u88ab\u6539\u53d8\u6216\u8005\u81ea\u5b9a\u4e49\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u94fe\u5f0f\u8c03\u7528<br \/>\n\u6bcf\u4e00\u6b21\u00a0<code>map.set<\/code>\u00a0\u8c03\u7528\u90fd\u4f1a\u8fd4\u56de map \u672c\u8eab\uff0c\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u8fdb\u884c\u201c\u94fe\u5f0f\u201d\u8c03\u7528\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let recipeMap = new Map([\n  ['cucumber', 500],\n  ['tomatoes', 350],\n  ['onion',    50]\n]);\n\n\/\/ \u904d\u5386\u6240\u6709\u7684\u952e\uff08vegetables\uff09\nfor (let vegetable of recipeMap.keys()) {\n  alert(vegetable); \/\/ cucumber, tomatoes, onion\n}\n\n\/\/ \u904d\u5386\u6240\u6709\u7684\u503c\uff08amounts\uff09\nfor (let amount of recipeMap.values()) {\n  alert(amount); \/\/ 500, 350, 50\n}\n\n\/\/ \u904d\u5386\u6240\u6709\u7684\u5b9e\u4f53 [key, value]\nfor (let entry of recipeMap) { \/\/ \u4e0e recipeMap.entries() \u76f8\u540c\n  alert(entry); \/\/ cucumber,500 (and so on)\n}\n<\/code><\/pre>\n<h5>map\u8fed\u4ee3<\/h5>\n<p>\u5982\u679c\u8981\u5728\u00a0<code>map<\/code>\u00a0\u91cc\u4f7f\u7528\u5faa\u73af\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u4e09\u4e2a\u65b9\u6cd5\uff1a<\/p>\n<ul>\n<li><code>map.keys()<\/code>\u00a0\u2014\u2014 \u904d\u5386\u5e76\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u952e\u7684\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff0c<\/li>\n<li><code>map.values()<\/code>\u00a0\u2014\u2014 \u904d\u5386\u5e76\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u503c\u7684\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff0c<\/li>\n<li><code>map.entries()<\/code>\u00a0\u2014\u2014 \u904d\u5386\u5e76\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u5b9e\u4f53\u00a0<code>[key, value]<\/code>\u00a0\u7684\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff0c<code>for..of<\/code>\u00a0\u5728\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f7f\u7528\u7684\u5c31\u662f\u8fd9\u4e2a\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let recipeMap = new Map([\n  ['cucumber', 500],\n  ['tomatoes', 350],\n  ['onion',    50]\n]);\n\n\/\/ \u904d\u5386\u6240\u6709\u7684\u952e\uff08vegetables\uff09\nfor (let vegetable of recipeMap.keys()) {\n  alert(vegetable); \/\/ cucumber, tomatoes, onion\n}\n\n\/\/ \u904d\u5386\u6240\u6709\u7684\u503c\uff08amounts\uff09\nfor (let amount of recipeMap.values()) {\n  alert(amount); \/\/ 500, 350, 50\n}\n\n\/\/ \u904d\u5386\u6240\u6709\u7684\u5b9e\u4f53 [key, value]\nfor (let entry of recipeMap) { \/\/ \u4e0e recipeMap.entries() \u76f8\u540c\n  alert(entry); \/\/ cucumber,500 (and so on)\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u4f7f\u7528\u63d2\u5165\u987a\u5e8f<br \/>\n\u8fed\u4ee3\u7684\u987a\u5e8f\u4e0e\u63d2\u5165\u503c\u7684\u987a\u5e8f\u76f8\u540c\u3002\u4e0e\u666e\u901a\u7684\u00a0<code>Object<\/code>\u00a0\u4e0d\u540c\uff0c<code>Map<\/code>\u00a0\u4fdd\u7559\u4e86\u6b64\u987a\u5e8f\u3002<\/p>\n<\/blockquote>\n<p>\u9664\u6b64\u4e4b\u5916\uff0c<code>Map<\/code>\u00a0\u6709\u5185\u5efa\u7684\u00a0<code>forEach<\/code>\u00a0\u65b9\u6cd5\uff0c\u4e0e\u00a0<code>Array<\/code>\u00a0\u7c7b\u4f3c\uff1a<\/p>\n<pre><code class=\"language-js\">\/\/ \u5bf9\u6bcf\u4e2a\u952e\u503c\u5bf9 (key, value) \u8fd0\u884c forEach \u51fd\u6570\nrecipeMap.forEach( (value, key, map) =&gt; {\n  alert(`${key}: ${value}`); \/\/ cucumber: 500 etc\n});\n<\/code><\/pre>\n<h5>Object.entries\uff1a\u4ece\u5bf9\u8c61\u521b\u5efa Map<\/h5>\n<p>\u5f53\u521b\u5efa\u4e00\u4e2a\u00a0<code>Map<\/code>\u00a0\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u4f20\u5165\u4e00\u4e2a\u5e26\u6709\u952e\u503c\u5bf9\u7684\u6570\u7ec4\uff08\u6216\u5176\u5b83\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff09\u6765\u8fdb\u884c\u521d\u59cb\u5316<\/p>\n<pre><code class=\"language-js\">\/\/ \u952e\u503c\u5bf9 [key, value] \u6570\u7ec4\nlet map = new Map([\n  ['1',  'str1'],\n  [1,    'num1'],\n  [true, 'bool1']\n]);\n\nalert( map.get('1') ); \/\/ str1\n<\/code><\/pre>\n<p>\u5982\u679c\u6211\u4eec\u60f3\u4ece\u4e00\u4e2a\u5df2\u6709\u7684\u666e\u901a\u5bf9\u8c61\uff08plain object\uff09\u6765\u521b\u5efa\u4e00\u4e2a\u00a0<code>Map<\/code>\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5185\u5efa\u65b9\u6cd5\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/entries\">Object.entries(obj)<\/a>\uff0c\u8be5\u65b9\u6cd5\u8fd4\u56de\u5bf9\u8c61\u7684\u952e\/\u503c\u5bf9\u6570\u7ec4\uff0c\u8be5\u6570\u7ec4\u683c\u5f0f\u5b8c\u5168\u6309\u7167\u00a0<code>Map<\/code>\u00a0\u6240\u9700\u7684\u683c\u5f0f\u3002<br \/>\n\u6240\u4ee5\u53ef\u4ee5\u50cf\u4e0b\u9762\u8fd9\u6837\u4ece\u4e00\u4e2a\u5bf9\u8c61\u521b\u5efa\u4e00\u4e2a Map\uff1a<\/p>\n<pre><code class=\"language-js\">let obj = {\n  name: &quot;John&quot;,\n  age: 30\n};\n\nlet map = new Map(Object.entries(obj));\n\nalert( map.get('name') ); \/\/ John\n<\/code><\/pre>\n<p>\u8fd9\u91cc\uff0c<code>Object.entries<\/code>\u00a0\u8fd4\u56de\u952e\/\u503c\u5bf9\u6570\u7ec4\uff1a<code>[ [&quot;name&quot;,&quot;John&quot;], [&quot;age&quot;, 30] ]<\/code>\u3002\u8fd9\u5c31\u662f\u00a0<code>Map<\/code>\u00a0\u6240\u9700\u8981\u7684\u683c\u5f0f\u3002<\/p>\n<h5>Object.fromEntries\uff1a\u4ece Map \u521b\u5efa\u5bf9\u8c61<\/h5>\n<p>\u521a\u521a\u5df2\u7ecf\u5b66\u4e60\u4e86\u5982\u4f55\u4f7f\u7528\u00a0<code>Object.entries(obj)<\/code>\u00a0\u4ece\u666e\u901a\u5bf9\u8c61\uff08plain object\uff09\u521b\u5efa\u00a0<code>Map<\/code>\u3002<br \/>\n<code>Object.fromEntries<\/code>\u00a0\u65b9\u6cd5\u7684\u4f5c\u7528\u662f\u76f8\u53cd\u7684\uff1a\u7ed9\u5b9a\u4e00\u4e2a\u5177\u6709\u00a0<code>[key, value]<\/code>\u00a0\u952e\u503c\u5bf9\u7684\u6570\u7ec4\uff0c\u5b83\u4f1a\u6839\u636e\u7ed9\u5b9a\u6570\u7ec4\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61\uff1a<\/p>\n<pre><code class=\"language-js\">let prices = Object.fromEntries([\n  ['banana', 1],\n  ['orange', 2],\n  ['meat', 4]\n]);\n\n\/\/ \u73b0\u5728 prices = { banana: 1, orange: 2, meat: 4 }\n\nalert(prices.orange); \/\/ 2\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>Object.fromEntries<\/code>\u00a0\u4ece\u00a0<code>Map<\/code>\u00a0\u5f97\u5230\u4e00\u4e2a\u666e\u901a\u5bf9\u8c61\uff08plain object\uff09\u3002<br \/>\n\u4f8b\u5982\uff0c\u6211\u4eec\u5728\u00a0<code>Map<\/code>\u00a0\u4e2d\u5b58\u50a8\u4e86\u4e00\u4e9b\u6570\u636e\uff0c\u4f46\u662f\u6211\u4eec\u9700\u8981\u628a\u8fd9\u4e9b\u6570\u636e\u4f20\u7ed9\u9700\u8981\u666e\u901a\u5bf9\u8c61\uff08plain object\uff09\u7684\u7b2c\u4e09\u65b9\u4ee3\u7801\u3002<\/p>\n<pre><code class=\"language-js\">let map = new Map();\nmap.set('banana', 1);\nmap.set('orange', 2);\nmap.set('meat', 4);\n\nlet obj = Object.fromEntries(map.entries()); \/\/ \u521b\u5efa\u4e00\u4e2a\u666e\u901a\u5bf9\u8c61\uff08plain object\uff09(*)\nlet obj = Object.fromEntries(map); \/\/ \u7701\u6389 .entries()\n\n\n\/\/ \u5b8c\u6210\u4e86\uff01\n\/\/ obj = { banana: 1, orange: 2, meat: 4 }\n\nalert(obj.orange); \/\/ 2\n<\/code><\/pre>\n<p><code>Object.fromEntries<\/code>\u00a0\u671f\u671b\u5f97\u5230\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\uff0c\u800c\u4e0d\u4e00\u5b9a\u662f\u6570\u7ec4\u3002\u5e76\u4e14\u00a0<code>map<\/code>\u00a0\u7684\u6807\u51c6\u8fed\u4ee3\u4f1a\u8fd4\u56de\u8ddf\u00a0<code>map.entries()<\/code>\u00a0\u4e00\u6837\u7684\u952e\/\u503c\u5bf9\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u83b7\u5f97\u4e00\u4e2a\u666e\u901a\u5bf9\u8c61\uff08plain object\uff09\uff0c\u5176\u952e\/\u503c\u5bf9\u4e0e\u00a0<code>map<\/code>\u00a0\u76f8\u540c\u3002<\/p>\n<h4>set \u96c6\u5408<\/h4>\n<p><code>Set<\/code>\u00a0\u662f\u4e00\u4e2a\u7279\u6b8a\u7684\u7c7b\u578b\u96c6\u5408 \u2014\u2014 \u201c\u503c\u7684\u96c6\u5408\u201d\uff08\u6ca1\u6709\u952e\uff09\uff0c\u5b83\u7684\u6bcf\u4e00\u4e2a\u503c\u53ea\u80fd\u51fa\u73b0\u4e00\u6b21\u3002<br \/>\n\u5b83\u7684\u4e3b\u8981\u65b9\u6cd5\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li><code>new Set(iterable)<\/code>\u00a0\u2014\u2014 \u521b\u5efa\u4e00\u4e2a\u00a0<code>set<\/code>\uff0c\u5982\u679c\u63d0\u4f9b\u4e86\u4e00\u4e2a\u00a0<code>iterable<\/code>\u00a0\u5bf9\u8c61\uff08\u901a\u5e38\u662f\u6570\u7ec4\uff09\uff0c\u5c06\u4f1a\u4ece\u6570\u7ec4\u91cc\u9762\u590d\u5236\u503c\u5230\u00a0<code>set<\/code>\u00a0\u4e2d\u3002<\/li>\n<li><code>set.add(value)<\/code>\u00a0\u2014\u2014 \u6dfb\u52a0\u4e00\u4e2a\u503c\uff0c\u8fd4\u56de set \u672c\u8eab<\/li>\n<li><code>set.delete(value)<\/code>\u00a0\u2014\u2014 \u5220\u9664\u503c\uff0c\u5982\u679c\u00a0<code>value<\/code>\u00a0\u5728\u8fd9\u4e2a\u65b9\u6cd5\u8c03\u7528\u7684\u65f6\u5019\u5b58\u5728\u5219\u8fd4\u56de\u00a0<code>true<\/code>\u00a0\uff0c\u5426\u5219\u8fd4\u56de\u00a0<code>false<\/code>\u3002<\/li>\n<li><code>set.has(value)<\/code>\u00a0\u2014\u2014 \u5982\u679c\u00a0<code>value<\/code>\u00a0\u5728 set \u4e2d\uff0c\u8fd4\u56de\u00a0<code>true<\/code>\uff0c\u5426\u5219\u8fd4\u56de\u00a0<code>false<\/code>\u3002<\/li>\n<li><code>set.clear()<\/code>\u00a0\u2014\u2014 \u6e05\u7a7a set\u3002<\/li>\n<li><code>set.size<\/code>\u00a0\u2014\u2014 \u8fd4\u56de\u5143\u7d20\u4e2a\u6570\u3002<br \/>\n\u5b83\u7684\u4e3b\u8981\u7279\u70b9\u662f\uff0c\u91cd\u590d\u4f7f\u7528\u540c\u4e00\u4e2a\u503c\u8c03\u7528\u00a0<code>set.add(value)<\/code>\u00a0\u5e76\u4e0d\u4f1a\u53d1\u751f\u4ec0\u4e48\u6539\u53d8\u3002\u8fd9\u5c31\u662f\u00a0<code>Set<\/code>\u00a0\u91cc\u9762\u7684\u6bcf\u4e00\u4e2a\u503c\u53ea\u51fa\u73b0\u4e00\u6b21\u7684\u539f\u56e0\u3002<\/li>\n<\/ul>\n<p>\u4f8b\u5982\uff0c\u6211\u4eec\u6709\u5ba2\u4eba\u6765\u8bbf\uff0c\u6211\u4eec\u60f3\u8bb0\u4f4f\u4ed6\u4eec\u6bcf\u4e00\u4e2a\u4eba\u3002\u4f46\u662f\u5df2\u7ecf\u6765\u8bbf\u8fc7\u7684\u5ba2\u4eba\u518d\u6b21\u6765\u8bbf\uff0c\u4e0d\u5e94\u9020\u6210\u91cd\u590d\u8bb0\u5f55\u3002\u6bcf\u4e2a\u8bbf\u5ba2\u5fc5\u987b\u53ea\u88ab\u201c\u8ba1\u6570\u201d\u4e00\u6b21\u3002<\/p>\n<p><code>Set<\/code>\u00a0\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff1a<\/p>\n<pre><code class=\"language-js\">let set = new Set();\n\nlet john = { name: &quot;John&quot; };\nlet pete = { name: &quot;Pete&quot; };\nlet mary = { name: &quot;Mary&quot; };\n\n\/\/ visits\uff0c\u4e00\u4e9b\u8bbf\u5ba2\u6765\u8bbf\u597d\u51e0\u6b21\nset.add(john);\nset.add(pete);\nset.add(mary);\nset.add(john);\nset.add(mary);\n\n\/\/ set \u53ea\u4fdd\u7559\u4e0d\u91cd\u590d\u7684\u503c\nalert( set.size ); \/\/ 3\n\nfor (let user of set) {\n  alert(user.name); \/\/ John\uff08\u7136\u540e Pete \u548c Mary\uff09\n}\n<\/code><\/pre>\n<p><code>Set<\/code>\u00a0\u7684\u66ff\u4ee3\u65b9\u6cd5\u53ef\u4ee5\u662f\u4e00\u4e2a\u7528\u6237\u6570\u7ec4\uff0c\u7528\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/find\">arr.find<\/a>\u00a0\u5728\u6bcf\u6b21\u63d2\u5165\u503c\u65f6\u68c0\u67e5\u662f\u5426\u91cd\u590d\u3002\u4f46\u662f\u8fd9\u6837\u6027\u80fd\u4f1a\u5f88\u5dee\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u65b9\u6cd5\u4f1a\u904d\u5386\u6574\u4e2a\u6570\u7ec4\u6765\u68c0\u67e5\u6bcf\u4e2a\u5143\u7d20\u3002<code>Set<\/code>\u00a0\u5185\u90e8\u5bf9\u552f\u4e00\u6027\u68c0\u67e5\u8fdb\u884c\u4e86\u66f4\u597d\u7684\u4f18\u5316\u3002<\/p>\n<h5>set \u8fed\u4ee3<\/h5>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>for..of<\/code>\u00a0\u6216\u00a0<code>forEach<\/code>\u00a0\u6765\u904d\u5386 Set\uff1a<\/p>\n<pre><code class=\"language-js\">let set = new Set([&quot;oranges&quot;, &quot;apples&quot;, &quot;bananas&quot;]);\n\nfor (let value of set) alert(value);\n\n\/\/ \u4e0e forEach \u76f8\u540c\uff1a\nset.forEach((value, valueAgain, set) =&gt; {\n  alert(value);\n});\n<\/code><\/pre>\n<p>\u6ce8\u610f\u4e00\u4ef6\u6709\u8da3\u7684\u4e8b\u513f\u3002<code>forEach<\/code>\u00a0\u7684\u56de\u8c03\u51fd\u6570\u6709\u4e09\u4e2a\u53c2\u6570\uff1a\u4e00\u4e2a\u00a0<code>value<\/code>\uff0c\u7136\u540e\u662f\u00a0<strong>\u540c\u4e00\u4e2a\u503c<\/strong>\u00a0<code>valueAgain<\/code>\uff0c\u6700\u540e\u662f\u76ee\u6807\u5bf9\u8c61\u3002\u6ca1\u9519\uff0c\u540c\u4e00\u4e2a\u503c\u5728\u53c2\u6570\u91cc\u51fa\u73b0\u4e86\u4e24\u6b21\u3002<br \/>\n<code>forEach<\/code>\u00a0\u7684\u56de\u8c03\u51fd\u6570\u6709\u4e09\u4e2a\u53c2\u6570\uff0c\u662f\u4e3a\u4e86\u4e0e\u00a0<code>Map<\/code>\u00a0\u517c\u5bb9\u3002\u5f53\u7136\uff0c\u8fd9\u770b\u8d77\u6765\u786e\u5b9e\u6709\u4e9b\u5947\u602a\u3002\u4f46\u662f\u8fd9\u5bf9\u5728\u7279\u5b9a\u60c5\u51b5\u4e0b\u8f7b\u677e\u5730\u7528\u00a0<code>Set<\/code>\u00a0\u4ee3\u66ff\u00a0<code>Map<\/code>\u00a0\u5f88\u6709\u5e2e\u52a9\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002<br \/>\n<code>Map<\/code>\u00a0\u4e2d\u7528\u4e8e\u8fed\u4ee3\u7684\u65b9\u6cd5\u5728\u00a0<code>Set<\/code>\u00a0\u4e2d\u4e5f\u540c\u6837\u652f\u6301\uff1a<\/p>\n<ul>\n<li><code>set.keys()<\/code>\u00a0\u2014\u2014 \u904d\u5386\u5e76\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u503c\u7684\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff0c<\/li>\n<li><code>set.values()<\/code>\u00a0\u2014\u2014 \u4e0e\u00a0<code>set.keys()<\/code>\u00a0\u4f5c\u7528\u76f8\u540c\uff0c\u8fd9\u662f\u4e3a\u4e86\u517c\u5bb9\u00a0<code>Map<\/code>\uff0c<\/li>\n<li><code>set.entries()<\/code>\u00a0\u2014\u2014 \u904d\u5386\u5e76\u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u6240\u6709\u7684\u5b9e\u4f53\u00a0<code>[value, value]<\/code>\u00a0\u7684\u53ef\u8fed\u4ee3\u5bf9\u8c61\uff0c\u5b83\u7684\u5b58\u5728\u4e5f\u662f\u4e3a\u4e86\u517c\u5bb9\u00a0<code>Map<\/code>\u3002<\/li>\n<\/ul>\n<h4>WeakMap WeakSet<\/h4>\n<h5>\u5f15<\/h5>\n<p>\u6211\u4eec\u4ece\u524d\u9762\u7684\u00a0<a href=\"https:\/\/zh.javascript.info\/garbage-collection\">\u5783\u573e\u56de\u6536<\/a>\u00a0\u7ae0\u8282\u4e2d\u77e5\u9053\uff0cJavaScript \u5f15\u64ce\u5728\u503c\u201c\u53ef\u8fbe\u201d\u548c\u53ef\u80fd\u88ab\u4f7f\u7528\u65f6\u4f1a\u5c06\u5176\u4fdd\u6301\u5728\u5185\u5b58\u4e2d\u3002<br \/>\n\u901a\u5e38\uff0c\u5f53\u5bf9\u8c61\u3001\u6570\u7ec4\u4e4b\u7c7b\u7684\u6570\u636e\u7ed3\u6784\u5728\u5185\u5b58\u4e2d\u65f6\uff0c\u5b83\u4eec\u7684\u5b50\u5143\u7d20\uff0c\u5982\u5bf9\u8c61\u7684\u5c5e\u6027\u3001\u6570\u7ec4\u7684\u5143\u7d20\u90fd\u88ab\u8ba4\u4e3a\u662f\u53ef\u8fbe\u7684\u3002<br \/>\n\u4f8b\u5982\uff0c\u5982\u679c\u628a\u4e00\u4e2a\u5bf9\u8c61\u653e\u5165\u5230\u6570\u7ec4\u4e2d\uff0c\u90a3\u4e48\u53ea\u8981\u8fd9\u4e2a\u6570\u7ec4\u5b58\u5728\uff0c\u90a3\u4e48\u8fd9\u4e2a\u5bf9\u8c61\u4e5f\u5c31\u5b58\u5728\uff0c\u5373\u4f7f\u6ca1\u6709\u5176\u4ed6\u5bf9\u8be5\u5bf9\u8c61\u7684\u5f15\u7528\u3002<br \/>\n\u5c31\u50cf\u8fd9\u6837:<\/p>\n<pre><code class=\"language-js\">let john = { name: &quot;John&quot; };\n\nlet array = [ john ];\n\njohn = null; \/\/ \u8986\u76d6\u5f15\u7528\n\n\/\/ \u524d\u9762\u7531 john \u6240\u5f15\u7528\u7684\u90a3\u4e2a\u5bf9\u8c61\u88ab\u5b58\u50a8\u5728\u4e86 array \u4e2d\n\/\/ \u6240\u4ee5\u5b83\u4e0d\u4f1a\u88ab\u5783\u573e\u56de\u6536\u673a\u5236\u56de\u6536\n\/\/ \u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 array[0] \u83b7\u53d6\u5230\u5b83\n<\/code><\/pre>\n<p>\u7c7b\u4f3c\u7684\uff0c\u5982\u679c\u6211\u4eec\u4f7f\u7528\u5bf9\u8c61\u4f5c\u4e3a\u5e38\u89c4\u00a0<code>Map<\/code>\u00a0\u7684\u952e\uff0c\u90a3\u4e48\u5f53\u00a0<code>Map<\/code>\u00a0\u5b58\u5728\u65f6\uff0c\u8be5\u5bf9\u8c61\u4e5f\u5c06\u5b58\u5728\u3002\u5b83\u4f1a\u5360\u7528\u5185\u5b58\uff0c\u5e76\u4e14\u4e0d\u4f1a\u88ab\uff08\u5783\u573e\u56de\u6536\u673a\u5236\uff09\u56de\u6536\u3002<\/p>\n<pre><code class=\"language-js\">let john = { name: &quot;John&quot; };\n\nlet map = new Map();\nmap.set(john, &quot;...&quot;);\n\njohn = null; \/\/ \u8986\u76d6\u5f15\u7528\n\n\/\/ john \u88ab\u5b58\u50a8\u5728\u4e86 map \u4e2d\uff0c\n\/\/ \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 map.keys() \u6765\u83b7\u53d6\u5b83\n<\/code><\/pre>\n<p><code>WeakMap<\/code>\u00a0\u5728\u8fd9\u65b9\u9762\u6709\u7740\u6839\u672c\u4e0a\u7684\u4e0d\u540c\u3002\u5b83\u4e0d\u4f1a\u963b\u6b62\u5783\u573e\u56de\u6536\u673a\u5236\u5bf9\u4f5c\u4e3a\u952e\u7684\u5bf9\u8c61\uff08key object\uff09\u7684\u56de\u6536\u3002<br \/>\n\u8ba9\u6211\u4eec\u901a\u8fc7\u4f8b\u5b50\u6765\u770b\u770b\u8fd9\u6307\u7684\u5230\u5e95\u662f\u4ec0\u4e48\u3002<\/p>\n<h5>WeakMap<\/h5>\n<p><code>WeakMap<\/code>\u00a0\u548c\u00a0<code>Map<\/code>\u00a0\u7684\u7b2c\u4e00\u4e2a\u4e0d\u540c\u70b9\u5c31\u662f\uff0c<code>WeakMap<\/code>\u00a0\u7684\u952e\u5fc5\u987b\u662f\u5bf9\u8c61\uff0c\u4e0d\u80fd\u662f\u539f\u59cb\u503c<br \/>\n\u73b0\u5728\uff0c\u5982\u679c\u6211\u4eec\u5728 weakMap \u4e2d\u4f7f\u7528\u4e00\u4e2a\u5bf9\u8c61\u4f5c\u4e3a\u952e\uff0c\u5e76\u4e14\u6ca1\u6709\u5176\u4ed6\u5bf9\u8fd9\u4e2a\u5bf9\u8c61\u7684\u5f15\u7528 \u2014\u2014 \u8be5\u5bf9\u8c61\u5c06\u4f1a\u88ab\u4ece\u5185\u5b58\uff08\u548cmap\uff09\u4e2d\u81ea\u52a8\u6e05\u9664\u3002<\/p>\n<pre><code class=\"language-js\">let john = { name: &quot;John&quot; };\n\nlet weakMap = new WeakMap();\nweakMap.set(john, &quot;...&quot;);\n\njohn = null; \/\/ \u8986\u76d6\u5f15\u7528\n\n\/\/ john \u88ab\u4ece\u5185\u5b58\u4e2d\u5220\u9664\u4e86\uff01\n<\/code><\/pre>\n<p>\u4e0e\u4e0a\u9762\u5e38\u89c4\u7684\u00a0<code>Map<\/code>\u00a0\u7684\u4f8b\u5b50\u76f8\u6bd4\uff0c\u73b0\u5728\u5982\u679c\u00a0<code>john<\/code>\u00a0\u4ec5\u4ec5\u662f\u4f5c\u4e3a\u00a0<code>WeakMap<\/code>\u00a0\u7684\u952e\u800c\u5b58\u5728 \u2014\u2014 \u5b83\u5c06\u4f1a\u88ab\u4ece map\uff08\u548c\u5185\u5b58\uff09\u4e2d\u81ea\u52a8\u5220\u9664\u3002<br \/>\n<code>WeakMap<\/code>\u00a0\u4e0d\u652f\u6301\u8fed\u4ee3\u4ee5\u53ca\u00a0<code>keys()<\/code>\uff0c<code>values()<\/code>\u00a0\u548c\u00a0<code>entries()<\/code>\u00a0\u65b9\u6cd5\u3002\u6240\u4ee5\u6ca1\u6709\u529e\u6cd5\u83b7\u53d6\u00a0<code>WeakMap<\/code>\u00a0\u7684\u6240\u6709\u952e\u6216\u503c\u3002<br \/>\n<code>WeakMap<\/code>\u00a0\u53ea\u6709\u4ee5\u4e0b\u7684\u65b9\u6cd5\uff1a<\/p>\n<ul>\n<li><code>weakMap.get(key)<\/code><\/li>\n<li><code>weakMap.set(key, value)<\/code><\/li>\n<li><code>weakMap.delete(key)<\/code><\/li>\n<li><code>weakMap.has(key)<\/code><br \/>\n\u4e3a\u4ec0\u4e48\u4f1a\u6709\u8fd9\u79cd\u9650\u5236\u5462\uff1f\u8fd9\u662f\u6280\u672f\u7684\u539f\u56e0\u3002\u5982\u679c\u4e00\u4e2a\u5bf9\u8c61\u4e22\u5931\u4e86\u5176\u5b83\u6240\u6709\u5f15\u7528\uff08\u5c31\u50cf\u4e0a\u9762\u793a\u4f8b\u4e2d\u7684\u00a0<code>john<\/code>\uff09\uff0c\u90a3\u4e48\u5b83\u5c31\u4f1a\u88ab\u5783\u573e\u56de\u6536\u673a\u5236\u81ea\u52a8\u56de\u6536\u3002\u4f46\u662f\u5728\u4ece\u6280\u672f\u7684\u89d2\u5ea6\u5e76\u4e0d\u80fd\u51c6\u786e\u77e5\u9053\u00a0<strong>\u4f55\u65f6\u4f1a\u88ab\u56de\u6536<\/strong>\u3002<br \/>\n\u8fd9\u4e9b\u90fd\u662f\u7531 JavaScript \u5f15\u64ce\u51b3\u5b9a\u7684\u3002JavaScript \u5f15\u64ce\u53ef\u80fd\u4f1a\u9009\u62e9\u7acb\u5373\u6267\u884c\u5185\u5b58\u6e05\u7406\uff0c\u5982\u679c\u73b0\u5728\u6b63\u5728\u53d1\u751f\u5f88\u591a\u5220\u9664\u64cd\u4f5c\uff0c\u90a3\u4e48 JavaScript \u5f15\u64ce\u53ef\u80fd\u5c31\u4f1a\u9009\u62e9\u7b49\u4e00\u7b49\uff0c\u7a0d\u540e\u518d\u8fdb\u884c\u5185\u5b58\u6e05\u7406\u3002\u56e0\u6b64\uff0c\u4ece\u6280\u672f\u4e0a\u8bb2\uff0c<code>WeakMap<\/code>\u00a0\u7684\u5f53\u524d\u5143\u7d20\u7684\u6570\u91cf\u662f\u672a\u77e5\u7684\u3002JavaScript \u5f15\u64ce\u53ef\u80fd\u6e05\u7406\u4e86\u5176\u4e2d\u7684\u5783\u573e\uff0c\u53ef\u80fd\u6ca1\u6e05\u7406\uff0c\u4e5f\u53ef\u80fd\u6e05\u7406\u4e86\u4e00\u90e8\u5206\u3002\u56e0\u6b64\uff0c\u6682\u4e0d\u652f\u6301\u8bbf\u95ee\u00a0<code>WeakMap<\/code>\u00a0\u7684\u6240\u6709\u952e\/\u503c\u7684\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<h5>\u4f7f\u7528\u6848\u4f8b<\/h5>\n<ul>\n<li>\u989d\u5916\u7684\u6570\u636e<br \/>\n\u5047\u5982\u6211\u4eec\u6b63\u5728\u5904\u7406\u4e00\u4e2a\u201c\u5c5e\u4e8e\u201d\u53e6\u4e00\u4e2a\u4ee3\u7801\u7684\u4e00\u4e2a\u5bf9\u8c61\uff0c\u4e5f\u53ef\u80fd\u662f\u7b2c\u4e09\u65b9\u5e93\uff0c\u5e76\u60f3\u5b58\u50a8\u4e00\u4e9b\u4e0e\u4e4b\u76f8\u5173\u7684\u6570\u636e\uff0c\u90a3\u4e48\u8fd9\u4e9b\u6570\u636e\u5c31\u5e94\u8be5\u4e0e\u8fd9\u4e2a\u5bf9\u8c61\u5171\u5b58\u4ea1 \u2014\u2014 \u8fd9\u65f6\u5019\u00a0<code>WeakMap<\/code>\u00a0\u6b63\u662f\u6211\u4eec\u6240\u9700\u8981\u7684\u5229\u5668\u3002<br \/>\n\u6211\u4eec\u5c06\u8fd9\u4e9b\u6570\u636e\u653e\u5230\u00a0<code>WeakMap<\/code>\u00a0\u4e2d\uff0c\u5e76\u4f7f\u7528\u8be5\u5bf9\u8c61\u4f5c\u4e3a\u8fd9\u4e9b\u6570\u636e\u7684\u952e\uff0c\u90a3\u4e48\u5f53\u8be5\u5bf9\u8c61\u88ab\u5783\u573e\u56de\u6536\u673a\u5236\u56de\u6536\u540e\uff0c\u8fd9\u4e9b\u6570\u636e\u4e5f\u4f1a\u88ab\u81ea\u52a8\u6e05\u9664\u3002<\/li>\n<\/ul>\n<pre><code>\ud83d\udcc1\/\/\u6587\u4ef6\u5939hhh\n<\/code><\/pre>\n<ul>\n<li>\u7f13\u5b58<br \/>\n\u6211\u4eec\u53ef\u4ee5\u5b58\u50a8\uff08\u201c\u7f13\u5b58\u201d\uff09\u51fd\u6570\u7684\u7ed3\u679c\uff0c\u4ee5\u4fbf\u5c06\u6765\u5bf9\u540c\u4e00\u4e2a\u5bf9\u8c61\u7684\u8c03\u7528\u53ef\u4ee5\u91cd\u7528\u8fd9\u4e2a\u7ed3\u679c\u3002\u6211\u4eec\u7528<code>WeakMap<\/code>\u5f53\u5bf9\u8c61\u88ab\u5783\u573e\u56de\u6536\u65f6\uff0c\u5bf9\u5e94\u7f13\u5b58\u7684\u7ed3\u679c\u4e5f\u4f1a\u88ab\u81ea\u52a8\u4ece\u5185\u5b58\u4e2d\u6e05\u9664\u3002<\/li>\n<\/ul>\n<h5>WeakSet<\/h5>\n<p><code>WeakSet<\/code>\u00a0\u7684\u8868\u73b0\u7c7b\u4f3c\uff1a<\/p>\n<ul>\n<li>\u4e0e\u00a0<code>Set<\/code>\u00a0\u7c7b\u4f3c\uff0c\u4f46\u662f\u6211\u4eec\u53ea\u80fd\u5411\u00a0<code>WeakSet<\/code>\u00a0\u6dfb\u52a0\u5bf9\u8c61\uff08\u800c\u4e0d\u80fd\u662f\u539f\u59cb\u503c\uff09\u3002<\/li>\n<li>\u5bf9\u8c61\u53ea\u6709\u5728\u5176\u5b83\u67d0\u4e2a\uff08\u4e9b\uff09\u5730\u65b9\u80fd\u88ab\u8bbf\u95ee\u7684\u65f6\u5019\uff0c\u624d\u80fd\u7559\u5728\u00a0<code>WeakSet<\/code>\u00a0\u4e2d\u3002<\/li>\n<li>\u8ddf\u00a0<code>Set<\/code>\u00a0\u4e00\u6837\uff0c<code>WeakSet<\/code>\u00a0\u652f\u6301\u00a0<code>add<\/code>\uff0c<code>has<\/code>\u00a0\u548c\u00a0<code>delete<\/code>\u00a0\u65b9\u6cd5\uff0c\u4f46\u4e0d\u652f\u6301\u00a0<code>size<\/code>\u00a0\u548c\u00a0<code>keys()<\/code>\uff0c\u5e76\u4e14\u4e0d\u53ef\u8fed\u4ee3\u3002<br \/>\n\u53d8\u201c\u5f31\uff08weak\uff09\u201d\u7684\u540c\u65f6\uff0c\u5b83\u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u989d\u5916\u7684\u5b58\u50a8\u7a7a\u95f4\u3002\u4f46\u5e76\u975e\u9488\u5bf9\u4efb\u610f\u6570\u636e\uff0c\u800c\u662f\u9488\u5bf9\u201c\u662f\/\u5426\u201d\u7684\u4e8b\u5b9e\u3002<code>WeakSet<\/code>\u00a0\u7684\u5143\u7d20\u53ef\u80fd\u4ee3\u8868\u7740\u6709\u5173\u8be5\u5bf9\u8c61\u7684\u67d0\u4e9b\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<h3>Object.keys\uff0cvalues\uff0centries<\/h3>\n<p>\u5728\u524d\u9762\u7684\u7ae0\u8282\u4e2d\uff0c\u6211\u4eec\u8ba4\u8bc6\u4e86\u00a0<code>map.keys()<\/code>\uff0c<code>map.values()<\/code>\u00a0\u548c\u00a0<code>map.entries()<\/code>\u00a0\u65b9\u6cd5\u3002<br \/>\n\u8fd9\u4e9b\u65b9\u6cd5\u662f\u901a\u7528\u7684\uff0c\u6709\u4e00\u4e2a\u5171\u540c\u7684\u7ea6\u5b9a\u6765\u5c06\u5b83\u4eec\u7528\u4e8e\u5404\u79cd\u6570\u636e\u7ed3\u6784\u3002\u5982\u679c\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u6211\u4eec\u81ea\u5df1\u7684\u6570\u636e\u7ed3\u6784\uff0c\u6211\u4eec\u4e5f\u5e94\u8be5\u5b9e\u73b0\u8fd9\u4e9b\u65b9\u6cd5\u3002<br \/>\n\u5b83\u4eec\u652f\u6301\uff1a<\/p>\n<ul>\n<li><code>Map<\/code><\/li>\n<li><code>Set<\/code><\/li>\n<li><code>Array<\/code><br \/>\n\u666e\u901a\u5bf9\u8c61\u4e5f\u652f\u6301\u7c7b\u4f3c\u7684\u65b9\u6cd5\uff0c\u4f46\u662f\u8bed\u6cd5\u4e0a\u6709\u4e00\u4e9b\u4e0d\u540c\u3002<\/li>\n<\/ul>\n<p>\u5bf9\u4e8e\u666e\u901a\u5bf9\u8c61\uff0c\u4e0b\u5217\u8fd9\u4e9b\u65b9\u6cd5\u662f\u53ef\u7528\u7684\uff1a<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/keys\">Object.keys(obj)<\/a>\u00a0\u2014\u2014 \u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u8be5\u5bf9\u8c61\u6240\u6709\u7684\u952e\u7684\u6570\u7ec4\u3002<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/values\">Object.values(obj)<\/a>\u00a0\u2014\u2014 \u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u8be5\u5bf9\u8c61\u6240\u6709\u7684\u503c\u7684\u6570\u7ec4\u3002<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/entries\">Object.entries(obj)<\/a>\u00a0\u2014\u2014 \u8fd4\u56de\u4e00\u4e2a\u5305\u542b\u8be5\u5bf9\u8c61\u6240\u6709 [key, value] \u952e\u503c\u5bf9\u7684\u6570\u7ec4\u3002<br \/>\n\u2026\u2026\u4f46\u662f\u8bf7\u6ce8\u610f\u533a\u522b\uff08\u6bd4\u5982\u8bf4\u8ddf map \u7684\u533a\u522b\uff09\uff1a<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>Map<\/th>\n<th>Object<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u8c03\u7528\u8bed\u6cd5<\/td>\n<td><code>map.keys()<\/code><\/td>\n<td><code>Object.keys(obj)<\/code>\uff0c\u800c\u4e0d\u662f\u00a0<code>obj.keys()<\/code><\/td>\n<\/tr>\n<tr>\n<td>\u8fd4\u56de\u503c<\/td>\n<td>\u53ef\u8fed\u4ee3\u5bf9\u8c61<\/td>\n<td>\u201c\u771f\u6b63\u7684\u201d\u6570\u7ec4<\/td>\n<\/tr>\n<tr>\n<td>\u7b2c\u4e00\u4e2a\u533a\u522b\u662f\uff0c\u5bf9\u4e8e\u5bf9\u8c61\u6211\u4eec\u4f7f\u7528\u7684\u8c03\u7528\u8bed\u6cd5\u662f\u00a0<code>Object.keys(obj)<\/code>\uff0c\u800c\u4e0d\u662f\u00a0<code>obj.keys()<\/code>\u3002<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u4e3a\u4ec0\u4e48\u4f1a\u8fd9\u6837\uff1f\u4e3b\u8981\u539f\u56e0\u662f\u7075\u6d3b\u6027\u3002\u8bf7\u8bb0\u4f4f\uff0c\u5728 JavaScript \u4e2d\uff0c\u5bf9\u8c61\u662f\u6240\u6709\u590d\u6742\u7ed3\u6784\u7684\u57fa\u7840\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u80fd\u6709\u4e00\u4e2a\u81ea\u5df1\u521b\u5efa\u7684\u5bf9\u8c61\uff0c\u6bd4\u5982\u00a0<code>data<\/code>\uff0c\u5e76\u5b9e\u73b0\u4e86\u5b83\u81ea\u5df1\u7684\u00a0<code>data.values()<\/code>\u00a0\u65b9\u6cd5\u3002\u540c\u65f6\uff0c\u6211\u4eec\u4f9d\u7136\u53ef\u4ee5\u5bf9\u5b83\u8c03\u7528\u00a0<code>Object.values(data)<\/code>\u00a0\u65b9\u6cd5\u3002<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u7b2c\u4e8c\u4e2a\u533a\u522b\u662f\u00a0<code>Object.*<\/code>\u00a0\u65b9\u6cd5\u8fd4\u56de\u7684\u662f\u201c\u771f\u6b63\u7684\u201d\u6570\u7ec4\u5bf9\u8c61\uff0c\u800c\u4e0d\u53ea\u662f\u4e00\u4e2a\u53ef\u8fed\u4ee3\u5bf9\u8c61\u3002\u8fd9\u4e3b\u8981\u662f\u5386\u53f2\u539f\u56e0\u3002<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  age: 30\n};\n\n\/\/ \u904d\u5386\u6240\u6709\u7684\u503c\nfor (let value of Object.values(user)) {\n  alert(value); \/\/ John, then 30\n}\n<\/code><\/pre>\n<blockquote>\n<p>Object.keys\/values\/entries \u4f1a\u5ffd\u7565 symbol \u5c5e\u6027<br \/>\n\u5c31\u50cf\u00a0<code>for..in<\/code>\u00a0\u5faa\u73af\u4e00\u6837\uff0c\u8fd9\u4e9b\u65b9\u6cd5\u4f1a\u5ffd\u7565\u4f7f\u7528\u00a0<code>Symbol(...)<\/code>\u00a0\u4f5c\u4e3a\u952e\u7684\u5c5e\u6027\u3002<br \/>\n\u901a\u5e38\u8fd9\u5f88\u65b9\u4fbf\u3002\u4f46\u662f\uff0c\u5982\u679c\u6211\u4eec\u4e5f\u60f3\u8981 Symbol \u7c7b\u578b\u7684\u952e\uff0c\u90a3\u4e48\u8fd9\u513f\u6709\u4e00\u4e2a\u5355\u72ec\u7684\u65b9\u6cd5\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/getOwnPropertySymbols\">Object.getOwnPropertySymbols<\/a>\uff0c\u5b83\u4f1a\u8fd4\u56de\u4e00\u4e2a\u53ea\u5305\u542b Symbol \u7c7b\u578b\u7684\u952e\u7684\u6570\u7ec4\u3002\u53e6\u5916\uff0c\u8fd8\u6709\u4e00\u79cd\u65b9\u6cd5\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Reflect\/ownKeys\">Reflect.ownKeys(obj)<\/a>\uff0c\u5b83\u4f1a\u8fd4\u56de\u00a0<strong>\u6240\u6709<\/strong>\u00a0\u952e\u3002<\/p>\n<\/blockquote>\n<h5>\u8f6c\u6362\u5bf9\u8c61<\/h5>\n<p>\u5bf9\u8c61\u7f3a\u5c11\u6570\u7ec4\u5b58\u5728\u7684\u8bb8\u591a\u65b9\u6cd5\uff0c\u4f8b\u5982 map \u548c filter \u7b49\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u60f3\u5e94\u7528\u5b83\u4eec\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 Object.entries\uff0c\u7136\u540e\u4f7f\u7528 Object.fromEntries\uff1a<br \/>\n\u4f7f\u7528 Object.entries(obj) \u4ece obj \u83b7\u53d6\u7531\u952e\/\u503c\u5bf9\u7ec4\u6210\u7684\u6570\u7ec4\u3002<br \/>\n\u5bf9\u8be5\u6570\u7ec4\u4f7f\u7528\u6570\u7ec4\u65b9\u6cd5\uff0c\u4f8b\u5982 map\uff0c\u5bf9\u8fd9\u4e9b\u952e\/\u503c\u5bf9\u8fdb\u884c\u8f6c\u6362\u3002<br \/>\n\u5bf9\u7ed3\u679c\u6570\u7ec4\u4f7f\u7528 Object.fromEntries(array) \u65b9\u6cd5\uff0c\u5c06\u7ed3\u679c\u8f6c\u56de\u6210\u5bf9\u8c61\u3002<\/p>\n<h3>\u89e3\u6784\u8d4b\u503c<\/h3>\n<p>JavaScript \u4e2d\u6700\u5e38\u7528\u7684\u4e24\u79cd\u6570\u636e\u7ed3\u6784\u662f\u00a0<code>Object<\/code>\u00a0\u548c\u00a0<code>Array<\/code>\u3002<\/p>\n<ul>\n<li>\u5bf9\u8c61\u662f\u4e00\u79cd\u6839\u636e\u952e\u5b58\u50a8\u6570\u636e\u7684\u5b9e\u4f53\u3002<\/li>\n<li>\u6570\u7ec4\u662f\u4e00\u79cd\u76f4\u63a5\u5b58\u50a8\u6570\u636e\u7684\u6709\u5e8f\u5217\u8868\u3002<br \/>\n\u4f46\u662f\uff0c\u5f53\u6211\u4eec\u628a\u5b83\u4eec\u4f20\u9012\u7ed9\u51fd\u6570\u65f6\uff0c\u51fd\u6570\u53ef\u80fd\u4e0d\u9700\u8981\u6574\u4e2a\u5bf9\u8c61\/\u6570\u7ec4\uff0c\u800c\u53ea\u9700\u8981\u5176\u4e2d\u4e00\u90e8\u5206\u3002<br \/>\n<strong>\u89e3\u6784\u8d4b\u503c<\/strong>\u00a0\u662f\u4e00\u79cd\u7279\u6b8a\u7684\u8bed\u6cd5\uff0c\u5b83\u4f7f\u6211\u4eec\u53ef\u4ee5\u5c06\u6570\u7ec4\u6216\u5bf9\u8c61\u201c\u62c6\u5305\u201d\u81f3\u4e00\u7cfb\u5217\u53d8\u91cf\u4e2d\u3002\u6709\u65f6\u8fd9\u6837\u505a\u66f4\u65b9\u4fbf\u3002<br \/>\n\u89e3\u6784\u64cd\u4f5c\u5bf9\u90a3\u4e9b\u5177\u6709\u5f88\u591a\u53c2\u6570\u548c\u9ed8\u8ba4\u503c\u7b49\u7684\u51fd\u6570\u4e5f\u5f88\u594f\u6548\u3002\u4e0b\u9762\u6709\u4e00\u4e9b\u4f8b\u5b50\u3002<\/li>\n<\/ul>\n<h4>\u6570\u7ec4\u89e3\u6784<\/h4>\n<pre><code class=\"language-js\">\/\/ \u6211\u4eec\u6709\u4e00\u4e2a\u5b58\u653e\u4e86\u540d\u5b57\u548c\u59d3\u6c0f\u7684\u6570\u7ec4\nlet arr = [&quot;John&quot;, &quot;Smith&quot;]\n\n\/\/ \u89e3\u6784\u8d4b\u503c\n\/\/ \u8bbe\u7f6e firstName = arr[0]\n\/\/ \u4ee5\u53ca surname = arr[1]\nlet [firstName, surname] = arr;\n\nalert(firstName); \/\/ John\nalert(surname);  \/\/ Smith\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e9b\u53d8\u91cf\u800c\u975e\u539f\u6765\u7684\u6570\u7ec4\u9879\u4e86\u3002<br \/>\n\u5f53\u4e0e\u00a0<code>split<\/code>\u00a0\u51fd\u6570\uff08\u6216\u5176\u4ed6\u8fd4\u56de\u503c\u4e3a\u6570\u7ec4\u7684\u51fd\u6570\uff09\u7ed3\u5408\u4f7f\u7528\u65f6\uff0c\u770b\u8d77\u6765\u66f4\u4f18\u96c5<\/p>\n<pre><code class=\"language-js\">let [firstName, surname] = &quot;John Smith&quot;.split(' ');\nalert(firstName); \/\/ John\nalert(surname);  \/\/ Smith\n<\/code><\/pre>\n<blockquote>\n<p>\u201c\u89e3\u6784\u201d\u5e76\u4e0d\u610f\u5473\u7740\u201c\u7834\u574f\u201d<br \/>\n\u8fd9\u79cd\u8bed\u6cd5\u88ab\u53eb\u505a\u201c\u89e3\u6784\u8d4b\u503c\u201d\uff0c\u662f\u56e0\u4e3a\u5b83\u201c\u62c6\u5f00\u201d\u4e86\u6570\u7ec4\u6216\u5bf9\u8c61\uff0c\u5c06\u5176\u4e2d\u7684\u5404\u5143\u7d20\u590d\u5236\u7ed9\u4e00\u4e9b\u53d8\u91cf\u3002\u539f\u6765\u7684\u6570\u7ec4\u6216\u5bf9\u8c61\u81ea\u8eab\u6ca1\u6709\u88ab\u4fee\u6539\u3002<br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c\u89e3\u6784\u8d4b\u503c\u53ea\u662f\u5199\u8d77\u6765\u7b80\u6d01\u4e00\u70b9\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u5ffd\u7565\u4f7f\u7528\u9017\u53f7\u7684\u5143\u7d20<br \/>\n\u53ef\u4ee5\u901a\u8fc7\u6dfb\u52a0\u989d\u5916\u7684\u9017\u53f7\u6765\u4e22\u5f03\u6570\u7ec4\u4e2d\u4e0d\u60f3\u8981\u7684\u5143\u7d20<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">\/\/ \u4e0d\u9700\u8981\u7b2c\u4e8c\u4e2a\u5143\u7d20\nlet [who, , content] = [&quot;I&quot;, &quot;never&quot;, &quot;do that&quot;, &quot;!!!&quot;];\n\nalert( who + &quot; &quot; + content ); \/\/ I do that\n<\/code><\/pre>\n<blockquote>\n<p>\u5728\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d\uff0c\u6570\u7ec4\u7684\u7b2c\u4e8c\u4e2a\u5143\u7d20\u88ab\u8df3\u8fc7\u4e86\uff0c\u7b2c\u4e09\u4e2a\u5143\u7d20\u88ab\u8d4b\u503c\u7ed9\u4e86\u00a0<code>title<\/code>\u00a0\u53d8\u91cf\u3002\u6570\u7ec4\u4e2d\u5269\u4e0b\u7684\u5143\u7d20\u4e5f\u90fd\u88ab\u8df3\u8fc7\u4e86\uff08\u56e0\u4e3a\u5728\u8fd9\u6ca1\u6709\u5bf9\u5e94\u7ed9\u5b83\u4eec\u7684\u53d8\u91cf\uff09\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u7b49\u53f7\u53f3\u4fa7\u53ef\u4ee5\u662f\u4efb\u4f55\u53ef\u8fed\u4ee3\u5bf9\u8c61<br \/>\n\u2026\u2026\u5b9e\u9645\u4e0a\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u5176\u4e0e\u4efb\u4f55\u53ef\u8fed\u4ee3\u5bf9\u8c61\u4e00\u8d77\u4f7f\u7528\uff0c\u800c\u4e0d\u4ec5\u9650\u4e8e\u6570\u7ec4<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let [a, b, c] = &quot;abc&quot;; \/\/ [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]\nlet [one, two, three] = new Set([1, 2, 3]);\n<\/code><\/pre>\n<blockquote>\n<p>\u8fd9\u79cd\u60c5\u51b5\u4e0b\u89e3\u6784\u8d4b\u503c\u662f\u901a\u8fc7\u8fed\u4ee3\u53f3\u4fa7\u7684\u503c\u6765\u5b8c\u6210\u5de5\u4f5c\u7684\u3002\u8fd9\u662f\u4e00\u79cd\u7528\u4e8e\u5bf9\u5728\u00a0<code>=<\/code>\u00a0\u53f3\u4fa7\u7684\u503c\u4e0a\u8c03\u7528\u00a0<code>for..of<\/code>\u00a0\u5e76\u8fdb\u884c\u8d4b\u503c\u7684\u64cd\u4f5c\u7684\u8bed\u6cd5\u7cd6\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u8d4b\u503c\u7ed9\u7b49\u53f7\u5de6\u4fa7\u7684\u4efb\u4f55\u5185\u5bb9<br \/>\n\u6211\u4eec\u53ef\u4ee5\u5728\u7b49\u53f7\u5de6\u4fa7\u4f7f\u7528\u4efb\u4f55\u201c\u53ef\u4ee5\u88ab\u8d4b\u503c\u7684\u201d\u4e1c\u897f\u3002<br \/>\n\u4f8b\u5982\uff0c\u4e00\u4e2a\u5bf9\u8c61\u7684\u5c5e\u6027\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let user = {};\n[user.name, user.surname] = &quot;John Smith&quot;.split(' ');\n\nalert(user.name); \/\/ John\nalert(user.surname); \/\/ Smith\n<\/code><\/pre>\n<blockquote>\n<p>\u4e0e .entries() \u65b9\u6cd5\u8fdb\u884c\u5faa\u73af\u64cd\u4f5c<br \/>\n\u5728\u524d\u9762\u7684\u7ae0\u8282\u4e2d\u6211\u4eec\u5df2\u7ecf\u89c1\u8fc7\u4e86\u00a0<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/entries\">Object.entries(obj)<\/a>\u00a0\u65b9\u6cd5\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u5c06 .entries() \u65b9\u6cd5\u4e0e\u89e3\u6784\u8bed\u6cd5\u4e00\u540c\u4f7f\u7528\uff0c\u6765\u904d\u5386\u4e00\u4e2a\u5bf9\u8c61\u7684\u201c\u952e\u2014\u503c\u201d\u5bf9\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  age: 30\n};\n\n\/\/ \u4f7f\u7528\u5faa\u73af\u904d\u5386\u952e\u2014\u503c\u5bf9\nfor (let [key, value] of Object.entries(user)) {\n  alert(`${key}:${value}`); \/\/ name:John, then age:30\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u7528\u4e8e\u00a0<code>Map<\/code>\u00a0\u7684\u7c7b\u4f3c\u4ee3\u7801\u66f4\u7b80\u5355\uff0c\u56e0\u4e3a Map \u662f\u53ef\u8fed\u4ee3\u7684<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let user = new Map();\nuser.set(&quot;name&quot;, &quot;John&quot;);\nuser.set(&quot;age&quot;, &quot;30&quot;);\n\n\/\/ Map \u662f\u4ee5 [key, value] \u5bf9\u7684\u5f62\u5f0f\u8fdb\u884c\u8fed\u4ee3\u7684\uff0c\u975e\u5e38\u4fbf\u4e8e\u89e3\u6784\nfor (let [key, value] of user) {\n  alert(`${key}:${value}`); \/\/ name:John, then age:30\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u4ea4\u6362\u53d8\u91cf\u503c\u7684\u6280\u5de7<br \/>\n\u4f7f\u7528\u89e3\u6784\u8d4b\u503c\u6765\u4ea4\u6362\u4e24\u4e2a\u53d8\u91cf\u7684\u503c\u662f\u4e00\u4e2a\u8457\u540d\u7684\u6280\u5de7\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let guest = &quot;Jane&quot;;\nlet admin = &quot;Pete&quot;;\n\n\/\/ \u8ba9\u6211\u4eec\u6765\u4ea4\u6362\u53d8\u91cf\u7684\u503c\uff1a\u4f7f\u5f97 guest = Pete\uff0cadmin = Jane\n[guest, admin] = [admin, guest];\n\nalert(`${guest} ${admin}`); \/\/ Pete Jane\uff08\u6210\u529f\u4ea4\u6362\uff01\uff09\n<\/code><\/pre>\n<blockquote>\n<p>\u8fd9\u91cc\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u7531\u4e24\u4e2a\u53d8\u91cf\u7ec4\u6210\u7684\u4e34\u65f6\u6570\u7ec4\uff0c\u5e76\u4e14\u7acb\u5373\u4ee5\u98a0\u5012\u7684\u987a\u5e8f\u5bf9\u5176\u8fdb\u884c\u4e86\u89e3\u6784\u8d4b\u503c\u3002<br \/>\n\u6211\u4eec\u4e5f\u53ef\u4ee5\u7528\u8fd9\u79cd\u65b9\u5f0f\u4ea4\u6362\u4e24\u4e2a\u4ee5\u4e0a\u7684\u53d8\u91cf\u3002<\/p>\n<\/blockquote>\n<h5>\u5269\u4f59\u7684...<\/h5>\n<p>\u901a\u5e38\uff0c\u5982\u679c\u6570\u7ec4\u6bd4\u5de6\u8fb9\u7684\u5217\u8868\u957f\uff0c\u90a3\u4e48\u201c\u5176\u4f59\u201d\u7684\u6570\u7ec4\u9879\u4f1a\u88ab\u7701\u7565\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u8fd8\u60f3\u6536\u96c6\u5176\u4f59\u7684\u6570\u7ec4\u9879 \u2014\u2014 \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4e09\u4e2a\u70b9\u00a0<code>&quot;...&quot;<\/code>\u00a0\u6765\u518d\u52a0\u4e00\u4e2a\u53c2\u6570\u4ee5\u83b7\u53d6\u5176\u4f59\u6570\u7ec4\u9879<\/p>\n<pre><code class=\"language-js\">let [name1, name2, ...rest] = [&quot;Julius&quot;, &quot;Caesar&quot;, &quot;Consul&quot;, &quot;of the Roman Republic&quot;];\n\n\/\/ rest \u662f\u5305\u542b\u4ece\u7b2c\u4e09\u9879\u5f00\u59cb\u7684\u5176\u4f59\u6570\u7ec4\u9879\u7684\u6570\u7ec4\nalert(rest[0]); \/\/ Consul\nalert(rest[1]); \/\/ of the Roman Republic\nalert(rest.length); \/\/ 2\n<\/code><\/pre>\n<p>\u53ea\u8981\u786e\u4fdd\u5b83\u524d\u9762\u6709\u4e09\u4e2a\u70b9\uff0c\u5e76\u4e14\u5728\u89e3\u6784\u8d4b\u503c\u7684\u6700\u540e\u4e00\u4e2a\u53c2\u6570\u4f4d\u7f6e\u4e0a\u5c31\u884c\u4e86<\/p>\n<h5>\u9ed8\u8ba4\u503c<\/h5>\n<p>\u5982\u679c\u6570\u7ec4\u6bd4\u5de6\u8fb9\u7684\u53d8\u91cf\u5217\u8868\u77ed\uff0c\u8fd9\u91cc\u4e0d\u4f1a\u51fa\u73b0\u62a5\u9519\u3002\u7f3a\u5c11\u5bf9\u5e94\u503c\u7684\u53d8\u91cf\u90fd\u4f1a\u88ab\u8d4b\u00a0<code>undefined<\/code><br \/>\n\u5982\u679c\u6211\u4eec\u60f3\u8981\u4e00\u4e2a\u201c\u9ed8\u8ba4\u201d\u503c\u7ed9\u672a\u8d4b\u503c\u7684\u53d8\u91cf\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>=<\/code>\u00a0\u6765\u63d0\u4f9b<\/p>\n<pre><code class=\"language-js\">\/\/ \u9ed8\u8ba4\u503c\nlet [name = &quot;Guest&quot;, surname = &quot;Anonymous&quot;] = [&quot;Julius&quot;];\n\nalert(name);    \/\/ Julius\uff08\u6765\u81ea\u6570\u7ec4\u7684\u503c\uff09\nalert(surname); \/\/ Anonymous\uff08\u9ed8\u8ba4\u503c\u88ab\u4f7f\u7528\u4e86\uff09\n<\/code><\/pre>\n<p>\u9ed8\u8ba4\u503c\u53ef\u4ee5\u662f\u66f4\u52a0\u590d\u6742\u7684\u8868\u8fbe\u5f0f\uff0c\u751a\u81f3\u53ef\u4ee5\u662f\u51fd\u6570\u8c03\u7528\u3002\u4e0d\u8fc7\uff0c\u8fd9\u4e9b\u8868\u8fbe\u5f0f\u6216\u51fd\u6570\u53ea\u4f1a\u5728\u8fd9\u4e2a\u53d8\u91cf\u672a\u88ab\u8d4b\u503c\u7684\u65f6\u5019\u624d\u4f1a\u88ab\u8ba1\u7b97\u3002<br \/>\n\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u6211\u4eec\u4f7f\u7528\u4e86\u00a0<code>prompt<\/code>\u00a0\u51fd\u6570\u6765\u63d0\u4f9b\u4e24\u4e2a\u9ed8\u8ba4\u503c\uff1a<\/p>\n<pre><code class=\"language-js\">\/\/ \u53ea\u4f1a\u63d0\u793a\u8f93\u5165\u59d3\u6c0f\nlet [name = prompt('name?'), surname = prompt('surname?')] = [&quot;Julius&quot;];\n\nalert(name);    \/\/ Julius\uff08\u6765\u81ea\u6570\u7ec4\uff09\nalert(surname); \/\/ \u4f60\u8f93\u5165\u7684\u503c\n<\/code><\/pre>\n<p>\u8bf7\u6ce8\u610f\uff1a<code>prompt<\/code>\u00a0\u5c06\u4ec5\u9488\u5bf9\u7f3a\u5931\u503c\uff08<code>surname<\/code>\uff09\u8fd0\u884c\u3002<\/p>\n<h4>\u5bf9\u8c61\u89e3\u6784<\/h4>\n<p>\u540c\u6837\u9002\u7528\u4e8e\u5bf9\u8c61<\/p>\n<pre><code class=\"language-js\">let {var1, var2} = {var1:\u2026, var2:\u2026}\n<\/code><\/pre>\n<p>\u5728\u7b49\u53f7\u53f3\u4fa7\u662f\u4e00\u4e2a\u5df2\u7ecf\u5b58\u5728\u7684\u5bf9\u8c61\uff0c\u6211\u4eec\u60f3\u628a\u5b83\u62c6\u5206\u5230\u53d8\u91cf\u4e2d\u3002\u7b49\u53f7\u5de6\u4fa7\u5305\u542b\u4e86\u5bf9\u8c61\u76f8\u5e94\u5c5e\u6027\u7684\u4e00\u4e2a\u7c7b\u5bf9\u8c61\u201c\u6a21\u5f0f\uff08pattern\uff09\u201d\u3002\u5728\u6700\u7b80\u5355\u7684\u60c5\u51b5\u4e0b\uff0c\u7b49\u53f7\u5de6\u4fa7\u7684\u5c31\u662f\u00a0<code>{...}<\/code>\u00a0\u4e2d\u7684\u53d8\u91cf\u540d\u5217\u8868\u3002<br \/>\n\u7b49\u53f7\u5de6\u4fa7\u7684\u6a21\u5f0f\uff08pattern\uff09\u53ef\u4ee5\u66f4\u52a0\u590d\u6742\uff0c\u6307\u5b9a\u5c5e\u6027\u548c\u53d8\u91cf\u4e4b\u95f4\u7684\u6620\u5c04\u5173\u7cfb\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u60f3\u628a\u4e00\u4e2a\u5c5e\u6027\u8d4b\u503c\u7ed9\u53e6\u4e00\u4e2a\u540d\u5b57\u7684\u53d8\u91cf\uff0c\u6bd4\u5982\u628a\u00a0<code>options.width<\/code>\u00a0\u5c5e\u6027\u8d4b\u503c\u7ed9\u540d\u4e3a\u00a0<code>w<\/code>\u00a0\u7684\u53d8\u91cf\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5192\u53f7\u6765\u8bbe\u7f6e\u53d8\u91cf\u540d\u79f0\uff1a<\/p>\n<pre><code class=\"language-js\">let options = {\n  title: &quot;Menu&quot;,\n  width: 100,\n  height: 200\n};\n\n\/\/ { sourceProperty: targetVariable }\nlet {width: w, height: h, title} = options;\n\n\/\/ width -&gt; w\n\/\/ height -&gt; h\n\/\/ title -&gt; title\n\nalert(title);  \/\/ Menu\nalert(w);      \/\/ 100\nalert(h);      \/\/ 200\n<\/code><\/pre>\n<p>\u5192\u53f7\u7684\u8bed\u6cd5\u662f\u201c\u4ece\u5bf9\u8c61\u4e2d\u4ec0\u4e48\u5c5e\u6027\u7684\u503c\uff1a\u8d4b\u503c\u7ed9\u54ea\u4e2a\u53d8\u91cf\u201d\u3002\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u5c5e\u6027\u00a0<code>width<\/code>\u00a0\u88ab\u8d4b\u503c\u7ed9\u4e86\u00a0<code>w<\/code>\uff0c\u5c5e\u6027\u00a0<code>height<\/code>\u00a0\u88ab\u8d4b\u503c\u7ed9\u4e86\u00a0<code>h<\/code>\uff0c\u5c5e\u6027\u00a0<code>title<\/code>\u00a0\u88ab\u8d4b\u503c\u7ed9\u4e86\u540c\u540d\u53d8\u91cf\u3002<\/p>\n<p>\u5bf9\u4e8e\u53ef\u80fd\u7f3a\u5931\u7684\u5c5e\u6027\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>&quot;=&quot;<\/code>\u00a0\u8bbe\u7f6e\u9ed8\u8ba4\u503c<br \/>\n\u5c31\u50cf\u6570\u7ec4\u6216\u51fd\u6570\u53c2\u6570\u4e00\u6837\uff0c\u9ed8\u8ba4\u503c\u53ef\u4ee5\u662f\u4efb\u610f\u8868\u8fbe\u5f0f\u751a\u81f3\u53ef\u4ee5\u662f\u51fd\u6570\u8c03\u7528\u3002\u5b83\u4eec\u53ea\u4f1a\u5728\u672a\u63d0\u4f9b\u5bf9\u5e94\u7684\u503c\u65f6\u624d\u4f1a\u88ab\u8ba1\u7b97\/\u8c03\u7528\u3002<br \/>\n\u8fd8\u53ef\u4ee5\u5c06\u5192\u53f7\u548c\u7b49\u53f7\u7ed3\u5408\u8d77\u6765<\/p>\n<pre><code class=\"language-js\">let options = {\n  title: &quot;Menu&quot;\n};\n\nlet {width: w = 100, height: h = 200, title} = options;\n\nalert(title);  \/\/ Menu\nalert(w);      \/\/ 100\nalert(h);      \/\/ 200\n<\/code><\/pre>\n<h5>\u5269\u4f59\u6a21\u5f0f...<\/h5>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5269\u4f59\u6a21\u5f0f\uff08pattern\uff09\uff0c\u4e0e\u6570\u7ec4\u7c7b\u4f3c\u3002<\/p>\n<pre><code class=\"language-js\">let options = {\n  title: &quot;Menu&quot;,\n  height: 200,\n  width: 100\n};\n\n\/\/ title = \u540d\u4e3a title \u7684\u5c5e\u6027\n\/\/ rest = \u5b58\u6709\u5269\u4f59\u5c5e\u6027\u7684\u5bf9\u8c61\nlet {title, ...rest} = options;\n\n\/\/ \u73b0\u5728 title=&quot;Menu&quot;, rest={height: 200, width: 100}\nalert(rest.height);  \/\/ 200\nalert(rest.width);   \/\/ 100\n<\/code><\/pre>\n<blockquote>\n<p>\u4e0d\u4f7f\u7528\u00a0<code>let<\/code>\u00a0\u65f6\u7684\u9677\u9631<br \/>\n\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u53d8\u91cf\u90fd\u662f\u5728\u8d4b\u503c\u4e2d\u901a\u8fc7\u6b63\u786e\u65b9\u5f0f\u58f0\u660e\u7684\uff1a<code>let {\u2026} = {\u2026}<\/code>\u3002\u5f53\u7136\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u4f7f\u7528\u5df2\u6709\u7684\u53d8\u91cf\uff0c\u800c\u4e0d\u7528\u00a0<code>let<\/code>\uff0c\u4f46\u8fd9\u91cc\u6709\u4e00\u4e2a\u9677\u9631\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let title, width, height;\n\n\/\/ \u8fd9\u4e00\u884c\u53d1\u751f\u4e86\u9519\u8bef\n{title, width, height} = {title: &quot;Menu&quot;, width: 200, height: 100};\n<\/code><\/pre>\n<blockquote>\n<p>\u95ee\u9898\u5728\u4e8e JavaScript \u628a\u4e3b\u4ee3\u7801\u6d41\uff08\u5373\u4e0d\u5728\u5176\u4ed6\u8868\u8fbe\u5f0f\u4e2d\uff09\u7684\u00a0<code>{...}<\/code>\u00a0\u5f53\u505a\u4e00\u4e2a\u4ee3\u7801\u5757\u3002\u8fd9\u6837\u7684\u4ee3\u7801\u5757\u53ef\u4ee5\u7528\u4e8e\u5bf9\u8bed\u53e5\u5206\u7ec4\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">{\n  \/\/ \u4e00\u4e2a\u4ee3\u7801\u5757\n  let message = &quot;Hello&quot;;\n  \/\/ ...\n  alert( message );\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u56e0\u6b64\uff0c\u8fd9\u91cc JavaScript \u5047\u5b9a\u6211\u4eec\u6709\u4e00\u4e2a\u4ee3\u7801\u5757\uff0c\u8fd9\u5c31\u662f\u62a5\u9519\u7684\u539f\u56e0\u3002\u6211\u4eec\u9700\u8981\u89e3\u6784\u5b83\u3002<br \/>\n\u4e3a\u4e86\u544a\u8bc9 JavaScript \u8fd9\u4e0d\u662f\u4e00\u4e2a\u4ee3\u7801\u5757\uff0c\u6211\u4eec\u53ef\u4ee5\u628a\u6574\u4e2a\u8d4b\u503c\u8868\u8fbe\u5f0f\u7528\u62ec\u53f7\u00a0<code>(...)<\/code>\u00a0\u5305\u8d77\u6765<\/p>\n<\/blockquote>\n<pre><code class=\"language-js\">let title, width, height;\n\n\/\/ \u73b0\u5728\u5c31\u53ef\u4ee5\u4e86\n({title, width, height} = {title: &quot;Menu&quot;, width: 200, height: 100});\n\nalert( title ); \/\/ Menu\n<\/code><\/pre>\n<h4>\u5d4c\u5957\u89e3\u6784<\/h4>\n<p>\u5982\u679c\u4e00\u4e2a\u5bf9\u8c61\u6216\u6570\u7ec4\u5d4c\u5957\u4e86\u5176\u4ed6\u7684\u5bf9\u8c61\u548c\u6570\u7ec4\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u7b49\u53f7\u5de6\u4fa7\u4f7f\u7528\u66f4\u590d\u6742\u7684\u6a21\u5f0f\uff08pattern\uff09\u6765\u63d0\u53d6\u66f4\u6df1\u5c42\u7684\u6570\u636e\u3002<br \/>\n\u5728\u4e0b\u9762\u7684\u4ee3\u7801\u4e2d\uff0c<code>options<\/code>\u00a0\u7684\u5c5e\u6027\u00a0<code>size<\/code>\u00a0\u662f\u53e6\u4e00\u4e2a\u5bf9\u8c61\uff0c\u5c5e\u6027\u00a0<code>items<\/code>\u00a0\u662f\u53e6\u4e00\u4e2a\u6570\u7ec4\u3002\u8d4b\u503c\u8bed\u53e5\u4e2d\u7b49\u53f7\u5de6\u4fa7\u7684\u6a21\u5f0f\uff08pattern\uff09\u5177\u6709\u76f8\u540c\u7684\u7ed3\u6784\u4ee5\u4ece\u4e2d\u63d0\u53d6\u503c\uff1a<\/p>\n<pre><code class=\"language-js\">let options = {\n  size: {\n    width: 100,\n    height: 200\n  },\n  items: [&quot;Cake&quot;, &quot;Donut&quot;],\n  extra: true\n};\n\n\/\/ \u4e3a\u4e86\u6e05\u6670\u8d77\u89c1\uff0c\u89e3\u6784\u8d4b\u503c\u8bed\u53e5\u88ab\u5199\u6210\u591a\u884c\u7684\u5f62\u5f0f\nlet {\n  size: { \/\/ \u628a size \u8d4b\u503c\u5230\u8fd9\u91cc\n    width,\n    height\n  },\n  items: [item1, item2], \/\/ \u628a items \u8d4b\u503c\u5230\u8fd9\u91cc\n  title = &quot;Menu&quot; \/\/ \u5728\u5bf9\u8c61\u4e2d\u4e0d\u5b58\u5728\uff08\u4f7f\u7528\u9ed8\u8ba4\u503c\uff09\n} = options;\n\nalert(title);  \/\/ Menu\nalert(width);  \/\/ 100\nalert(height); \/\/ 200\nalert(item1);  \/\/ Cake\nalert(item2);  \/\/ Donut\n<\/code><\/pre>\n<p>\u6700\u7ec8\uff0c\u6211\u4eec\u5f97\u5230\u4e86\u00a0<code>width<\/code>\u3001<code>height<\/code>\u3001<code>item1<\/code>\u3001<code>item2<\/code>\u00a0\u548c\u5177\u6709\u9ed8\u8ba4\u503c\u7684\u00a0<code>title<\/code>\u00a0\u53d8\u91cf\u3002<br \/>\n\u6ce8\u610f\uff0c<code>size<\/code>\u00a0\u548c\u00a0<code>items<\/code>\u00a0\u6ca1\u6709\u5bf9\u5e94\u7684\u53d8\u91cf\uff0c\u56e0\u4e3a\u6211\u4eec\u53d6\u7684\u662f\u5b83\u4eec\u7684\u5185\u5bb9\u3002<\/p>\n<h4>\u667a\u80fd\u51fd\u6570\u53c2\u6570<\/h4>\n<p>\u6709\u65f6\uff0c\u4e00\u4e2a\u51fd\u6570\u6709\u5f88\u591a\u53c2\u6570\uff0c\u5176\u4e2d\u5927\u90e8\u5206\u7684\u53c2\u6570\u90fd\u662f\u53ef\u9009\u7684\u3002\u5bf9\u7528\u6237\u754c\u9762\u6765\u8bf4\u66f4\u662f\u5982\u6b64\u3002\u60f3\u8c61\u4e00\u4e2a\u521b\u5efa\u83dc\u5355\u7684\u51fd\u6570\u3002\u5b83\u53ef\u80fd\u5177\u6709\u5bbd\u5ea6\u53c2\u6570\uff0c\u9ad8\u5ea6\u53c2\u6570\uff0c\u6807\u9898\u53c2\u6570\u548c\u9879\u76ee\u5217\u8868\u7b49\u3002<br \/>\n\u4e0b\u9762\u662f\u5b9e\u73b0\u8fd9\u79cd\u51fd\u6570\u7684\u4e00\u4e2a\u5f88\u4e0d\u597d\u7684\u5199\u6cd5\uff1a<\/p>\n<pre><code class=\"language-js\">function showMenu(title = &quot;Untitled&quot;, width = 200, height = 100, items = []) {\n  \/\/ ...\n}\n<\/code><\/pre>\n<p>\u5728\u5b9e\u9645\u5f00\u53d1\u4e2d\uff0c\u8bb0\u5fc6\u5982\u6b64\u591a\u7684\u53c2\u6570\u7684\u4f4d\u7f6e\u662f\u4e00\u4e2a\u5f88\u5927\u7684\u8d1f\u62c5\u3002\u901a\u5e38\u96c6\u6210\u5f00\u53d1\u73af\u5883\uff08IDE\uff09\u4f1a\u5c3d\u529b\u5e2e\u52a9\u6211\u4eec\uff0c\u7279\u522b\u662f\u5f53\u4ee3\u7801\u6709\u826f\u597d\u7684\u6587\u6863\u6ce8\u91ca\u7684\u65f6\u5019\uff0c\u4f46\u662f\u2026\u2026 \u53e6\u4e00\u4e2a\u95ee\u9898\u5c31\u662f\uff0c\u5728\u5927\u90e8\u5206\u7684\u53c2\u6570\u53ea\u9700\u91c7\u7528\u9ed8\u8ba4\u503c\u7684\u60c5\u51b5\u4e0b\uff0c\u8c03\u7528\u8fd9\u4e2a\u51fd\u6570\u65f6\u4f1a\u9700\u8981\u5199\u5927\u91cf\u7684 undefined\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ \u5728\u91c7\u7528\u9ed8\u8ba4\u503c\u5c31\u53ef\u4ee5\u7684\u4f4d\u7f6e\u8bbe\u7f6e undefined\nshowMenu(&quot;My Menu&quot;, undefined, undefined, [&quot;Item1&quot;, &quot;Item2&quot;])\n<\/code><\/pre>\n<p>\u8fd9\u592a\u96be\u770b\u4e86\u3002\u800c\u4e14\uff0c\u5f53\u6211\u4eec\u5904\u7406\u66f4\u591a\u53c2\u6570\u7684\u65f6\u5019\u53ef\u8bfb\u6027\u4f1a\u53d8\u5f97\u5f88\u5dee\u3002<br \/>\n\u89e3\u6784\u8d4b\u503c\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e9b\u95ee\u9898\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u7528\u4e00\u4e2a\u5bf9\u8c61\u6765\u4f20\u9012\u6240\u6709\u53c2\u6570\uff0c\u800c\u51fd\u6570\u8d1f\u8d23\u628a\u8fd9\u4e2a\u5bf9\u8c61\u89e3\u6784\u6210\u5404\u4e2a\u53c2\u6570<\/p>\n<pre><code class=\"language-js\">\/\/ \u6211\u4eec\u4f20\u9012\u4e00\u4e2a\u5bf9\u8c61\u7ed9\u51fd\u6570\nlet options = {\n  title: &quot;My menu&quot;,\n  items: [&quot;Item1&quot;, &quot;Item2&quot;]\n};\n\n\/\/ \u2026\u2026\u7136\u540e\u51fd\u6570\u9a6c\u4e0a\u628a\u5bf9\u8c61\u89e3\u6784\u6210\u53d8\u91cf\nfunction showMenu({title = &quot;Untitled&quot;, width = 200, height = 100, items = []}) {\n  \/\/ title, items \u2013 \u63d0\u53d6\u4e8e options\uff0c\n  \/\/ width, height \u2013 \u4f7f\u7528\u9ed8\u8ba4\u503c\n  alert( `${title} ${width} ${height}` ); \/\/ My Menu 200 100\n  alert( items ); \/\/ Item1, Item2\n}\n\nshowMenu(options);\n<\/code><\/pre>\n<p>\u6211\u4eec\u4e5f\u53ef\u4ee5\u4f7f\u7528\u5e26\u6709\u5d4c\u5957\u5bf9\u8c61\u548c\u5192\u53f7\u6620\u5c04\u7684\u66f4\u52a0\u590d\u6742\u7684\u89e3\u6784<\/p>\n<pre><code class=\"language-js\">let options = {\n  title: &quot;My menu&quot;,\n  items: [&quot;Item1&quot;, &quot;Item2&quot;]\n};\n\nfunction showMenu({\n  title = &quot;Untitled&quot;,\n  width: w = 100,  \/\/ width goes to w\n  height: h = 200, \/\/ height goes to h\n  items: [item1, item2] \/\/ items first element goes to item1, second to item2\n}) {\n  alert( `${title} ${w} ${h}` ); \/\/ My Menu 100 200\n  alert( item1 ); \/\/ Item1\n  alert( item2 ); \/\/ Item2\n}\n\nshowMenu(options);\n<\/code><\/pre>\n<p>\u8bf7\u6ce8\u610f\uff0c\u8fd9\u79cd\u89e3\u6784\u5047\u5b9a\u4e86\u00a0<code>showMenu()<\/code>\u00a0\u51fd\u6570\u786e\u5b9e\u5b58\u5728\u53c2\u6570\u3002\u5982\u679c\u6211\u4eec\u60f3\u8ba9\u6240\u6709\u7684\u53c2\u6570\u90fd\u4f7f\u7528\u9ed8\u8ba4\u503c\uff0c\u90a3\u6211\u4eec\u5e94\u8be5\u4f20\u9012\u4e00\u4e2a\u7a7a\u5bf9\u8c61\uff1a<\/p>\n<pre><code class=\"language-js\">showMenu({}); \/\/ \u4e0d\u9519\uff0c\u6240\u6709\u503c\u90fd\u53d6\u9ed8\u8ba4\u503c\n\nshowMenu(); \/\/ \u8fd9\u6837\u4f1a\u5bfc\u81f4\u9519\u8bef\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6307\u5b9a\u7a7a\u5bf9\u8c61\u00a0<code>{}<\/code>\u00a0\u4e3a\u6574\u4e2a\u53c2\u6570\u5bf9\u8c61\u7684\u9ed8\u8ba4\u503c\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff1a<\/p>\n<pre><code class=\"language-js\">function showMenu({ title = &quot;Menu&quot;, width = 100, height = 200 } = {}) {\n  alert( `${title} ${width} ${height}` );\n}\n\nshowMenu(); \/\/ Menu 100 200\n<\/code><\/pre>\n<h3>\u65e5\u671f\u548c\u65f6\u95f4<\/h3>\n<p>\u8ba9\u6211\u4eec\u6765\u5b66\u4e60\u4e00\u4e2a\u65b0\u7684\u5185\u5efa\u5bf9\u8c61\uff1a<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\">\u65e5\u671f\uff08Date\uff09<\/a>\u3002\u8be5\u5bf9\u8c61\u5b58\u50a8\u65e5\u671f\u548c\u65f6\u95f4\uff0c\u5e76\u63d0\u4f9b\u4e86\u65e5\u671f\/\u65f6\u95f4\u7684\u7ba1\u7406\u65b9\u6cd5\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u5b58\u50a8\u521b\u5efa\/\u4fee\u6539\u65f6\u95f4\uff0c\u6d4b\u91cf\u65f6\u95f4\uff0c\u6216\u8005\u4ec5\u7528\u6765\u6253\u5370\u5f53\u524d\u65f6\u95f4\u3002<\/p>\n<h4>\u521b\u5efa<\/h4>\n<p>\u8c03\u7528\u00a0<code>new Date()<\/code>\u00a0\u6765\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u3002\u5728\u8c03\u7528\u65f6\u53ef\u4ee5\u5e26\u6709\u4e00\u4e9b\u53c2\u6570\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n<pre><code class=\"language-js\">\/\/ new Date()\n\/\/ \u4e0d\u5e26\u53c2\u6570 \u2014\u2014 \u521b\u5efa\u4e00\u4e2a\u8868\u793a\u5f53\u524d\u65e5\u671f\u548c\u65f6\u95f4\u7684\u00a0`Date`\u00a0\u5bf9\u8c61\nlet now = new Date();\nalert( now ); \/\/ \u663e\u793a\u5f53\u524d\u7684\u65e5\u671f\/\u65f6\u95f4\n\n\/\/ new Date(milliseconds)\n\/\/ \u521b\u5efa\u4e00\u4e2a\u00a0`Date`\u00a0\u5bf9\u8c61\uff0c\u5176\u65f6\u95f4\u7b49\u4e8e 1970 \u5e74 1 \u6708 1 \u65e5 UTC+0 \u4e4b\u540e\u7ecf\u8fc7\u7684\u6beb\u79d2\u6570\uff081\/1000 \u79d2\uff09\n\/\/ 0 \u8868\u793a 01.01.1970 UTC+0\nlet Jan01_1970 = new Date(0);\nalert( Jan01_1970 );\n\/\/ \u73b0\u5728\u589e\u52a0 24 \u5c0f\u65f6\uff0c\u5f97\u5230 02.01.1970 UTC+0\nlet Jan02_1970 = new Date(24 * 3600 * 1000);\nalert( Jan02_1970 );\n\n\/\/ new Date(datestring)\n\/\/ \u5982\u679c\u53ea\u6709\u4e00\u4e2a\u53c2\u6570\uff0c\u5e76\u4e14\u662f\u5b57\u7b26\u4e32\uff0c\u90a3\u4e48\u5b83\u4f1a\u88ab\u81ea\u52a8\u89e3\u6790\u3002\u8be5\u7b97\u6cd5\u4e0e\u00a0`Date.parse`\u00a0\u6240\u4f7f\u7528\u7684\u7b97\u6cd5\u76f8\u540c\uff0c\u5c06\u5728\u4e0b\u6587\u4e2d\u8fdb\u884c\u4ecb\u7ecd\u3002\nlet date = new Date(&quot;2017-01-26&quot;);\nalert(date);\n\/\/ \u672a\u6307\u5b9a\u5177\u4f53\u65f6\u95f4\uff0c\u6240\u4ee5\u5047\u5b9a\u65f6\u95f4\u4e3a\u683c\u6797\u5c3c\u6cbb\u6807\u51c6\u65f6\u95f4\uff08GMT\uff09\u7684\u5348\u591c\u96f6\u70b9\n\/\/ \u5e76\u6839\u636e\u8fd0\u884c\u4ee3\u7801\u65f6\u7684\u7528\u6237\u7684\u65f6\u533a\u8fdb\u884c\u8c03\u6574\n\/\/ \u56e0\u6b64\uff0c\u7ed3\u679c\u53ef\u80fd\u662f\n\/\/ Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)\n\/\/ \u6216\n\/\/ Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)\n\n\/\/ new Date(year, month, date, hours, minutes, seconds, ms)\n\/\/ \u4f7f\u7528\u5f53\u524d\u65f6\u533a\u4e2d\u7684\u7ed9\u5b9a\u7ec4\u4ef6\u521b\u5efa\u65e5\u671f\u3002\u53ea\u6709\u524d\u4e24\u4e2a\u53c2\u6570\u662f\u5fc5\u987b\u7684\u3002\n\/\/ - `year`\u00a0\u5e94\u8be5\u662f\u56db\u4f4d\u6570\u3002\u4e3a\u4e86\u517c\u5bb9\u6027\uff0c\u4e5f\u63a5\u53d7 2 \u4f4d\u6570\uff0c\u5e76\u5c06\u5176\u89c6\u4e3a\u00a0`19xx`\uff0c\u4f8b\u5982\u00a0`98`\u00a0\u4e0e\u00a0`1998`\u00a0\u76f8\u540c\uff0c\u4f46\u5f3a\u70c8\u5efa\u8bae\u59cb\u7ec8\u4f7f\u7528 4 \u4f4d\u6570\u3002\n\/\/ - `month`\u00a0\u8ba1\u6570\u4ece\u00a0`0`\uff08\u4e00\u6708\uff09\u5f00\u59cb\uff0c\u5230\u00a0`11`\uff08\u5341\u4e8c\u6708\uff09\u7ed3\u675f\u3002\n\/\/ - `date`\u00a0\u662f\u5f53\u6708\u7684\u5177\u4f53\u67d0\u4e00\u5929\uff0c\u5982\u679c\u7f3a\u5931\uff0c\u5219\u4e3a\u9ed8\u8ba4\u503c\u00a0`1`\u3002\n\/\/ - \u5982\u679c\u00a0`hours\/minutes\/seconds\/ms`\u00a0\u7f3a\u5931\uff0c\u5219\u5747\u4e3a\u9ed8\u8ba4\u503c\u00a0`0`\u3002\nnew Date(2011, 0, 1, 0, 0, 0, 0); \/\/ 1 Jan 2011, 00:00:00\nnew Date(2011, 0, 1); \/\/ \u540c\u6837\uff0c\u65f6\u5206\u79d2\u7b49\u5747\u4e3a\u9ed8\u8ba4\u503c 0\n\/\/ \u65f6\u95f4\u5ea6\u91cf\u6700\u5927\u7cbe\u786e\u5230 1 \u6beb\u79d2\uff081\/1000 \u79d2\uff09\nnew Date(2011, 0, 1, 2, 3, 4, 567);\n\n<\/code><\/pre>\n<p>\u4f20\u5165\u7684\u6574\u6570\u53c2\u6570\u4ee3\u8868\u7684\u662f\u81ea 1970-01-01 00:00:00 \u4ee5\u6765\u7ecf\u8fc7\u7684\u6beb\u79d2\u6570\uff0c\u8be5\u6574\u6570\u88ab\u79f0\u4e3a\u00a0<strong>\u65f6\u95f4\u6233<\/strong>\u3002<br \/>\n\u8fd9\u662f\u4e00\u79cd\u65e5\u671f\u7684\u8f7b\u91cf\u7ea7\u6570\u5b57\u8868\u793a\u5f62\u5f0f\u3002\u6211\u4eec\u901a\u5e38\u4f7f\u7528\u00a0<code>new Date(timestamp)<\/code>\u00a0\u901a\u8fc7\u65f6\u95f4\u6233\u6765\u521b\u5efa\u65e5\u671f\uff0c\u5e76\u53ef\u4ee5\u4f7f\u7528\u00a0<code>date.getTime()<\/code>\u00a0\u5c06\u73b0\u6709\u7684\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u8f6c\u5316\u4e3a\u65f6\u95f4\u6233\uff08\u4e0b\u6587\u4f1a\u8bb2\u5230\uff09\u3002<br \/>\n\u5728 01.01.1970 \u4e4b\u524d\u7684\u65e5\u671f\u5e26\u6709\u8d1f\u7684\u65f6\u95f4\u6233<\/p>\n<h4>\u8bbf\u95ee\u65e5\u671f\u7ec4\u4ef6<\/h4>\n<p>\u4ece\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u4e2d\u8bbf\u95ee\u5e74\u3001\u6708\u7b49\u4fe1\u606f\u6709\u591a\u79cd\u65b9\u5f0f\uff1a<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getFullYear\">getFullYear()<\/a><br \/>\n\u83b7\u53d6\u5e74\u4efd\uff084 \u4f4d\u6570\uff09<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getMonth\">getMonth()<\/a><br \/>\n\u83b7\u53d6\u6708\u4efd\uff0c<strong>\u4ece 0 \u5230 11<\/strong>\u3002<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getDate\">getDate()<\/a><br \/>\n\u83b7\u53d6\u5f53\u6708\u7684\u5177\u4f53\u65e5\u671f\uff0c\u4ece 1 \u5230 31\uff0c\u8fd9\u4e2a\u65b9\u6cd5\u540d\u79f0\u53ef\u80fd\u770b\u8d77\u6765\u6709\u4e9b\u4ee4\u4eba\u7591\u60d1\u3002<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getHours\">getHours()<\/a>\uff0c<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getMinutes\">getMinutes()<\/a>\uff0c<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getSeconds\">getSeconds()<\/a>\uff0c<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getMilliseconds\">getMilliseconds()<\/a><br \/>\n\u83b7\u53d6\u76f8\u5e94\u7684\u65f6\u95f4\u7ec4\u4ef6\u3002<\/p>\n<blockquote>\n<p>\u4e0d\u662f\u00a0<code>getYear()<\/code>\uff0c\u800c\u662f\u00a0<code>getFullYear()<\/code><br \/>\n\u5f88\u591a JavaScript \u5f15\u64ce\u90fd\u5b9e\u73b0\u4e86\u4e00\u4e2a\u975e\u6807\u51c6\u5316\u7684\u65b9\u6cd5\u00a0<code>getYear()<\/code>\u3002\u4e0d\u63a8\u8350\u4f7f\u7528\u8fd9\u4e2a\u65b9\u6cd5\u3002\u5b83\u6709\u65f6\u5019\u53ef\u80fd\u4f1a\u8fd4\u56de 2 \u4f4d\u7684\u5e74\u4efd\u4fe1\u606f\u3002\u6c38\u8fdc\u4e0d\u8981\u4f7f\u7528\u5b83\u3002\u8981\u83b7\u53d6\u5e74\u4efd\u5c31\u4f7f\u7528\u00a0<code>getFullYear()<\/code>\u3002<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getDay\">getDay()<\/a><br \/>\n\u83b7\u53d6\u4e00\u5468\u4e2d\u7684\u7b2c\u51e0\u5929\uff0c\u4ece\u00a0<code>0<\/code>\uff08\u661f\u671f\u65e5\uff09\u5230\u00a0<code>6<\/code>\uff08\u661f\u671f\u516d\uff09\u3002\u7b2c\u4e00\u5929\u59cb\u7ec8\u662f\u661f\u671f\u65e5\uff0c\u5728\u67d0\u4e9b\u56fd\u5bb6\u53ef\u80fd\u4e0d\u662f\u8fd9\u6837\u7684\u4e60\u60ef\uff0c\u4f46\u662f\u8fd9\u4e0d\u80fd\u88ab\u6539\u53d8\u3002<br \/>\n<strong>\u4ee5\u4e0a\u7684\u6240\u6709\u65b9\u6cd5\u8fd4\u56de\u7684\u7ec4\u4ef6\u90fd\u662f\u57fa\u4e8e\u5f53\u5730\u65f6\u533a\u7684\u3002<\/strong><br \/>\n\u5f53\u7136\uff0c\u4e5f\u6709\u4e0e\u5f53\u5730\u65f6\u533a\u7684 UTC \u5bf9\u5e94\u9879\uff0c\u5b83\u4eec\u4f1a\u8fd4\u56de\u57fa\u4e8e UTC+0 \u65f6\u533a\u7684\u65e5\u3001\u6708\u3001\u5e74\u7b49\uff1a<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getUTCFullYear\">getUTCFullYear()<\/a>\uff0c<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getUTCMonth\">getUTCMonth()<\/a>\uff0c<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getUTCDay\">getUTCDay()<\/a>\u3002\u53ea\u9700\u8981\u5728\u00a0<code>&quot;get&quot;<\/code>\u00a0\u4e4b\u540e\u63d2\u5165\u00a0<code>&quot;UTC&quot;<\/code>\u00a0\u5373\u53ef\u3002<\/p>\n<p>\u9664\u4e86\u4e0a\u8ff0\u7ed9\u5b9a\u7684\u65b9\u6cd5\uff0c\u8fd8\u6709\u4e24\u4e2a\u6ca1\u6709 UTC \u53d8\u4f53\u7684\u7279\u6b8a\u65b9\u6cd5\uff1a<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getTime\">getTime()<\/a><br \/>\n\u8fd4\u56de\u65e5\u671f\u7684\u65f6\u95f4\u6233 \u2014\u2014 \u4ece 1970-1-1 00:00:00 UTC+0 \u5f00\u59cb\u5230\u73b0\u5728\u6240\u7ecf\u8fc7\u7684\u6beb\u79d2\u6570\u3002<br \/>\n<a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/getTimezoneOffset\">getTimezoneOffset()<\/a><br \/>\n\u8fd4\u56de UTC \u4e0e\u672c\u5730\u65f6\u533a\u4e4b\u95f4\u7684\u65f6\u5dee\uff0c\u4ee5\u5206\u949f\u4e3a\u5355\u4f4d<\/p>\n<h4>\u8bbe\u7f6e\u65e5\u671f\u7ec4\u4ef6<\/h4>\n<p>\u4e0b\u5217\u65b9\u6cd5\u53ef\u4ee5\u8bbe\u7f6e\u65e5\u671f\/\u65f6\u95f4\u7ec4\u4ef6\uff1a<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setFullYear\"><code>setFullYear(year, [month], [date])<\/code><\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setMonth\"><code>setMonth(month, [date])<\/code><\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setDate\"><code>setDate(date)<\/code><\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setHours\"><code>setHours(hour, [min], [sec], [ms])<\/code><\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setMinutes\"><code>setMinutes(min, [sec], [ms])<\/code><\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setSeconds\"><code>setSeconds(sec, [ms])<\/code><\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setMilliseconds\"><code>setMilliseconds(ms)<\/code><\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/zh\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Date\/setTime\"><code>setTime(milliseconds)<\/code><\/a>\uff08\u4f7f\u7528\u81ea 1970-01-01 00:00:00 UTC+0 \u4ee5\u6765\u7684\u6beb\u79d2\u6570\u6765\u8bbe\u7f6e\u6574\u4e2a\u65e5\u671f\uff09<br \/>\n\u4ee5\u4e0a\u65b9\u6cd5\u9664\u4e86\u00a0<code>setTime()<\/code>\u00a0\u90fd\u6709 UTC \u53d8\u4f53\uff0c\u4f8b\u5982\uff1a<code>setUTCHours()<\/code>\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c\u6709\u4e9b\u65b9\u6cd5\u53ef\u4ee5\u4e00\u6b21\u6027\u8bbe\u7f6e\u591a\u4e2a\u7ec4\u4ef6\uff0c\u6bd4\u5982\u00a0<code>setHours<\/code>\u3002\u672a\u63d0\u53ca\u7684\u7ec4\u4ef6\u4e0d\u4f1a\u88ab\u4fee\u6539\u3002<\/li>\n<\/ul>\n<h4>\u81ea\u52a8\u6821\u51c6<\/h4>\n<p><strong>\u81ea\u52a8\u6821\u51c6<\/strong>\u00a0\u662f\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u7684\u4e00\u4e2a\u975e\u5e38\u65b9\u4fbf\u7684\u7279\u6027\u3002\u6211\u4eec\u53ef\u4ee5\u8bbe\u7f6e\u8d85\u8303\u56f4\u7684\u6570\u503c\uff0c\u5b83\u4f1a\u81ea\u52a8\u6821\u51c6\u3002<\/p>\n<pre><code class=\"language-js\">let date = new Date(2013, 0, 32); \/\/ 32 Jan 2013 ?!?\nalert(date); \/\/ \u2026\u2026\u662f 1st Feb 2013!\n<\/code><\/pre>\n<p>\u8d85\u51fa\u8303\u56f4\u7684\u65e5\u671f\u7ec4\u4ef6\u5c06\u4f1a\u88ab\u81ea\u52a8\u5206\u914d\u3002<br \/>\n\u5047\u8bbe\u6211\u4eec\u8981\u5728\u65e5\u671f \u201c28 Feb 2016\u201d \u4e0a\u52a0 2 \u5929\u3002\u7ed3\u679c\u53ef\u80fd\u662f \u201c2 Mar\u201d \u6216 \u201c1 Mar\u201d\uff0c\u56e0\u4e3a\u5b58\u5728\u95f0\u5e74\u3002\u4f46\u662f\u6211\u4eec\u4e0d\u9700\u8981\u8003\u8651\u8fd9\u4e9b\uff0c\u53ea\u9700\u8981\u76f4\u63a5\u52a0 2 \u5929\uff0c\u5269\u4e0b\u7684\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u4f1a\u5e2e\u6211\u4eec\u5904\u7406<\/p>\n<pre><code class=\"language-js\">let date = new Date(2016, 1, 28);\ndate.setDate(date.getDate() + 2);\n\nalert( date ); \/\/ 1 Mar 2016\n<\/code><\/pre>\n<p>\u8fd9\u4e2a\u7279\u6027\u7ecf\u5e38\u88ab\u7528\u6765\u83b7\u53d6\u7ed9\u5b9a\u65f6\u95f4\u6bb5\u540e\u7684\u65e5\u671f\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u60f3\u83b7\u53d6\u201c\u73b0\u5728 70 \u79d2\u540e\u201d\u7684\u65e5\u671f<\/p>\n<pre><code class=\"language-js\">let date = new Date();\ndate.setSeconds(date.getSeconds() + 70);\n\nalert( date ); \/\/ \u663e\u793a\u6b63\u786e\u7684\u65e5\u671f\u4fe1\u606f\n<\/code><\/pre>\n<p>\u6211\u4eec\u8fd8\u53ef\u4ee5\u8bbe\u7f6e 0 \u751a\u81f3\u53ef\u4ee5\u8bbe\u7f6e\u8d1f\u503c\u3002\u4f8b\u5982<\/p>\n<pre><code class=\"language-js\">let date = new Date(2016, 0, 2); \/\/ 2016 \u5e74 1 \u6708 2 \u65e5\n\ndate.setDate(1); \/\/ \u8bbe\u7f6e\u4e3a\u5f53\u6708\u7684\u7b2c\u4e00\u5929\nalert( date );\n\ndate.setDate(0); \/\/ \u5929\u6570\u6700\u5c0f\u53ef\u4ee5\u8bbe\u7f6e\u4e3a 1\uff0c\u6240\u4ee5\u8fd9\u91cc\u8bbe\u7f6e\u7684\u662f\u4e0a\u4e00\u6708\u7684\u6700\u540e\u4e00\u5929\nalert( date ); \/\/ 31 Dec 2015\n<\/code><\/pre>\n<h4>\u65e5\u671f\u8f6c\u6362\u4e3a\u6570\u5b57<\/h4>\n<p>\u5f53\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u88ab\u8f6c\u5316\u4e3a\u6570\u5b57\u65f6\uff0c\u5f97\u5230\u7684\u662f\u5bf9\u5e94\u7684\u65f6\u95f4\u6233\uff0c\u4e0e\u4f7f\u7528\u00a0<code>date.getTime()<\/code>\u00a0\u7684\u7ed3\u679c\u76f8\u540c<br \/>\n\u6709\u4e00\u4e2a\u91cd\u8981\u7684\u526f\u4f5c\u7528\uff1a\u65e5\u671f\u53ef\u4ee5\u76f8\u51cf\uff0c\u76f8\u51cf\u7684\u7ed3\u679c\u662f\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u65f6\u95f4\u5dee\u3002<br \/>\n\u8fd9\u4e2a\u4f5c\u7528\u53ef\u4ee5\u7528\u4e8e\u65f6\u95f4\u6d4b\u91cf<\/p>\n<pre><code class=\"language-js\">let start = new Date(); \/\/ \u5f00\u59cb\u6d4b\u91cf\u65f6\u95f4\n\n\/\/ do the job\nfor (let i = 0; i &lt; 100000; i++) {\n  let doSomething = i * i * i;\n}\n\nlet end = new Date(); \/\/ \u7ed3\u675f\u6d4b\u91cf\u65f6\u95f4\n\nalert( `The loop took ${end - start} ms` );\n<\/code><\/pre>\n<h4>Date.now()<\/h4>\n<p>\u5982\u679c\u6211\u4eec\u4ec5\u4ec5\u60f3\u8981\u6d4b\u91cf\u65f6\u95f4\u95f4\u9694\uff0c\u6211\u4eec\u4e0d\u9700\u8981\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u3002<br \/>\n\u6709\u4e00\u4e2a\u7279\u6b8a\u7684\u65b9\u6cd5\u00a0<code>Date.now()<\/code>\uff0c\u5b83\u4f1a\u8fd4\u56de\u5f53\u524d\u7684\u65f6\u95f4\u6233\u3002<br \/>\n\u5b83\u76f8\u5f53\u4e8e\u00a0<code>new Date().getTime()<\/code>\uff0c\u4f46\u5b83\u4e0d\u4f1a\u521b\u5efa\u4e2d\u95f4\u7684\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u3002\u56e0\u6b64\u5b83\u66f4\u5feb\uff0c\u800c\u4e14\u4e0d\u4f1a\u5bf9\u5783\u573e\u56de\u6536\u9020\u6210\u989d\u5916\u7684\u538b\u529b\u3002<br \/>\n\u8fd9\u79cd\u65b9\u6cd5\u5f88\u591a\u65f6\u5019\u56e0\u4e3a\u65b9\u4fbf\uff0c\u53c8\u6216\u662f\u56e0\u6027\u80fd\u65b9\u9762\u7684\u8003\u8651\u800c\u88ab\u91c7\u7528\uff0c\u4f8b\u5982\u4f7f\u7528 JavaScript \u7f16\u5199\u6e38\u620f\u6216\u5176\u4ed6\u7684\u7279\u6b8a\u5e94\u7528\u573a\u666f\u3002<\/p>\n<pre><code class=\"language-js\">let start = Date.now(); \/\/ \u4ece 1 Jan 1970 \u81f3\u4eca\u7684\u65f6\u95f4\u6233\n\n\/\/ do the job\nfor (let i = 0; i &lt; 100000; i++) {\n  let doSomething = i * i * i;\n}\n\nlet end = Date.now(); \/\/ \u5b8c\u6210\n\nalert( `The loop took ${end - start} ms` ); \/\/ \u76f8\u51cf\u7684\u662f\u65f6\u95f4\u6233\uff0c\u800c\u4e0d\u662f\u65e5\u671f\n<\/code><\/pre>\n<h4>\u57fa\u51c6\u6d4b\u8bd5Benchmarking<\/h4>\n<p>\u5728\u5bf9\u4e00\u4e2a\u5f88\u8017 CPU \u6027\u80fd\u7684\u51fd\u6570\u8fdb\u884c\u53ef\u9760\u7684\u57fa\u51c6\u6d4b\u8bd5\uff08Benchmarking\uff09\u65f6\uff0c\u6211\u4eec\u9700\u8981\u8c28\u614e\u4e00\u70b9\u3002<br \/>\n\u4f8b\u5982\uff0c\u6211\u4eec\u60f3\u5224\u65ad\u4ee5\u4e0b\u4e24\u4e2a\u8ba1\u7b97\u65e5\u671f\u5dee\u503c\u7684\u51fd\u6570\uff1a\u54ea\u4e2a\u66f4\u5feb\uff1f<br \/>\n\u8fd9\u79cd\u6027\u80fd\u6d4b\u91cf\u901a\u5e38\u79f0\u4e3a\u201c\u57fa\u51c6\u6d4b\u8bd5\uff08benchmark\uff09\u201d\u3002<\/p>\n<pre><code class=\"language-js\">\/\/ \u6211\u4eec\u6709 date1 \u548c date2\uff0c\u54ea\u4e2a\u51fd\u6570\u4f1a\u66f4\u5feb\u5730\u8fd4\u56de\u4e24\u8005\u7684\u65f6\u95f4\u5dee\uff1f\nfunction diffSubtract(date1, date2) {\n  return date2 - date1;\n}\n\n\/\/ or\nfunction diffGetTime(date1, date2) {\n  return date2.getTime() - date1.getTime();\n}\n<\/code><\/pre>\n<p>\u8fd9\u4e24\u4e2a\u51fd\u6570\u505a\u7684\u4e8b\u60c5\u5b8c\u5168\u76f8\u540c\uff0c\u4f46\u662f\u5176\u4e2d\u4e00\u4e2a\u51fd\u6570\u4f7f\u7528\u663e\u5f0f\u7684\u00a0<code>date.getTime()<\/code>\u00a0\u6765\u83b7\u53d6\u6beb\u79d2\u5f62\u5f0f\u7684\u65e5\u671f\uff0c\u53e6\u4e00\u4e2a\u5219\u4f9d\u8d56\u4e8e\u201c\u65e5\u671f \u2014 \u6570\u5b57\u201d\u7684\u8f6c\u6362\u3002\u5b83\u4eec\u7684\u7ed3\u679c\u662f\u4e00\u6837\u7684\u3002<br \/>\n\u90a3\u4e48\uff0c\u54ea\u4e2a\u66f4\u5feb\u5462\uff1f<br \/>\n\u9996\u5148\u60f3\u5230\u7684\u65b9\u6cd5\u53ef\u80fd\u662f\u8fde\u7eed\u8fd0\u884c\u4e24\u8005\u5f88\u591a\u6b21\uff0c\u5e76\u8ba1\u7b97\u6240\u6d88\u8017\u7684\u65f6\u95f4\u4e4b\u5dee\u3002\u5c31\u8fd9\u4e2a\u4f8b\u5b50\u800c\u8a00\uff0c\u51fd\u6570\u8fc7\u4e8e\u7b80\u5355\uff0c\u6240\u4ee5\u6211\u4eec\u5fc5\u987b\u6267\u884c\u81f3\u5c11 100000 \u6b21\u3002<\/p>\n<pre><code class=\"language-js\">function diffSubtract(date1, date2) {\n  return date2 - date1;\n}\n\nfunction diffGetTime(date1, date2) {\n  return date2.getTime() - date1.getTime();\n}\n\nfunction bench(f) {\n  let date1 = new Date(0);\n  let date2 = new Date();\n\n  let start = Date.now();\n  for (let i = 0; i &lt; 100000; i++) f(date1, date2);\n  return Date.now() - start;\n}\n\nalert( 'Time of diffSubtract: ' + bench(diffSubtract) + 'ms' );\nalert( 'Time of diffGetTime: ' + bench(diffGetTime) + 'ms' );\n<\/code><\/pre>\n<p>\u770b\u8d77\u6765\u4f7f\u7528\u00a0<code>getTime()<\/code>\u00a0\u8fd9\u79cd\u65b9\u5f0f\u5feb\u5f97\u591a\uff0c\u8fd9\u662f\u56e0\u4e3a\u5b83\u6ca1\u6709\u8fdb\u884c\u7c7b\u578b\u8f6c\u6362\uff0c\u5bf9\u5f15\u64ce\u4f18\u5316\u6765\u8bf4\u66f4\u52a0\u7b80\u5355\u3002<br \/>\n\u6211\u4eec\u5f97\u5230\u4e86\u7ed3\u8bba\uff0c\u4f46\u662f\u8fd9\u5e76\u4e0d\u662f\u4e00\u4e2a\u5f88\u597d\u7684\u5ea6\u91cf\u7684\u4f8b\u5b50\u3002<br \/>\n\u60f3\u8c61\u4e00\u4e0b\u5f53\u8fd0\u884c\u00a0<code>bench(diffSubtract)<\/code>\u00a0\u7684\u540c\u65f6\uff0cCPU \u8fd8\u5728\u5e76\u884c\u5904\u7406\u5176\u4ed6\u4e8b\u52a1\uff0c\u5e76\u4e14\u8fd9\u4e5f\u4f1a\u5360\u7528\u8d44\u6e90\u3002\u7136\u800c\uff0c\u8fd0\u884c\u00a0<code>bench(diffGetTime)<\/code>\u00a0\u7684\u65f6\u5019\uff0c\u5e76\u884c\u5904\u7406\u7684\u4e8b\u52a1\u5b8c\u6210\u4e86\u3002<br \/>\n\u5bf9\u4e8e\u73b0\u4ee3\u591a\u8fdb\u7a0b\u64cd\u4f5c\u7cfb\u7edf\u6765\u8bf4\uff0c\u8fd9\u662f\u4e00\u4e2a\u975e\u5e38\u5e38\u89c1\u7684\u573a\u666f\u3002<br \/>\n\u6bd4\u8d77\u7b2c\u4e8c\u4e2a\u51fd\u6570\uff0c\u7b2c\u4e00\u4e2a\u51fd\u6570\u6240\u80fd\u4f7f\u7528\u7684 CPU \u8d44\u6e90\u66f4\u5c11\u3002\u8fd9\u53ef\u80fd\u5bfc\u81f4\u9519\u8bef\u7684\u7ed3\u8bba\u3002<br \/>\n<strong>\u4e3a\u4e86\u5f97\u5230\u66f4\u52a0\u53ef\u9760\u7684\u5ea6\u91cf\uff0c\u6574\u4e2a\u5ea6\u91cf\u6d4b\u8bd5\u5305\u5e94\u8be5\u91cd\u65b0\u8fd0\u884c\u591a\u6b21\u3002<\/strong><\/p>\n<pre><code class=\"language-js\">function diffSubtract(date1, date2) {\n  return date2 - date1;\n}\n\nfunction diffGetTime(date1, date2) {\n  return date2.getTime() - date1.getTime();\n}\n\nfunction bench(f) {\n  let date1 = new Date(0);\n  let date2 = new Date();\n\n  let start = Date.now();\n  for (let i = 0; i &lt; 100000; i++) f(date1, date2);\n  return Date.now() - start;\n}\n\nlet time1 = 0;\nlet time2 = 0;\n\n\/\/ \u4ea4\u66ff\u8fd0\u884c bench(diffSubtract) \u548c bench(diffGetTime) \u5404 10 \u6b21\nfor (let i = 0; i &lt; 10; i++) {\n  time1 += bench(diffSubtract);\n  time2 += bench(diffGetTime);\n}\n\nalert( 'Total time for diffSubtract: ' + time1 );\nalert( 'Total time for diffGetTime: ' + time2 );\n<\/code><\/pre>\n<p>\u73b0\u4ee3\u7684 JavaScript \u5f15\u64ce\u7684\u5148\u8fdb\u4f18\u5316\u7b56\u7565\u53ea\u5bf9\u6267\u884c\u5f88\u591a\u6b21\u7684 \u201chot code\u201d \u6709\u6548\uff08\u5bf9\u4e8e\u6267\u884c\u5f88\u5c11\u6b21\u6570\u7684\u4ee3\u7801\u6ca1\u6709\u5fc5\u8981\u4f18\u5316\uff09\u3002\u56e0\u6b64\uff0c\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u7b2c\u4e00\u6b21\u6267\u884c\u7684\u4f18\u5316\u7a0b\u5ea6\u4e0d\u9ad8\u3002\u6211\u4eec\u53ef\u80fd\u9700\u8981\u589e\u52a0\u4e00\u4e2a\u9884\u70ed\u6b65\u9aa4\uff1a<\/p>\n<pre><code class=\"language-js\">\/\/ \u5728\u4e3b\u5faa\u73af\u4e2d\u589e\u52a0\u9884\u70ed\u73af\u8282\nbench(diffSubtract);\nbench(diffGetTime);\n\n\/\/ \u5f00\u59cb\u5ea6\u91cf\nfor (let i = 0; i &lt; 10; i++) {\n  time1 += bench(diffSubtract);\n  time2 += bench(diffGetTime);\n}\n<\/code><\/pre>\n<blockquote>\n<p>\u8fdb\u884c\u5fae\u578b\u57fa\u51c6\u6d4b\u8bd5\u65f6\u8981\u5c0f\u5fc3<br \/>\n\u73b0\u4ee3\u7684 JavaScript \u5f15\u64ce\u6267\u884c\u4e86\u5f88\u591a\u4f18\u5316\u3002\u4e0e\u6b63\u5e38\u7f16\u5199\u7684\u4ee3\u7801\u76f8\u6bd4\uff0c\u5b83\u4eec\u53ef\u80fd\u4f1a\u6539\u53d8\u201c\u4eba\u4e3a\u7f16\u5199\u7684\u4e13\u7528\u4e8e\u6d4b\u8bd5\u7684\u4ee3\u7801\u201d\u7684\u6267\u884c\u6d41\u7a0b\uff0c\u7279\u522b\u662f\u5728\u6211\u4eec\u5bf9\u5f88\u5c0f\u7684\u4ee3\u7801\u7247\u6bb5\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u65f6\uff0c\u4f8b\u5982\u67d0\u4e2a\u8fd0\u7b97\u7b26\u6216\u5185\u5efa\u51fd\u6570\u7684\u5de5\u4f5c\u65b9\u5f0f\u3002\u56e0\u6b64\uff0c\u4e3a\u4e86\u6df1\u5165\u7406\u89e3\u6027\u80fd\u95ee\u9898\uff0c\u8bf7\u5b66\u4e60 JavaScript \u5f15\u64ce\u7684\u5de5\u4f5c\u539f\u7406\u3002\u5728\u90a3\u4e4b\u540e\uff0c\u4f60\u6216\u8bb8\u518d\u4e5f\u4e0d\u9700\u8981\u8fdb\u884c\u5fae\u578b\u57fa\u51c6\u6d4b\u8bd5\u4e86\u3002<br \/>\n<a href=\"http:\/\/mrale.ph\/\">http:\/\/mrale.ph<\/a>\u00a0\u63d0\u4f9b\u4e86\u5f88\u591a V8 \u5f15\u64ce\u76f8\u5173\u7684\u6587\u7ae0\u3002<\/p>\n<\/blockquote>\n<h4>\u5bf9\u5b57\u7b26\u4e32\u8c03\u7528Date.prase<\/h4>\n<p>Date.parse(str) \u65b9\u6cd5\u53ef\u4ee5\u4ece\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e2d\u8bfb\u53d6\u65e5\u671f\u3002<br \/>\n\u5b57\u7b26\u4e32\u7684\u683c\u5f0f\u5e94\u8be5\u4e3a\uff1aYYYY-MM-DDTHH:mm:ss.sssZ\uff0c\u5176\u4e2d\uff1a<br \/>\nYYYY-MM-DD \u2014\u2014 \u65e5\u671f\uff1a\u5e74-\u6708-\u65e5\u3002<br \/>\n\u5b57\u7b26 &quot;T&quot; \u662f\u4e00\u4e2a\u5206\u9694\u7b26\u3002<br \/>\nHH:mm:ss.sss \u2014\u2014 \u65f6\u95f4\uff1a\u5c0f\u65f6\uff0c\u5206\u949f\uff0c\u79d2\uff0c\u6beb\u79d2\u3002<br \/>\n\u53ef\u9009\u5b57\u7b26 'Z' \u4e3a +-hh:mm \u683c\u5f0f\u7684\u65f6\u533a\u3002\u5355\u4e2a\u5b57\u7b26 Z \u4ee3\u8868 UTC+0 \u65f6\u533a\u3002<br \/>\n\u7b80\u77ed\u5f62\u5f0f\u4e5f\u662f\u53ef\u4ee5\u7684\uff0c\u6bd4\u5982 YYYY-MM-DD \u6216 YYYY-MM\uff0c\u751a\u81f3\u53ef\u4ee5\u662f YYYY\u3002<br \/>\nDate.parse(str) \u8c03\u7528\u4f1a\u89e3\u6790\u7ed9\u5b9a\u683c\u5f0f\u7684\u5b57\u7b26\u4e32\uff0c\u5e76\u8fd4\u56de\u65f6\u95f4\u6233\uff08\u81ea 1970-01-01 00:00:00 \u8d77\u6240\u7ecf\u8fc7\u7684\u6beb\u79d2\u6570\uff09\u3002\u5982\u679c\u7ed9\u5b9a\u5b57\u7b26\u4e32\u7684\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u5219\u8fd4\u56de NaN\u3002<br \/>\n\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u65f6\u95f4\u6233\u6765\u7acb\u5373\u521b\u5efa\u4e00\u4e2a\u00a0<code>new Date<\/code>\u00a0\u5bf9\u8c61<\/p>\n<pre><code class=\"language-js\">let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') );\n\nalert(date);\n<\/code><\/pre>\n<h3>Json<\/h3>\n<p>\u5047\u8bbe\u6211\u4eec\u6709\u4e00\u4e2a\u590d\u6742\u7684\u5bf9\u8c61\uff0c\u6211\u4eec\u5e0c\u671b\u5c06\u5176\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\uff0c\u4ee5\u901a\u8fc7\u7f51\u7edc\u53d1\u9001\uff0c\u6216\u8005\u53ea\u662f\u4e3a\u4e86\u5728\u65e5\u5fd7\u4e2d\u8f93\u51fa\u5b83\u3002<br \/>\n\u5f53\u7136\uff0c\u8fd9\u6837\u7684\u5b57\u7b26\u4e32\u5e94\u8be5\u5305\u542b\u6240\u6709\u91cd\u8981\u7684\u5c5e\u6027\u3002<br \/>\n\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u4f1a\u65b0\u589e\u4e00\u4e9b\u5c5e\u6027\uff0c\u65e7\u7684\u5c5e\u6027\u4f1a\u88ab\u91cd\u547d\u540d\u548c\u5220\u9664\u3002\u6bcf\u6b21\u66f4\u65b0\u8fd9\u79cd\u00a0<code>toString<\/code>\u00a0\u90fd\u4f1a\u975e\u5e38\u75db\u82e6\u3002\u6211\u4eec\u53ef\u4ee5\u5c1d\u8bd5\u904d\u5386\u5176\u4e2d\u7684\u5c5e\u6027\uff0c\u4f46\u662f\u5982\u679c\u5bf9\u8c61\u5f88\u590d\u6742\uff0c\u5e76\u4e14\u5728\u5c5e\u6027\u4e2d\u5d4c\u5957\u4e86\u5bf9\u8c61\u5462\uff1f\u6211\u4eec\u4e5f\u9700\u8981\u5bf9\u5b83\u4eec\u8fdb\u884c\u8f6c\u6362\u3002<\/p>\n<h4>JSON.stringify<\/h4>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/JSON\">JSON<\/a>\uff08JavaScript Object Notation\uff09\u662f\u8868\u793a\u503c\u548c\u5bf9\u8c61\u7684\u901a\u7528\u683c\u5f0f\u3002\u5728\u00a0<a href=\"https:\/\/tools.ietf.org\/html\/rfc4627\">RFC 4627<\/a>\u00a0\u6807\u51c6\u4e2d\u6709\u5bf9\u5176\u7684\u63cf\u8ff0\u3002\u6700\u521d\u5b83\u662f\u4e3a JavaScript \u800c\u521b\u5efa\u7684\uff0c\u4f46\u8bb8\u591a\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\u4e5f\u6709\u7528\u4e8e\u5904\u7406\u5b83\u7684\u5e93\u3002\u56e0\u6b64\uff0c\u5f53\u5ba2\u6237\u7aef\u4f7f\u7528 JavaScript \u800c\u670d\u52a1\u5668\u7aef\u662f\u4f7f\u7528 Ruby\/PHP\/Java \u7b49\u8bed\u8a00\u7f16\u5199\u7684\u65f6\uff0c\u4f7f\u7528 JSON \u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u8fdb\u884c\u6570\u636e\u4ea4\u6362\u3002<br \/>\nJavaScript \u63d0\u4f9b\u4e86\u5982\u4e0b\u65b9\u6cd5\uff1a<\/p>\n<ul>\n<li><code>JSON.stringify<\/code>\u00a0\u5c06\u5bf9\u8c61\u8f6c\u6362\u4e3a JSON\u3002<\/li>\n<li><code>JSON.parse<\/code>\u00a0\u5c06 JSON \u8f6c\u6362\u56de\u5bf9\u8c61\u3002<br \/>\n\u4f8b\u5982\uff0c\u5728\u8fd9\u91cc\u6211\u4eec\u00a0<code>JSON.stringify<\/code>\u00a0\u4e00\u4e2a\u00a0<code>student<\/code>\u00a0\u5bf9\u8c61<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let student = {\n  name: 'John',\n  age: 30,\n  isAdmin: false,\n  courses: ['html', 'css', 'js'],\n  spouse: null\n};\n\nlet json = JSON.stringify(student);\n\nalert(typeof json); \/\/ we've got a string!\n\nalert(json);\n\/* JSON \u7f16\u7801\u7684\u5bf9\u8c61\uff1a\n{\n  &quot;name&quot;: &quot;John&quot;,\n  &quot;age&quot;: 30,\n  &quot;isAdmin&quot;: false,\n  &quot;courses&quot;: [&quot;html&quot;, &quot;css&quot;, &quot;js&quot;],\n  &quot;spouse&quot;: null\n}\n*\/\n<\/code><\/pre>\n<p>\u65b9\u6cd5\u00a0<code>JSON.stringify(student)<\/code>\u00a0\u63a5\u6536\u5bf9\u8c61\u5e76\u5c06\u5176\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u3002<br \/>\n\u5f97\u5230\u7684\u00a0<code>json<\/code>\u00a0\u5b57\u7b26\u4e32\u662f\u4e00\u4e2a\u88ab\u79f0\u4e3a\u00a0<strong>JSON \u7f16\u7801\uff08JSON-encoded\uff09<\/strong>\u00a0\u6216\u00a0<strong>\u5e8f\u5217\u5316\uff08serialized\uff09<\/strong>\u00a0\u6216\u00a0<strong>\u5b57\u7b26\u4e32\u5316\uff08stringified\uff09<\/strong>\u00a0\u6216\u00a0<strong>\u7f16\u7ec4\u5316\uff08marshalled\uff09<\/strong>\u00a0\u7684\u5bf9\u8c61\u3002\u6211\u4eec\u73b0\u5728\u5df2\u7ecf\u51c6\u5907\u597d\u901a\u8fc7\u6709\u7ebf\u53d1\u9001\u5b83\u6216\u5c06\u5176\u653e\u5165\u666e\u901a\u6570\u636e\u5b58\u50a8\u3002<br \/>\n\u8bf7\u6ce8\u610f\uff0cJSON \u7f16\u7801\u7684\u5bf9\u8c61\u4e0e\u5bf9\u8c61\u5b57\u9762\u91cf\u6709\u51e0\u4e2a\u91cd\u8981\u7684\u533a\u522b\uff1a<\/p>\n<ul>\n<li>\u5b57\u7b26\u4e32\u4f7f\u7528\u53cc\u5f15\u53f7\u3002JSON \u4e2d\u6ca1\u6709\u5355\u5f15\u53f7\u6216\u53cd\u5f15\u53f7\u3002\u6240\u4ee5\u00a0<code>'John'<\/code>\u00a0\u88ab\u8f6c\u6362\u4e3a\u00a0<code>&quot;John&quot;<\/code>\u3002<\/li>\n<li>\u5bf9\u8c61\u5c5e\u6027\u540d\u79f0\u4e5f\u662f\u53cc\u5f15\u53f7\u7684\u3002\u8fd9\u662f\u5f3a\u5236\u6027\u7684\u3002\u6240\u4ee5\u00a0<code>age:30<\/code>\u00a0\u88ab\u8f6c\u6362\u6210\u00a0<code>&quot;age&quot;:30<\/code>\u3002<br \/>\n<code>JSON.stringify<\/code>\u00a0\u4e5f\u53ef\u4ee5\u5e94\u7528\u4e8e\u539f\u59cb\uff08primitive\uff09\u6570\u636e\u7c7b\u578b\u3002<br \/>\nJSON \u652f\u6301\u4ee5\u4e0b\u6570\u636e\u7c7b\u578b\uff1a<\/li>\n<li>Objects\u00a0<code>{ ... }<\/code><\/li>\n<li>Arrays\u00a0<code>[ ... ]<\/code><\/li>\n<li>Primitives\uff1a\n<ul>\n<li>strings\uff0c<\/li>\n<li>numbers\uff0c<\/li>\n<li>boolean values\u00a0<code>true\/false<\/code>\uff0c<\/li>\n<li><code>null<\/code>\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code class=\"language-js\">\/\/ \u6570\u5b57\u5728 JSON \u8fd8\u662f\u6570\u5b57\nalert( JSON.stringify(1) ) \/\/ 1\n\n\/\/ \u5b57\u7b26\u4e32\u5728 JSON \u4e2d\u8fd8\u662f\u5b57\u7b26\u4e32\uff0c\u53ea\u662f\u88ab\u53cc\u5f15\u53f7\u6269\u8d77\u6765\nalert( JSON.stringify('test') ) \/\/ &quot;test&quot;\n\nalert( JSON.stringify(true) ); \/\/ true\n\nalert( JSON.stringify([1, 2, 3]) ); \/\/ [1,2,3]\n<\/code><\/pre>\n<p>JSON \u662f\u8bed\u8a00\u65e0\u5173\u7684\u7eaf\u6570\u636e\u89c4\u8303\uff0c\u56e0\u6b64\u4e00\u4e9b\u7279\u5b9a\u4e8e JavaScript \u7684\u5bf9\u8c61\u5c5e\u6027\u4f1a\u88ab\u00a0<code>JSON.stringify<\/code>\u00a0\u8df3\u8fc7\u3002<br \/>\n\u5373\uff1a<\/p>\n<ul>\n<li>\u51fd\u6570\u5c5e\u6027\uff08\u65b9\u6cd5\uff09\u3002<\/li>\n<li>Symbol \u7c7b\u578b\u7684\u952e\u548c\u503c\u3002<\/li>\n<li>\u5b58\u50a8\u00a0<code>undefined<\/code>\u00a0\u7684\u5c5e\u6027\u3002<\/li>\n<\/ul>\n<pre><code class=\"language-js\">let user = {\n  sayHi() { \/\/ \u88ab\u5ffd\u7565\n    alert(&quot;Hello&quot;);\n  },\n  [Symbol(&quot;id&quot;)]: 123, \/\/ \u88ab\u5ffd\u7565\n  something: undefined \/\/ \u88ab\u5ffd\u7565\n};\n\nalert( JSON.stringify(user) ); \/\/ {}\uff08\u7a7a\u5bf9\u8c61\uff09\n<\/code><\/pre>\n<p>\u901a\u5e38\u8fd9\u5f88\u597d\u3002\u5982\u679c\u8fd9\u4e0d\u662f\u6211\u4eec\u60f3\u8981\u7684\u65b9\u5f0f\uff0c\u90a3\u4e48\u6211\u4eec\u5f88\u5feb\u5c31\u4f1a\u770b\u5230\u5982\u4f55\u81ea\u5b9a\u4e49\u8f6c\u6362\u65b9\u5f0f\u3002<br \/>\n\u6700\u68d2\u7684\u662f\u652f\u6301\u5d4c\u5957\u5bf9\u8c61\u8f6c\u6362\uff0c\u5e76\u4e14\u53ef\u4ee5\u81ea\u52a8\u5bf9\u5176\u8fdb\u884c\u8f6c\u6362\u3002<\/p>\n<p>\u91cd\u8981\u7684\u9650\u5236\uff1a\u4e0d\u5f97\u6709\u5faa\u73af\u5f15\u7528\u3002<\/p>\n<pre><code class=\"language-js\">let room = {\n  number: 23\n};\n\nlet meetup = {\n  title: &quot;Conference&quot;,\n  participants: [&quot;john&quot;, &quot;ann&quot;]\n};\n\nmeetup.place = room;       \/\/ meetup \u5f15\u7528\u4e86 room\nroom.occupiedBy = meetup; \/\/ room \u5f15\u7528\u4e86 meetup\n\nJSON.stringify(meetup); \/\/ Error: Converting circular structure to JSON\n<\/code><\/pre>\n<h4>\u6392\u9664\u548c\u8f6c\u6362 replacer<\/h4>\n<p><code>JSON.stringify<\/code>\u00a0\u7684\u5b8c\u6574\u8bed\u6cd5\u662f<\/p>\n<pre><code class=\"language-js\">let json = JSON.stringify(value[, replacer, space])\n<\/code><\/pre>\n<p>value<br \/>\n\u8981\u7f16\u7801\u7684\u503c\u3002<br \/>\nreplacer<br \/>\n\u8981\u7f16\u7801\u7684\u5c5e\u6027\u6570\u7ec4\u6216\u6620\u5c04\u51fd\u6570\u00a0<code>function(key, value)<\/code>\u3002<br \/>\nspace<br \/>\n\u7528\u4e8e\u683c\u5f0f\u5316\u7684\u7a7a\u683c\u6570\u91cf\u3002<br \/>\n\u5927\u90e8\u5206\u60c5\u51b5\uff0c<code>JSON.stringify<\/code>\u00a0\u4ec5\u4e0e\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e00\u8d77\u4f7f\u7528\u3002\u4f46\u662f\uff0c\u5982\u679c\u6211\u4eec\u9700\u8981\u5fae\u8c03\u66ff\u6362\u8fc7\u7a0b\uff0c\u6bd4\u5982\u8fc7\u6ee4\u6389\u5faa\u73af\u5f15\u7528\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u00a0<code>JSON.stringify<\/code>\u00a0\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u3002<br \/>\n\u5982\u679c\u6211\u4eec\u4f20\u9012\u4e00\u4e2a\u5c5e\u6027\u6570\u7ec4\u7ed9\u5b83\uff0c\u90a3\u4e48\u53ea\u6709\u8fd9\u4e9b\u5c5e\u6027\u4f1a\u88ab\u7f16\u7801\u3002<\/p>\n<pre><code class=\"language-js\">let room = {\n  number: 23\n};\n\nlet meetup = {\n  title: &quot;Conference&quot;,\n  participants: [{name: &quot;John&quot;}, {name: &quot;Alice&quot;}],\n  place: room \/\/ meetup \u5f15\u7528\u4e86 room\n};\n\nroom.occupiedBy = meetup; \/\/ room \u5f15\u7528\u4e86 meetup\n\nalert( JSON.stringify(meetup, ['title', 'participants']) );\n\/\/ {&quot;title&quot;:&quot;Conference&quot;,&quot;participants&quot;:[{},{}]}\n<\/code><\/pre>\n<p>\u8fd9\u91cc\u6211\u4eec\u53ef\u80fd\u8fc7\u4e8e\u4e25\u683c\u4e86\u3002\u5c5e\u6027\u5217\u8868\u5e94\u7528\u4e8e\u4e86\u6574\u4e2a\u5bf9\u8c61\u7ed3\u6784\u3002\u6240\u4ee5\u00a0<code>participants<\/code>\u00a0\u662f\u7a7a\u7684\uff0c\u56e0\u4e3a\u00a0<code>name<\/code>\u00a0\u4e0d\u5728\u5217\u8868\u4e2d\u3002<br \/>\n\u8ba9\u6211\u4eec\u5305\u542b\u9664\u4e86\u4f1a\u5bfc\u81f4\u5faa\u73af\u5f15\u7528\u7684\u00a0<code>room.occupiedBy<\/code>\u00a0\u4e4b\u5916\u7684\u6240\u6709\u5c5e\u6027<br \/>\n\u4f46\u662f\u5982\u679c\u5c06\u5176\u4ed6\u5185\u5bb9\u5305\u542b\u8fdb\u5165\uff0c\u5c5e\u6027\u7684\u5217\u8868\u592a\u957f\u4e86\u3002<br \/>\n\u5e78\u8fd0\u7684\u662f\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4e00\u4e2a\u51fd\u6570\u4ee3\u66ff\u6570\u7ec4\u4f5c\u4e3a\u00a0<code>replacer<\/code>\u3002<br \/>\n\u8be5\u51fd\u6570\u4f1a\u4e3a\u6bcf\u4e2a\u00a0<code>(key,value)<\/code>\u00a0\u5bf9\u8c03\u7528\u5e76\u8fd4\u56de\u201c\u5df2\u66ff\u6362\u201d\u7684\u503c\uff0c\u8be5\u503c\u5c06\u66ff\u6362\u539f\u6709\u7684\u503c\u3002\u5982\u679c\u503c\u88ab\u8df3\u8fc7\u4e86\uff0c\u5219\u4e3a\u00a0<code>undefined<\/code>\u3002<\/p>\n<pre><code class=\"language-js\">let room = {\n  number: 23\n};\n\nlet meetup = {\n  title: &quot;Conference&quot;,\n  participants: [{name: &quot;John&quot;}, {name: &quot;Alice&quot;}],\n  place: room \/\/ meetup \u5f15\u7528\u4e86 room\n};\n\nroom.occupiedBy = meetup; \/\/ room \u5f15\u7528\u4e86 meetup\n\nalert( JSON.stringify(meetup, function replacer(key, value) {\n  alert(`${key}: ${value}`);\n  return (key == 'occupiedBy') ? undefined : value;\n}));\n\/* key:value pairs that come to replacer:\n:             [object Object]\ntitle:        Conference\nparticipants: [object Object],[object Object]\n0:            [object Object]\nname:         John\n1:            [object Object]\nname:         Alice\nplace:        [object Object]\nnumber:       23\noccupiedBy: [object Object]\n*\/\n<\/code><\/pre>\n<p>\u8bf7\u6ce8\u610f\u00a0<code>replacer<\/code>\u00a0\u51fd\u6570\u4f1a\u83b7\u53d6\u6bcf\u4e2a\u952e\/\u503c\u5bf9\uff0c\u5305\u62ec\u5d4c\u5957\u5bf9\u8c61\u548c\u6570\u7ec4\u9879\u3002\u5b83\u88ab\u9012\u5f52\u5730\u5e94\u7528\u3002<code>replacer<\/code>\u00a0\u4e2d\u7684\u00a0<code>this<\/code>\u00a0\u7684\u503c\u662f\u5305\u542b\u5f53\u524d\u5c5e\u6027\u7684\u5bf9\u8c61\u3002<br \/>\n\u7b2c\u4e00\u4e2a\u8c03\u7528\u5f88\u7279\u522b\u3002\u5b83\u662f\u4f7f\u7528\u7279\u6b8a\u7684\u201c\u5305\u88c5\u5bf9\u8c61\u201d\u5236\u4f5c\u7684\uff1a<code>{&quot;&quot;: meetup}<\/code>\u3002\u6362\u53e5\u8bdd\u8bf4\uff0c\u7b2c\u4e00\u4e2a\u00a0<code>(key, value)<\/code>\u00a0\u5bf9\u7684\u952e\u662f\u7a7a\u7684\uff0c\u5e76\u4e14\u8be5\u503c\u662f\u6574\u4e2a\u76ee\u6807\u5bf9\u8c61\u3002\u8fd9\u5c31\u662f\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\u7b2c\u4e00\u884c\u662f\u00a0<code>&quot;:[object Object]&quot;<\/code>\u00a0\u7684\u539f\u56e0\u3002<br \/>\n\u8fd9\u4e2a\u7406\u5ff5\u662f\u4e3a\u4e86\u7ed9\u00a0<code>replacer<\/code>\u00a0\u63d0\u4f9b\u5c3d\u53ef\u80fd\u591a\u7684\u529f\u80fd\uff1a\u5982\u679c\u6709\u5fc5\u8981\uff0c\u5b83\u6709\u673a\u4f1a\u5206\u6790\u5e76\u66ff\u6362\/\u8df3\u8fc7\u6574\u4e2a\u5bf9\u8c61\u3002<\/p>\n<h4>\u683c\u5f0f\u5316 space<\/h4>\n<p><code>JSON.stringify(value, replacer, spaces)<\/code>\u00a0\u7684\u7b2c\u4e09\u4e2a\u53c2\u6570\u662f\u7528\u4e8e\u4f18\u5316\u683c\u5f0f\u7684\u7a7a\u683c\u6570\u91cf\u3002<br \/>\n\u4ee5\u524d\uff0c\u6240\u6709\u5b57\u7b26\u4e32\u5316\u7684\u5bf9\u8c61\u90fd\u6ca1\u6709\u7f29\u8fdb\u548c\u989d\u5916\u7684\u7a7a\u683c\u3002\u5982\u679c\u6211\u4eec\u60f3\u901a\u8fc7\u7f51\u7edc\u53d1\u9001\u4e00\u4e2a\u5bf9\u8c61\uff0c\u90a3\u5c31\u6ca1\u4ec0\u4e48\u95ee\u9898\u3002<code>space<\/code>\u00a0\u53c2\u6570\u4e13\u95e8\u7528\u4e8e\u8c03\u6574\u51fa\u66f4\u7f8e\u89c2\u7684\u8f93\u51fa\u3002<br \/>\n\u8fd9\u91cc\u7684\u00a0<code>space = 2<\/code>\u00a0\u544a\u8bc9 JavaScript \u5728\u591a\u884c\u4e2d\u663e\u793a\u5d4c\u5957\u7684\u5bf9\u8c61\uff0c\u5bf9\u8c61\u5185\u90e8\u7f29\u8fdb 2 \u4e2a\u7a7a\u683c<\/p>\n<pre><code class=\"language-js\">let user = {\n  name: &quot;John&quot;,\n  age: 25,\n  roles: {\n    isAdmin: false,\n    isEditor: true\n  }\n};\n\nalert(JSON.stringify(user, null, 2));\n\/* \u4e24\u4e2a\u7a7a\u683c\u7684\u7f29\u8fdb\uff1a\n{\n  &quot;name&quot;: &quot;John&quot;,\n  &quot;age&quot;: 25,\n  &quot;roles&quot;: {\n    &quot;isAdmin&quot;: false,\n    &quot;isEditor&quot;: true\n  }\n}\n*\/\n\n\/* \u5bf9\u4e8e JSON.stringify(user, null, 4) \u7684\u7ed3\u679c\u4f1a\u6709\u66f4\u591a\u7f29\u8fdb\uff1a\n{\n    &quot;name&quot;: &quot;John&quot;,\n    &quot;age&quot;: 25,\n    &quot;roles&quot;: {\n        &quot;isAdmin&quot;: false,\n        &quot;isEditor&quot;: true\n    }\n}\n*\/\n<\/code><\/pre>\n<p>\u7b2c\u4e09\u4e2a\u53c2\u6570\u4e5f\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5b57\u7b26\u4e32\u7528\u4e8e\u7f29\u8fdb\uff0c\u800c\u4e0d\u662f\u7a7a\u683c\u7684\u6570\u91cf\u3002<br \/>\n<code>spaces<\/code>\u00a0\u53c2\u6570\u4ec5\u7528\u4e8e\u65e5\u5fd7\u8bb0\u5f55\u548c\u7f8e\u5316\u8f93\u51fa\u3002<\/p>\n<h4>\u81ea\u5b9a\u4e49 toJSON<\/h4>\n<p>\u50cf\u00a0<code>toString<\/code>\u00a0\u8fdb\u884c\u5b57\u7b26\u4e32\u8f6c\u6362\uff0c\u5bf9\u8c61\u4e5f\u53ef\u4ee5\u63d0\u4f9b\u00a0<code>toJSON<\/code>\u00a0\u65b9\u6cd5\u6765\u8fdb\u884c JSON \u8f6c\u6362\u3002\u5982\u679c\u53ef\u7528\uff0c<code>JSON.stringify<\/code>\u00a0\u4f1a\u81ea\u52a8\u8c03\u7528\u5b83\u3002<\/p>\n<pre><code class=\"language-js\">let room = {\n  number: 23\n};\n\nlet meetup = {\n  title: &quot;Conference&quot;,\n  date: new Date(Date.UTC(2017, 0, 1)),\n  room\n};\n\nalert( JSON.stringify(meetup) );\n\/*\n  {\n    &quot;title&quot;:&quot;Conference&quot;,\n    &quot;date&quot;:&quot;2017-01-01T00:00:00.000Z&quot;,  \/\/ (1)\n    &quot;room&quot;: {&quot;number&quot;:23}               \/\/ (2)\n  }\n*\/\n<\/code><\/pre>\n<p>\u5728\u8fd9\u513f\u6211\u4eec\u53ef\u4ee5\u770b\u5230 date (1) \u53d8\u6210\u4e86\u4e00\u4e2a\u5b57\u7b26\u4e32\u3002\u8fd9\u662f\u56e0\u4e3a\u6240\u6709\u65e5\u671f\u90fd\u6709\u4e00\u4e2a\u5185\u5efa\u7684 toJSON \u65b9\u6cd5\u6765\u8fd4\u56de\u8fd9\u79cd\u7c7b\u578b\u7684\u5b57\u7b26\u4e32\u3002<br \/>\n\u73b0\u5728\u8ba9\u6211\u4eec\u4e3a\u5bf9\u8c61 room \u6dfb\u52a0\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684 toJSON<\/p>\n<pre><code class=\"language-js\">let room = {\n  number: 23,\n  toJSON() {\n    return this.number;\n  }\n};\n\nlet meetup = {\n  title: &quot;Conference&quot;,\n  room\n};\n\nalert( JSON.stringify(room) ); \/\/ 23\n\nalert( JSON.stringify(meetup) );\n\/*\n  {\n    &quot;title&quot;:&quot;Conference&quot;,\n    &quot;room&quot;: 23\n  }\n*\/\n<\/code><\/pre>\n<p>\u6b63\u5982\u6211\u4eec\u6240\u770b\u5230\u7684\uff0c<code>toJSON<\/code>\u00a0\u65e2\u53ef\u4ee5\u7528\u4e8e\u76f4\u63a5\u8c03\u7528\u00a0<code>JSON.stringify(room)<\/code>\u00a0\u4e5f\u53ef\u4ee5\u7528\u4e8e\u5f53\u00a0<code>room<\/code>\u00a0\u5d4c\u5957\u5728\u53e6\u4e00\u4e2a\u7f16\u7801\u5bf9\u8c61\u4e2d\u65f6\u3002<\/p>\n<h4>JSON.parse<\/h4>\n<pre><code class=\"language-js\">let value = JSON.parse(str, [reviver]);\n<\/code><\/pre>\n<p>str<br \/>\n\u8981\u89e3\u6790\u7684 JSON \u5b57\u7b26\u4e32\u3002<br \/>\nreviver<br \/>\n\u53ef\u9009\u7684\u51fd\u6570 function(key,value)\uff0c\u8be5\u51fd\u6570\u5c06\u4e3a\u6bcf\u4e2a (key, value) \u5bf9\u8c03\u7528\uff0c\u5e76\u53ef\u4ee5\u5bf9\u503c\u8fdb\u884c\u8f6c\u6362\u3002<\/p>\n<pre><code class=\"language-js\">let userData = '{ &quot;name&quot;: &quot;John&quot;, &quot;age&quot;: 35, &quot;isAdmin&quot;: false, &quot;friends&quot;: [0,1,2,3] }';\n\nlet user = JSON.parse(userData);\n\nalert( user.friends[1] ); \/\/ 1\n<\/code><\/pre>\n<p>JSON \u53ef\u80fd\u4f1a\u975e\u5e38\u590d\u6742\uff0c\u5bf9\u8c61\u548c\u6570\u7ec4\u53ef\u4ee5\u5305\u542b\u5176\u4ed6\u5bf9\u8c61\u548c\u6570\u7ec4\u3002\u4f46\u662f\u5b83\u4eec\u5fc5\u987b\u9075\u5faa\u76f8\u540c\u7684 JSON \u683c\u5f0f\u3002<br \/>\n\u4ee5\u4e0b\u662f\u624b\u5199 JSON \u65f6\u7684\u5178\u578b\u9519\u8bef\uff08\u6709\u65f6\u6211\u4eec\u5fc5\u987b\u51fa\u4e8e\u8c03\u8bd5\u76ee\u7684\u7f16\u5199\u5b83\uff09<\/p>\n<pre><code class=\"language-js\">let json = `{\n  name: &quot;John&quot;,                     \/\/ \u9519\u8bef\uff1a\u5c5e\u6027\u540d\u6ca1\u6709\u53cc\u5f15\u53f7\n  &quot;surname&quot;: 'Smith',               \/\/ \u9519\u8bef\uff1a\u503c\u4f7f\u7528\u7684\u662f\u5355\u5f15\u53f7\uff08\u5fc5\u987b\u4f7f\u7528\u53cc\u5f15\u53f7\uff09\n  'isAdmin': false                  \/\/ \u9519\u8bef\uff1a\u952e\u4f7f\u7528\u7684\u662f\u5355\u5f15\u53f7\uff08\u5fc5\u987b\u4f7f\u7528\u53cc\u5f15\u53f7\uff09\n  &quot;birthday&quot;: new Date(2000, 2, 3), \/\/ \u9519\u8bef\uff1a\u4e0d\u5141\u8bb8\u4f7f\u7528 &quot;new&quot;\uff0c\u53ea\u80fd\u662f\u88f8\u503c\n  &quot;friends&quot;: [0,1,2,3]              \/\/ \u8fd9\u4e2a\u6ca1\u95ee\u9898\n}`;\n<\/code><\/pre>\n<p>\u6b64\u5916\uff0cJSON \u4e0d\u652f\u6301\u6ce8\u91ca\u3002\u5411 JSON \u6dfb\u52a0\u6ce8\u91ca\u65e0\u6548\u3002<br \/>\n\u8fd8\u6709\u53e6\u4e00\u79cd\u540d\u4e3a\u00a0<a href=\"http:\/\/json5.org\/\">JSON5<\/a>\u00a0\u7684\u683c\u5f0f\uff0c\u5b83\u5141\u8bb8\u672a\u52a0\u5f15\u53f7\u7684\u952e\uff0c\u4e5f\u5141\u8bb8\u6ce8\u91ca\u7b49\u3002\u4f46\u8fd9\u662f\u4e00\u4e2a\u72ec\u7acb\u7684\u5e93\uff0c\u4e0d\u5728\u8bed\u8a00\u7684\u89c4\u8303\u4e2d\u3002<br \/>\n\u6807\u51c6 JSON \u683c\u5f0f\u4e4b\u6240\u4ee5\u5982\u6b64\u4e25\u683c\uff0c\u5e76\u4e0d\u662f\u56e0\u4e3a\u5b83\u7684\u5236\u5b9a\u8005\u4eec\u5077\u61d2\uff0c\u800c\u662f\u4e3a\u4e86\u80fd\u591f\u7b80\u5355\uff0c\u53ef\u9760\u4e14\u5feb\u901f\u5730\u5b9e\u73b0\u89e3\u6790\u7b97\u6cd5\u3002<\/p>\n<h4>\u4f7f\u7528reviver<\/h4>\n<p>\u60f3\u8c61\u4e00\u4e0b\uff0c\u6211\u4eec\u4ece\u670d\u52a1\u5668\u4e0a\u83b7\u5f97\u4e86\u4e00\u4e2a\u5b57\u7b26\u4e32\u5316\u7684\u00a0<code>meetup<\/code>\u00a0\u5bf9\u8c61\u3002<br \/>\n\u5b83\u770b\u8d77\u6765\u50cf\u8fd9\u6837<\/p>\n<pre><code class=\"language-js\">\/\/ title: (meetup title), date: (meetup date)\nlet str = '{&quot;title&quot;:&quot;Conference&quot;,&quot;date&quot;:&quot;2017-11-30T12:00:00.000Z&quot;}';\n<\/code><\/pre>\n<p>\u2026\u2026\u73b0\u5728\u6211\u4eec\u9700\u8981\u5bf9\u5b83\u8fdb\u884c\u00a0<strong>\u53cd\u5e8f\u5217\uff08deserialize\uff09<\/strong>\uff0c\u628a\u5b83\u8f6c\u6362\u56de JavaScript \u5bf9\u8c61\u3002<br \/>\n\u8ba9\u6211\u4eec\u901a\u8fc7\u8c03\u7528\u00a0<code>JSON.parse<\/code>\u00a0\u6765\u5b8c\u6210<\/p>\n<pre><code class=\"language-js\">let str = '{&quot;title&quot;:&quot;Conference&quot;,&quot;date&quot;:&quot;2017-11-30T12:00:00.000Z&quot;}';\n\nlet meetup = JSON.parse(str);\n\nalert( meetup.date.getDate() ); \/\/ Error!\n<\/code><\/pre>\n<p>\u554a\uff01\u62a5\u9519\u4e86\uff01<br \/>\n<code>meetup.date<\/code>\u00a0\u7684\u503c\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u800c\u4e0d\u662f\u00a0<code>Date<\/code>\u00a0\u5bf9\u8c61\u3002<code>JSON.parse<\/code>\u00a0\u600e\u4e48\u77e5\u9053\u5e94\u8be5\u5c06\u5b57\u7b26\u4e32\u8f6c\u6362\u4e3a\u00a0<code>Date<\/code>\u00a0\u5462\uff1f<br \/>\n\u8ba9\u6211\u4eec\u5c06 reviver \u51fd\u6570\u4f20\u9012\u7ed9\u00a0<code>JSON.parse<\/code>\u00a0\u4f5c\u4e3a\u7b2c\u4e8c\u4e2a\u53c2\u6570\uff0c\u8be5\u51fd\u6570\u6309\u7167\u201c\u539f\u6837\u201d\u8fd4\u56de\u6240\u6709\u503c\uff0c\u4f46\u662f\u00a0<code>date<\/code>\u00a0\u4f1a\u53d8\u6210\u00a0<code>Date<\/code><\/p>\n<pre><code class=\"language-js\">let str = '{&quot;title&quot;:&quot;Conference&quot;,&quot;date&quot;:&quot;2017-11-30T12:00:00.000Z&quot;}';\n\nlet meetup = JSON.parse(str, function(key, value) {\n  if (key == 'date') return new Date(value);\n  return value;\n});\n\nalert( meetup.date.getDate() ); \/\/ \u73b0\u5728\u6b63\u5e38\u8fd0\u884c\u4e86\uff01\n<\/code><\/pre>\n<p>Btw\uff0c\u8fd9\u4e5f\u9002\u7528\u4e8e\u5d4c\u5957\u5bf9\u8c61<\/p>\n<pre><code class=\"language-js\">let schedule = `{\n  &quot;meetups&quot;: [\n    {&quot;title&quot;:&quot;Conference&quot;,&quot;date&quot;:&quot;2017-11-30T12:00:00.000Z&quot;},\n    {&quot;title&quot;:&quot;Birthday&quot;,&quot;date&quot;:&quot;2017-04-18T12:00:00.000Z&quot;}\n  ]\n}`;\n\nschedule = JSON.parse(schedule, function(key, value) {\n  if (key == 'date') return new Date(value);\n  return value;\n});\n\nalert( schedule.meetups[1].date.getDate() ); \/\/ \u6b63\u5e38\u8fd0\u884c\u4e86\uff01\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Java\uff1fJavaScript\uff01 JavaScript \u5927\u90e8\u5206\u6284\u81ea\u73b0\u4ee3js\u6307\u5357QwQ \u5f15 JavaScript [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-537","post","type-post","status-publish","format-standard","hentry","category-front-end"],"_links":{"self":[{"href":"https:\/\/levin.ink\/index.php?rest_route=\/wp\/v2\/posts\/537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/levin.ink\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/levin.ink\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/levin.ink\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/levin.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=537"}],"version-history":[{"count":8,"href":"https:\/\/levin.ink\/index.php?rest_route=\/wp\/v2\/posts\/537\/revisions"}],"predecessor-version":[{"id":645,"href":"https:\/\/levin.ink\/index.php?rest_route=\/wp\/v2\/posts\/537\/revisions\/645"}],"wp:attachment":[{"href":"https:\/\/levin.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/levin.ink\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/levin.ink\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}