{"id":1365,"date":"2024-06-02T22:24:35","date_gmt":"2024-06-02T22:24:35","guid":{"rendered":""},"modified":"2024-06-05T03:09:46","modified_gmt":"2024-06-04T19:09:46","slug":"underscore-%e7%b3%bb%e5%88%97%e4%b9%8b%e5%ae%9e%e7%8e%b0%e4%b8%80%e4%b8%aa%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8e%e4%b8%8b","status":"publish","type":"post","link":"https:\/\/www.lccc.top\/?p=1365","title":{"rendered":"underscore \u7cfb\u5217\u4e4b\u5b9e\u73b0\u4e00\u4e2a\u6a21\u677f\u5f15\u64ce(\u4e0b)"},"content":{"rendered":"<td class=\"d-block comment-body markdown-body  js-comment-body\">\n<h2 dir=\"auto\">\u524d\u8a00<\/h2>\n<p dir=\"auto\">\u672c\u7bc7\u63a5\u7740\u4e0a\u7bc7 <a href=\"https:\/\/github.com\/mqyqingfeng\/Blog\/issues\/63\" data-hovercard-type=\"issue\" data-hovercard-url=\"\/mqyqingfeng\/Blog\/issues\/63\/hovercard\">underscore \u7cfb\u5217\u4e4b\u5b9e\u73b0\u4e00\u4e2a\u6a21\u677f\u5f15\u64ce(\u4e0a)<\/a>\u3002<\/p>\n<p dir=\"auto\">\u9274\u4e8e\u672c\u7bc7\u6d89\u53ca\u7684\u77e5\u8bc6\u70b9\u592a\u591a\uff0c\u6211\u4eec\u5148\u6765\u4ecb\u7ecd\u4e0b\u4f1a\u7528\u5230\u7684\u77e5\u8bc6\u70b9\u3002<\/p>\n<h2 dir=\"auto\">\u53cd\u659c\u6760\u7684\u4f5c\u7528<\/h2>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content='var txt = \"We are the so-called \"Vikings\" from the north.\"\nconsole.log(txt);'><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">txt<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">\"We are the so-called \"<\/span><span class=\"pl-v\">Vikings<\/span><span class=\"pl-s\">\" from the north.\"<\/span>\n<span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">txt<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u6211\u4eec\u7684\u672c\u610f\u662f\u60f3\u6253\u5370\u5e26 <code class=\"notranslate\">\"\"<\/code> \u5305\u88f9\u7684 <code class=\"notranslate\">Vikings<\/code> \u5b57\u7b26\u4e32\uff0c\u4f46\u662f\u5728 JavaScript \u4e2d\uff0c\u5b57\u7b26\u4e32\u4f7f\u7528\u5355\u5f15\u53f7\u6216\u8005\u53cc\u5f15\u53f7\u6765\u8868\u793a\u8d77\u59cb\u6216\u8005\u7ed3\u675f\uff0c\u8fd9\u6bb5\u4ee3\u7801\u4f1a\u62a5 <code class=\"notranslate\">Unexpected identifier<\/code> \u9519\u8bef\u3002<\/p>\n<p dir=\"auto\">\u5982\u679c\u6211\u4eec\u5c31\u662f\u60f3\u8981\u5728\u5b57\u7b26\u4e32\u4e2d\u4f7f\u7528\u5355\u5f15\u53f7\u6216\u8005\u53cc\u5f15\u53f7\u5462\uff1f<\/p>\n<p dir=\"auto\">\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u53cd\u659c\u6760\u7528\u6765\u5728\u6587\u672c\u5b57\u7b26\u4e32\u4e2d\u63d2\u5165\u7701\u7565\u53f7\u3001\u6362\u884c\u7b26\u3001\u5f15\u53f7\u548c\u5176\u4ed6\u7279\u6b8a\u5b57\u7b26\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content='var txt = \"We are the so-called \\\"Vikings\\\" from the north.\"\nconsole.log(txt);'><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">txt<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">\"We are the so-called \\\"Vikings\\\" from the north.\"<\/span>\n<span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">txt<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u73b0\u5728 JavaScript \u5c31\u53ef\u4ee5\u8f93\u51fa\u6b63\u786e\u7684\u6587\u672c\u5b57\u7b26\u4e32\u4e86\u3002<\/p>\n<p dir=\"auto\"><strong>\u8fd9\u79cd\u7531\u53cd\u659c\u6760\u540e\u63a5\u5b57\u6bcd\u6216\u6570\u5b57\u7ec4\u5408\u6784\u6210\u7684\u5b57\u7b26\u7ec4\u5408\u5c31\u53eb\u505a\u201c\u8f6c\u4e49\u5e8f\u5217\u201d\u3002<\/strong><\/p>\n<p dir=\"auto\">\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u8f6c\u4e49\u5e8f\u5217\u4f1a\u88ab\u89c6\u4e3a\u5355\u4e2a\u5b57\u7b26\u3002<\/p>\n<p dir=\"auto\">\u6211\u4eec\u5e38\u89c1\u7684\u8f6c\u4e49\u5e8f\u5217\u8fd8\u6709 <code class=\"notranslate\">\\n<\/code> \u8868\u793a\u6362\u884c\u3001<code class=\"notranslate\">\\t<\/code> \u8868\u793a\u5236\u8868\u7b26\u3001<code class=\"notranslate\">\\r<\/code> \u8868\u793a\u56de\u8f66\u7b49\u7b49\u3002<\/p>\n<h2 dir=\"auto\">\u8f6c\u4e49\u5e8f\u5217<\/h2>\n<p dir=\"auto\">\u5728 JavaScript \u4e2d\uff0c\u5b57\u7b26\u4e32\u503c\u662f\u4e00\u4e2a\u7531\u96f6\u6216\u591a\u4e2a Unicode \u5b57\u7b26\uff08\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u5176\u4ed6\u5b57\u7b26\uff09\u7ec4\u6210\u7684\u5e8f\u5217\u3002<\/p>\n<p dir=\"auto\">\u5b57\u7b26\u4e32\u4e2d\u7684\u6bcf\u4e2a\u5b57\u7b26\u5747\u53ef\u7531\u4e00\u4e2a\u8f6c\u4e49\u5e8f\u5217\u8868\u793a\u3002\u6bd4\u5982\u5b57\u6bcd <code class=\"notranslate\">a<\/code>\uff0c\u4e5f\u53ef\u4ee5\u7528\u8f6c\u4e49\u5e8f\u5217 <code class=\"notranslate\">\\u0061<\/code> \u8868\u793a\u3002<\/p>\n<blockquote>\n<p dir=\"auto\">\u8f6c\u4e49\u5e8f\u5217\u4ee5\u53cd\u659c\u6760 <code class=\"notranslate\">\\<\/code> \u5f00\u5934\uff0c\u5b83\u7684\u4f5c\u7528\u662f\u544a\u77e5 JavaScript \u89e3\u91ca\u5668\u4e0b\u4e00\u4e2a\u5b57\u7b26\u662f\u7279\u6b8a\u5b57\u7b26\u3002<\/p>\n<\/blockquote>\n<blockquote>\n<p dir=\"auto\">\u8f6c\u4e49\u5e8f\u5217\u7684\u8bed\u6cd5\u4e3a <code class=\"notranslate\">\\uhhhh<\/code>\uff0c\u5176\u4e2d hhhh \u662f\u56db\u4f4d\u5341\u516d\u8fdb\u5236\u6570\u3002<\/p>\n<\/blockquote>\n<p dir=\"auto\">\u6839\u636e\u8fd9\u4e2a\u89c4\u5219\uff0c\u6211\u4eec\u53ef\u4ee5\u7b97\u51fa\u5e38\u89c1\u5b57\u7b26\u7684\u8f6c\u4e49\u5e8f\u5217\uff0c\u4ee5\u5b57\u6bcd <code class=\"notranslate\">m<\/code> \u4e3a\u4f8b\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"\/\/ 1. \u6c42\u51fa\u5b57\u7b26 `m` \u5bf9\u5e94\u7684 unicode \u503c\nvar unicode = 'm'.charCodeAt(0) \/\/ 109\n\/\/ 2. \u8f6c\u6210\u5341\u516d\u8fdb\u5236\nvar result = unicode.toString(16); \/\/ &quot;6d&quot;\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-c\">\/\/ 1. \u6c42\u51fa\u5b57\u7b26 `m` \u5bf9\u5e94\u7684 unicode \u503c<\/span>\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">unicode<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'m'<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">charCodeAt<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-c1\">0<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c\">\/\/ 109<\/span>\n<span class=\"pl-c\">\/\/ 2. \u8f6c\u6210\u5341\u516d\u8fdb\u5236<\/span>\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">result<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">unicode<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">toString<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-c1\">16<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ \"6d\"<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u6211\u4eec\u5c31\u53ef\u4ee5\u4f7f\u7528 <code class=\"notranslate\">\\u006d<\/code> \u8868\u793a <code class=\"notranslate\">m<\/code>\uff0c\u4e0d\u4fe1\u4f60\u53ef\u4ee5\u76f4\u63a5\u5728\u6d4f\u89c8\u5668\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u8f93\u5165\u5b57\u7b26\u4e32 <code class=\"notranslate\">'\\u006d'<\/code>\uff0c\u770b\u4e0b\u6253\u5370\u7ed3\u679c\u3002<\/p>\n<p dir=\"auto\">\u503c\u5f97\u6ce8\u610f\u7684\u662f: <code class=\"notranslate\">\\n<\/code> \u867d\u7136\u4e5f\u662f\u4e00\u79cd\u8f6c\u4e49\u5e8f\u5217\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4f7f\u7528\u4e0a\u9762\u7684\u65b9\u5f0f\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var unicode = '\\n'.charCodeAt(0) \/\/ 10\nvar result = unicode.toString(16); \/\/ &quot;a&quot;\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">unicode<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'\\n'<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">charCodeAt<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-c1\">0<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c\">\/\/ 10<\/span>\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">result<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">unicode<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">toString<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-c1\">16<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ \"a\"<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u7528 <code class=\"notranslate\">\\u000A<\/code> \u6765\u8868\u793a\u6362\u884c\u7b26 <code class=\"notranslate\">\\n<\/code>\uff0c\u6bd4\u5982\u5728\u6d4f\u89c8\u5668\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u8f93\u5165 <code class=\"notranslate\">'a \\n b'<\/code> \u548c <code class=\"notranslate\">'a \\u000A b'<\/code> \u6548\u679c\u662f\u4e00\u6837\u7684\u3002<\/p>\n<p dir=\"auto\">\u8bb2\u4e86\u8fd9\u4e48\u591a\uff0c\u6211\u4eec\u6765\u770b\u770b\u4e00\u4e9b\u5e38\u7528\u5b57\u7b26\u7684\u8f6c\u4e49\u5e8f\u5217\u4ee5\u53ca\u542b\u4e49\uff1a<\/p>\n<table role=\"table\">\n<tbody>\n<tr>\n<td>Unicode \u5b57\u7b26\u503c<\/td>\n<td>\u8f6c\u4e49\u5e8f\u5217<\/td>\n<td>\u542b\u4e49<\/td>\n<\/tr>\n<tr>\n<td>\\u0009<\/td>\n<td>\\t<\/td>\n<td>\u5236\u8868\u7b26<\/td>\n<\/tr>\n<tr>\n<td>\\u000A<\/td>\n<td>\\n<\/td>\n<td>\u6362\u884c<\/td>\n<\/tr>\n<tr>\n<td>\\u000D<\/td>\n<td>\\r<\/td>\n<td>\u56de\u8f66<\/td>\n<\/tr>\n<tr>\n<td>\\u0022<\/td>\n<td>\\&#8221;<\/td>\n<td>\u53cc\u5f15\u53f7<\/td>\n<\/tr>\n<tr>\n<td>\\u0027<\/td>\n<td>\\&#8217;<\/td>\n<td>\u5355\u5f15\u53f7<\/td>\n<\/tr>\n<tr>\n<td>\\u005C<\/td>\n<td>\\\\<\/td>\n<td>\u53cd\u659c\u6760<\/td>\n<\/tr>\n<tr>\n<td>\\u2028<\/td>\n<td><\/td>\n<td>\u884c\u5206\u9694\u7b26<\/td>\n<\/tr>\n<tr>\n<td>\\u2029<\/td>\n<td><\/td>\n<td>\u6bb5\u843d\u5206\u9694\u7b26<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 dir=\"auto\">Line Terminators<\/h2>\n<p dir=\"auto\">Line Terminators\uff0c\u4e2d\u6587\u8bd1\u6587<code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code>\u3002\u50cf\u7a7a\u767d\u5b57\u7b26\u4e00\u6837\uff0c<code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code>\u53ef\u7528\u4e8e\u6539\u5584\u6e90\u6587\u672c\u7684\u53ef\u8bfb\u6027\u3002<\/p>\n<p dir=\"auto\">\u5728 ES5 \u4e2d\uff0c\u6709\u56db\u4e2a\u5b57\u7b26\u88ab\u8ba4\u4e3a\u662f<code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code>\uff0c\u5176\u4ed6\u7684\u6298\u884c\u5b57\u7b26\u90fd\u4f1a\u88ab\u89c6\u4e3a\u7a7a\u767d\u3002<\/p>\n<p dir=\"auto\">\u8fd9\u56db\u4e2a\u5b57\u7b26\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n<table role=\"table\">\n<thead>\n<tr>\n<th>\u5b57\u7b26\u7f16\u7801\u503c<\/th>\n<th align=\"center\">\u540d\u79f0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\\u000A<\/td>\n<td align=\"center\">\u6362\u884c\u7b26<\/td>\n<\/tr>\n<tr>\n<td>\\u000D<\/td>\n<td align=\"center\">\u56de\u8f66\u7b26<\/td>\n<\/tr>\n<tr>\n<td>\\u2028<\/td>\n<td align=\"center\">\u884c\u5206\u9694\u7b26<\/td>\n<\/tr>\n<tr>\n<td>\\u2029<\/td>\n<td align=\"center\">\u6bb5\u843d\u5206\u9694\u7b26<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 dir=\"auto\">Function<\/h2>\n<p dir=\"auto\">\u8bd5\u60f3\u6211\u4eec\u5199\u8fd9\u6837\u4e00\u6bb5\u4ee3\u7801\uff0c\u80fd\u5426\u6b63\u786e\u8fd0\u884c\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var log = new Function(&quot;var a = '1\\t23';console.log(a)&quot;);\nlog()\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">log<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">\"var a = '1\\t23';console.log(a)\"<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-s1\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u7b54\u6848\u662f\u53ef\u4ee5\uff0c\u90a3\u4e0b\u9762\u8fd9\u6bb5\u5462\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var log = new Function(&quot;var a = '1\\n23';console.log(a)&quot;);\nlog()\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">log<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">\"var a = '1\\n23';console.log(a)\"<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-s1\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u7b54\u6848\u662f\u4e0d\u53ef\u4ee5\uff0c\u4f1a\u62a5\u9519 <code class=\"notranslate\">Uncaught SyntaxError: Invalid or unexpected token<\/code>\u3002<\/p>\n<p dir=\"auto\">\u8fd9\u662f\u4e3a\u4ec0\u4e48\u5462\uff1f<\/p>\n<p dir=\"auto\">\u8fd9\u662f\u56e0\u4e3a\u5728 Function \u6784\u9020\u51fd\u6570\u7684\u5b9e\u73b0\u4e2d\uff0c\u9996\u5148\u4f1a\u5c06\u51fd\u6570\u4f53\u4ee3\u7801\u5b57\u7b26\u4e32\u8fdb\u884c\u4e00\u6b21 <code class=\"notranslate\">ToString<\/code> \u64cd\u4f5c\uff0c\u8fd9\u65f6\u5019\u5b57\u7b26\u4e32\u53d8\u6210\u4e86\uff1a<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"var a = '1\n23';console.log(a)\"><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">var a = '1\n23';console.log(a)\n<\/code><\/pre>\n<\/div>\n<p dir=\"auto\">\u7136\u540e\u518d\u68c0\u6d4b\u4ee3\u7801\u5b57\u7b26\u4e32\u662f\u5426\u7b26\u5408\u4ee3\u7801\u89c4\u8303\uff0c\u5728 JavaScript \u4e2d\uff0c<strong>\u5b57\u7b26\u4e32\u8868\u8fbe\u5f0f\u4e2d\u662f\u4e0d\u5141\u8bb8\u6362\u884c\u7684<\/strong>\uff0c\u8fd9\u5c31\u5bfc\u81f4\u4e86\u62a5\u9519\u3002<\/p>\n<p dir=\"auto\">\u4e3a\u4e86\u907f\u514d\u8fd9\u4e2a\u95ee\u9898\uff0c\u6211\u4eec\u9700\u8981\u5c06\u4ee3\u7801\u4fee\u6539\u4e3a\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var log = new Function(&quot;var a = '1\\\\n23';console.log(a)&quot;);\nlog()\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">log<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">\"var a = '1\\\\n23';console.log(a)\"<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-s1\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5176\u5b9e\u4e0d\u6b62 <code class=\"notranslate\">\\n<\/code>\uff0c\u5176\u4ed6\u4e09\u79cd <code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code>\uff0c\u5982\u679c\u4f60\u5728\u5b57\u7b26\u4e32\u8868\u8fbe\u5f0f\u4e2d\u76f4\u63a5\u4f7f\u7528\uff0c\u90fd\u4f1a\u5bfc\u81f4\u62a5\u9519\uff01<\/p>\n<p dir=\"auto\">\u4e4b\u6240\u4ee5\u8bb2\u8fd9\u4e2a\u95ee\u9898\uff0c\u662f\u56e0\u4e3a\u5728\u6a21\u677f\u5f15\u64ce\u7684\u5b9e\u73b0\u4e2d\uff0c\u5c31\u662f\u4f7f\u7528\u4e86 Function \u6784\u9020\u51fd\u6570\uff0c\u5982\u679c\u6211\u4eec\u5728\u6a21\u677f\u5b57\u7b26\u4e32\u4e2d\u4f7f\u7528\u4e86 <code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code>\uff0c\u4fbf\u6709\u53ef\u80fd\u4f1a\u51fa\u73b0\u4e00\u6837\u7684\u9519\u8bef\uff0c\u6240\u4ee5\u6211\u4eec\u5fc5\u987b\u8981\u5bf9\u8fd9\u56db\u79cd <code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code> \u8fdb\u884c\u7279\u6b8a\u7684\u5904\u7406\u3002<\/p>\n<h2 dir=\"auto\">\u7279\u6b8a\u5b57\u7b26<\/h2>\n<p dir=\"auto\">\u9664\u4e86\u8fd9\u56db\u79cd <code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code> \u4e4b\u5916\uff0c\u6211\u4eec\u8fd8\u8981\u5bf9\u4e24\u4e2a\u5b57\u7b26\u8fdb\u884c\u5904\u7406\u3002<\/p>\n<p dir=\"auto\">\u4e00\u4e2a\u662f <code class=\"notranslate\">\\<\/code>\u3002<\/p>\n<p dir=\"auto\">\u6bd4\u5982\u8bf4\u6211\u4eec\u7684\u6a21\u677f\u5185\u5bb9\u4e2d\u4f7f\u7528\u4e86<code class=\"notranslate\">\\<\/code>:<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var log = new Function(&quot;var a = '1\\23';console.log(a)&quot;);\nlog(); \/\/ 1\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">log<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">\"var a = '1\\23';console.log(a)\"<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-s1\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ 1<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5176\u5b9e\u6211\u4eec\u662f\u60f3\u6253\u5370 &#8216;1\\23&#8217;\uff0c\u4f46\u662f\u56e0\u4e3a\u628a <code class=\"notranslate\">\\<\/code> \u5f53\u6210\u4e86\u7279\u6b8a\u5b57\u7b26\u7684\u6807\u8bb0\u8fdb\u884c\u5904\u7406\uff0c\u6240\u4ee5\u6700\u7ec8\u6253\u5370\u4e86 1\u3002<\/p>\n<p dir=\"auto\">\u540c\u6837\u7684\u9053\u7406\uff0c\u5982\u679c\u6211\u4eec\u5728\u4f7f\u7528\u6a21\u677f\u5f15\u64ce\u7684\u65f6\u5019\uff0c\u4f7f\u7528\u4e86 <code class=\"notranslate\">\\<\/code> \u5b57\u7b26\u4e32\uff0c\u4e5f\u4f1a\u5bfc\u81f4\u9519\u8bef\u7684\u5904\u7406\u3002<\/p>\n<p dir=\"auto\">\u7b2c\u4e8c\u4e2a\u662f <code class=\"notranslate\">'<\/code>\u3002<\/p>\n<p dir=\"auto\">\u5982\u679c\u6211\u4eec\u5728\u6a21\u677f\u5f15\u64ce\u4e2d\u4f7f\u7528\u4e86 <code class=\"notranslate\">'<\/code>\uff0c\u56e0\u4e3a\u6211\u4eec\u4f1a\u62fc\u63a5\u8bf8\u5982 <code class=\"notranslate\">p.push('<\/code> <code class=\"notranslate\">')<\/code> \u7b49\u5b57\u7b26\u4e32\uff0c\u56e0\u4e3a <code class=\"notranslate\">'<\/code> \u7684\u539f\u56e0\uff0c\u5b57\u7b26\u4e32\u4f1a\u88ab\u9519\u8bef\u62fc\u63a5\uff0c\u4e5f\u4f1a\u5bfc\u81f4\u9519\u8bef\u3002<\/p>\n<p dir=\"auto\">\u6240\u4ee5\u603b\u5171\u6211\u4eec\u9700\u8981\u5bf9\u516d\u79cd\u5b57\u7b26\u8fdb\u884c\u7279\u6b8a\u5904\u7406\uff0c\u5904\u7406\u7684\u65b9\u5f0f\uff0c\u5c31\u662f\u6b63\u5219\u5339\u914d\u51fa\u8fd9\u4e9b\u7279\u6b8a\u5b57\u7b26\uff0c\u7136\u540e\u6bd4\u5982\u5c06 <code class=\"notranslate\">\\n<\/code> \u66ff\u6362\u6210 <code class=\"notranslate\">\\\\n<\/code>\uff0c<code class=\"notranslate\">\\<\/code> \u66ff\u6362\u6210 <code class=\"notranslate\">\\\\<\/code>\uff0c<code class=\"notranslate\">'<\/code> \u66ff\u6362\u6210 <code class=\"notranslate\">\\\\'<\/code>\uff0c\u5904\u7406\u7684\u4ee3\u7801\u4e3a\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var escapes = {\n    &quot;'&quot;: &quot;'&quot;,\n    '\\\\': '\\\\',\n    '\\r': 'r',\n    '\\n': 'n',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = \/\\\\|'|\\r|\\n|\\u2028|\\u2029\/g;\n\nvar escapeChar = function(match) {\n    return '\\\\' + escapes[match];\n};\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">escapes<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-s\">\"'\"<\/span>: <span class=\"pl-s\">\"'\"<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\\\'<\/span>: <span class=\"pl-s\">'\\\\'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\r'<\/span>: <span class=\"pl-s\">'r'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\n'<\/span>: <span class=\"pl-s\">'n'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\u2028'<\/span>: <span class=\"pl-s\">'u2028'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\u2029'<\/span>: <span class=\"pl-s\">'u2029'<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">;<\/span>\n\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">escapeRegExp<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>\\\\|'|\\r|\\n|\\u2028|\\u2029<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">;<\/span>\n\n<span class=\"pl-k\">var<\/span> <span class=\"pl-en\">escapeChar<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-s\">'\\\\'<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">escapes<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u6211\u4eec\u6d4b\u8bd5\u4e00\u4e0b\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = 'console.log(&quot;I am \\n Kevin&quot;);';\nvar newStr = str.replace(escapeRegExp, escapeChar);\n\neval(newStr)\n\/\/ I am \n\/\/ Kevin\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'console.log(\"I am \\n Kevin\");'<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">newStr<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">escapeRegExp<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">escapeChar<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n\n<span class=\"pl-en\">eval<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">newStr<\/span><span class=\"pl-kos\">)<\/span>\n<span class=\"pl-c\">\/\/ I am <\/span>\n<span class=\"pl-c\">\/\/ Kevin<\/span><\/pre>\n<\/div>\n<h2 dir=\"auto\">replace<\/h2>\n<p dir=\"auto\">\u6211\u4eec\u6765\u8bb2\u4e00\u8bb2\u5b57\u7b26\u4e32\u7684 replace \u51fd\u6570\uff1a<\/p>\n<p dir=\"auto\">\u8bed\u6cd5\u4e3a\uff1a<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"str.replace(regexp|substr, newSubStr|function)\">\n<pre class=\"notranslate\"><code class=\"notranslate\">str.replace(regexp|substr, newSubStr|function)\n<\/code><\/pre>\n<\/div>\n<p dir=\"auto\">replace \u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\uff0c\u53ef\u4ee5\u4f20\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u4e5f\u53ef\u4ee5\u4f20\u4e00\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\u3002<\/p>\n<p dir=\"auto\">\u7b2c\u4e8c\u4e2a\u53c2\u6570\uff0c\u53ef\u4ee5\u4f20\u4e00\u4e2a\u65b0\u5b57\u7b26\u4e32\uff0c\u4e5f\u53ef\u4ee5\u4f20\u4e00\u4e2a\u51fd\u6570\u3002<\/p>\n<p dir=\"auto\">\u6211\u4eec\u91cd\u70b9\u770b\u4e0b\u4f20\u5165\u51fd\u6570\u7684\u60c5\u51b5\uff0c\u7b80\u5355\u4e3e\u4e00\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = 'hello world';\nvar newStr = str.replace('world', function(match){\n    return match + '!'\n})\nconsole.log(newStr); \/\/ hello world!\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'hello world'<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">newStr<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">'world'<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-s1\">match<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">'!'<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span>\n<span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">newStr<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ hello world!<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">match \u8868\u793a\u5339\u914d\u5230\u7684\u5b57\u7b26\u4e32\uff0c\u4f46\u51fd\u6570\u7684\u53c2\u6570\u5176\u5b9e\u4e0d\u6b62\u6709 match\uff0c\u6211\u4eec\u770b\u4e2a\u66f4\u590d\u6742\u7684\u4f8b\u5b50\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"function replacer(match, p1, p2, p3, offset, string) {\n    \/\/ match\uff0c\u8868\u793a\u5339\u914d\u7684\u5b50\u4e32 abc12345#$*%\n    \/\/ p1\uff0c\u7b2c 1 \u4e2a\u62ec\u53f7\u5339\u914d\u7684\u5b57\u7b26\u4e32 abc\n    \/\/ p2\uff0c\u7b2c 2 \u4e2a\u62ec\u53f7\u5339\u914d\u7684\u5b57\u7b26\u4e32 12345\n    \/\/ p3\uff0c\u7b2c 3 \u4e2a\u62ec\u53f7\u5339\u914d\u7684\u5b57\u7b26\u4e32 #$*%\n    \/\/ offset\uff0c\u5339\u914d\u5230\u7684\u5b50\u5b57\u7b26\u4e32\u5728\u539f\u5b57\u7b26\u4e32\u4e2d\u7684\u504f\u79fb\u91cf 0\n    \/\/ string\uff0c\u88ab\u5339\u914d\u7684\u539f\u5b57\u7b26\u4e32 abc12345#$*%\n    return [p1, p2, p3].join(' - ');\n}\nvar newString = 'abc12345#$*%'.replace(\/([^\\d]*)(\\d*)([^\\w]*)\/, replacer); \/\/ abc - 12345 - #$*%\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">function<\/span> <span class=\"pl-en\">replacer<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">p1<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">p2<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">p3<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">offset<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">string<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-c\">\/\/ match\uff0c\u8868\u793a\u5339\u914d\u7684\u5b50\u4e32 abc12345#$*%<\/span>\n    <span class=\"pl-c\">\/\/ p1\uff0c\u7b2c 1 \u4e2a\u62ec\u53f7\u5339\u914d\u7684\u5b57\u7b26\u4e32 abc<\/span>\n    <span class=\"pl-c\">\/\/ p2\uff0c\u7b2c 2 \u4e2a\u62ec\u53f7\u5339\u914d\u7684\u5b57\u7b26\u4e32 12345<\/span>\n    <span class=\"pl-c\">\/\/ p3\uff0c\u7b2c 3 \u4e2a\u62ec\u53f7\u5339\u914d\u7684\u5b57\u7b26\u4e32 #$*%<\/span>\n    <span class=\"pl-c\">\/\/ offset\uff0c\u5339\u914d\u5230\u7684\u5b50\u5b57\u7b26\u4e32\u5728\u539f\u5b57\u7b26\u4e32\u4e2d\u7684\u504f\u79fb\u91cf 0<\/span>\n    <span class=\"pl-c\">\/\/ string\uff0c\u88ab\u5339\u914d\u7684\u539f\u5b57\u7b26\u4e32 abc12345#$*%<\/span>\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-kos\">[<\/span><span class=\"pl-s1\">p1<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">p2<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">p3<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">join<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">' - '<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span>\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">newString<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'abc12345#$*%'<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>([^\\d]*)(\\d*)([^\\w]*)<span class=\"pl-c1\">\/<\/span><\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">replacer<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ abc - 12345 - #$*%<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u53e6\u5916\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5982\u679c\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u5e76\u4e14\u5176\u4e3a\u5168\u5c40\u5339\u914d\u6a21\u5f0f\uff0c \u90a3\u4e48\u8fd9\u4e2a\u65b9\u6cd5\u5c06\u88ab\u591a\u6b21\u8c03\u7528\uff0c\u6bcf\u6b21\u5339\u914d\u90fd\u4f1a\u88ab\u8c03\u7528\u3002<\/p>\n<p dir=\"auto\">\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u5982\u679c\u6211\u4eec\u8981\u5728\u4e00\u6bb5\u5b57\u7b26\u4e32\u4e2d\u5339\u914d\u51fa <code class=\"notranslate\">&lt;%=xxx%&gt;<\/code> \u4e2d\u7684\u503c\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = '&lt;li&gt;&lt;a href=&quot;&lt;%=www.baidu.com%&gt;&quot;&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;'\n\nstr.replace(\/&lt;%=(.+?)%&gt;\/g, function(match, p1, offset, string){\n    console.log(match);\n    console.log(p1);\n    console.log(offset);\n    console.log(string);\n})\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'&lt;li&gt;&lt;a href=\"&lt;%=www.baidu.com%&gt;\"&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;'<\/span>\n\n<span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%=(.+?)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">p1<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">offset<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">string<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">p1<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">offset<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">string<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u4f20\u5165\u7684\u51fd\u6570\u4f1a\u88ab\u6267\u884c\u4e24\u6b21\uff0c\u7b2c\u4e00\u6b21\u7684\u6253\u5370\u7ed3\u679c\u4e3a\uff1a<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content='&lt;%=www.baidu.com%&gt;\nwww.baidu.com\n13\n&lt;li&gt;&lt;a href=\"&lt;%=www.baidu.com%&gt;\"&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;'><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">&lt;%=www.baidu.com%&gt;\nwww.baidu.com\n13\n&lt;li&gt;&lt;a href=\"&lt;%=www.baidu.com%&gt;\"&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;\n<\/code><\/pre>\n<\/div>\n<p dir=\"auto\">\u7b2c\u4e8c\u6b21\u7684\u6253\u5370\u7ed3\u679c\u4e3a\uff1a<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"&lt;%=baidu%&gt;\n'baidu'\n33\n&lt;li&gt;&lt;a href=&quot;&lt;%=www.baidu.com%&gt;&quot;&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;\"><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">&lt;%=baidu%&gt;\n'baidu'\n33\n&lt;li&gt;&lt;a href=\"&lt;%=www.baidu.com%&gt;\"&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;\n<\/code><\/pre>\n<\/div>\n<h2 dir=\"auto\">\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u521b\u5efa<\/h2>\n<p dir=\"auto\">\u5f53\u6211\u4eec\u8981\u5efa\u7acb\u4e00\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u521b\u5efa\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var reg = \/ab+c\/i;\">\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">reg<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>ab+c<span class=\"pl-c1\">\/<\/span>i<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u4e5f\u53ef\u4ee5\u4f7f\u7528\u6784\u9020\u51fd\u6570\u7684\u65b9\u5f0f\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"new RegExp('ab+c', 'i');\">\n<pre class=\"notranslate\"><span class=\"pl-k\">new<\/span> <span class=\"pl-v\">RegExp<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">'ab+c'<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s\">'i'<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff1a\u6bcf\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\u5bf9\u8c61\u90fd\u6709\u4e00\u4e2a source \u5c5e\u6027\uff0c\u8fd4\u56de\u5f53\u524d\u6b63\u5219\u8868\u8fbe\u5f0f\u5bf9\u8c61\u7684\u6a21\u5f0f\u6587\u672c\u7684\u5b57\u7b26\u4e32\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content='var regex = \/fooBar\/ig;\nconsole.log(regex.source); \/\/ \"fooBar\"\uff0c\u4e0d\u5305\u542b \/...\/ \u548c \"ig\"\u3002'><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">regex<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>fooBar<span class=\"pl-c1\">\/<\/span>ig<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">regex<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">source<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ \"fooBar\"\uff0c\u4e0d\u5305\u542b \/...\/ \u548c \"ig\"\u3002<\/span><\/pre>\n<\/div>\n<h2 dir=\"auto\">\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u7279\u6b8a\u5b57\u7b26<\/h2>\n<p dir=\"auto\">\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\u6709\u4e00\u4e9b\u7279\u6b8a\u5b57\u7b26\uff0c\u6bd4\u5982 <code class=\"notranslate\">\\d<\/code> \u5c31\u8868\u793a\u4e86\u5339\u914d\u4e00\u4e2a\u6570\u5b57\uff0c\u7b49\u4ef7\u4e8e [0-9]\u3002<\/p>\n<p dir=\"auto\">\u5728\u4e0a\u8282\uff0c\u6211\u4eec\u4f7f\u7528 <code class=\"notranslate\">\/&lt;%=(.+?)%&gt;\/g<\/code> \u6765\u5339\u914d <code class=\"notranslate\">&lt;%=xxx%&gt;<\/code>\uff0c\u7136\u800c\u5728 underscore \u7684\u5b9e\u73b0\u4e2d\uff0c\u7528\u7684\u5374\u662f <code class=\"notranslate\">\/&lt;%=([\\s\\S]+?)%&gt;\/g<\/code>\u3002<\/p>\n<p dir=\"auto\">\u6211\u4eec\u77e5\u9053 \\s \u8868\u793a\u5339\u914d\u4e00\u4e2a\u7a7a\u767d\u7b26\uff0c\u5305\u62ec\u7a7a\u683c\u3001\u5236\u8868\u7b26\u3001\u6362\u9875\u7b26\u3001\u6362\u884c\u7b26\u548c\u5176\u4ed6 Unicode \u7a7a\u683c\uff0c\\S<br \/>\n\u5339\u914d\u4e00\u4e2a\u975e\u7a7a\u767d\u7b26\uff0c[\\s\\S]\u5c31\u8868\u793a\u5339\u914d\u6240\u6709\u7684\u5185\u5bb9\uff0c\u53ef\u662f\u4e3a\u4ec0\u4e48\u6211\u4eec\u4e0d\u76f4\u63a5\u4f7f\u7528 <code class=\"notranslate\">.<\/code> \u5462\uff1f<\/p>\n<p dir=\"auto\">\u6211\u4eec\u53ef\u80fd\u4ee5\u4e3a <code class=\"notranslate\">.<\/code> \u5339\u914d\u4efb\u610f\u5355\u4e2a\u5b57\u7b26\uff0c\u5b9e\u9645\u4e0a\uff0c\u5e76\u4e0d\u662f\u5982\u6b64\uff0c <code class=\"notranslate\">.<\/code>\u5339\u914d\u9664<code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code>\u4e4b\u5916\u7684\u4efb\u4f55\u5355\u4e2a\u5b57\u7b26\uff0c\u4e0d\u4fe1\u6211\u4eec\u505a\u4e2a\u8bd5\u9a8c\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = '&lt;%=hello world%&gt;'\n\nstr.replace(\/&lt;%=(.+?)%&gt;\/g, function(match){\n    console.log(match); \/\/ &lt;%=hello world%&gt;\n})\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'&lt;%=hello world%&gt;'<\/span>\n\n<span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%=(.+?)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ &lt;%=hello world%&gt;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u4f46\u662f\u5982\u679c\u6211\u4eec\u5728 hello world \u4e4b\u95f4\u52a0\u4e0a\u4e00\u4e2a<code class=\"notranslate\">\u884c\u7ec8\u7ed3\u7b26<\/code>\uff0c\u6bd4\u5982\u8bf4 &#8216;\\u2029&#8217;\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = '&lt;%=hello \\u2029 world%&gt;'\n\nstr.replace(\/&lt;%=(.+?)%&gt;\/g, function(match){\n    console.log(match);\n})\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'&lt;%=hello \\u2029 world%&gt;'<\/span>\n\n<span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%=(.+?)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u56e0\u4e3a\u5339\u914d\u4e0d\u5230\uff0c\u6240\u4ee5\u4e5f\u4e0d\u4f1a\u6267\u884c console.log \u51fd\u6570\u3002<\/p>\n<p dir=\"auto\">\u4f46\u662f\u6539\u6210 <code class=\"notranslate\">\/&lt;%=([\\s\\S]+?)%&gt;\/g<\/code> \u5c31\u53ef\u4ee5\u6b63\u5e38\u5339\u914d\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = '&lt;%=hello \\u2029 world%&gt;'\n\nstr.replace(\/&lt;%=([\\s\\S]+?)%&gt;\/g, function(match){\n    console.log(match); \/\/ &lt;%=hello \u2029 world%&gt;\n})\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'&lt;%=hello \\u2029 world%&gt;'<\/span>\n\n<span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%=([\\s\\S]+?)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-c\">\/\/ &lt;%=hello \u2029 world%&gt;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<h2 dir=\"auto\">\u60f0\u6027\u5339\u914d<\/h2>\n<p dir=\"auto\">\u4ed4\u7ec6\u770b <code class=\"notranslate\">\/&lt;%=([\\s\\S]+?)%&gt;\/g<\/code> \u8fd9\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u6211\u4eec\u77e5\u9053 <code class=\"notranslate\">x+<\/code> \u8868\u793a\u5339\u914d <code class=\"notranslate\">x<\/code> 1 \u6b21\u6216\u591a\u6b21\u3002<code class=\"notranslate\">x?<\/code>\u8868\u793a\u5339\u914d <code class=\"notranslate\">x<\/code> 0 \u6b21\u6216 1 \u6b21\uff0c\u4f46\u662f <code class=\"notranslate\">+?<\/code> \u662f\u4e2a\u4ec0\u4e48\u9b3c\uff1f<\/p>\n<p dir=\"auto\">\u5b9e\u9645\u4e0a\uff0c\u5982\u679c\u5728\u6570\u91cf\u8bcd *\u3001+\u3001? \u6216 {}, \u4efb\u610f\u4e00\u4e2a\u540e\u9762\u7d27\u8ddf\u8be5\u7b26\u53f7\uff08?\uff09\uff0c\u4f1a\u4f7f\u6570\u91cf\u8bcd\u53d8\u4e3a\u975e\u8d2a\u5a6a\uff08 non-greedy\uff09 \uff0c\u5373\u5339\u914d\u6b21\u6570\u6700\u5c0f\u5316\u3002\u53cd\u4e4b\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u662f\u8d2a\u5a6a\u7684\uff08greedy\uff09\uff0c\u5373\u5339\u914d\u6b21\u6570\u6700\u5927\u5316\u3002<\/p>\n<p dir=\"auto\">\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content='console.log(\"aaabc\".replace(\/a+\/g, \"d\")); \/\/ dbc\n\nconsole.log(\"aaabc\".replace(\/a+?\/g, \"d\")); \/\/ dddbc'><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">console.log(\"aaabc\".replace(\/a+\/g, \"d\")); \/\/ dbc\n\nconsole.log(\"aaabc\".replace(\/a+?\/g, \"d\")); \/\/ dddbc\n<\/code><\/pre>\n<\/div>\n<p dir=\"auto\">\u5728\u8fd9\u91cc\u6211\u4eec\u5e94\u8be5\u4f7f\u7528\u975e\u60f0\u6027\u5339\u914d\uff0c\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = '&lt;li&gt;&lt;a href=&quot;&lt;%=www.baidu.com%&gt;&quot;&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;'\n\nstr.replace(\/&lt;%=(.+?)%&gt;\/g, function(match){\n    console.log(match);\n})\n\n\/\/ &lt;%=www.baidu.com%&gt;\n\/\/ &lt;%=baidu%&gt;\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'&lt;li&gt;&lt;a href=\"&lt;%=www.baidu.com%&gt;\"&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;'<\/span>\n\n<span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%=(.+?)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span>\n\n<span class=\"pl-c\">\/\/ &lt;%=www.baidu.com%&gt;<\/span>\n<span class=\"pl-c\">\/\/ &lt;%=baidu%&gt;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5982\u679c\u6211\u4eec\u4f7f\u7528\u60f0\u6027\u5339\u914d\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var str = '&lt;li&gt;&lt;a href=&quot;&lt;%=www.baidu.com%&gt;&quot;&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;'\n\nstr.replace(\/&lt;%=(.+)%&gt;\/g, function(match){\n    console.log(match);\n})\n\n\/\/ &lt;%=www.baidu.com%&gt;&quot;&gt;&lt;%=baidu%&gt;\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'&lt;li&gt;&lt;a href=\"&lt;%=www.baidu.com%&gt;\"&gt;&lt;%=baidu%&gt;&lt;\/a&gt;&lt;\/li&gt;'<\/span>\n\n<span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%=(.+)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span>\n\n<span class=\"pl-c\">\/\/ &lt;%=www.baidu.com%&gt;\"&gt;&lt;%=baidu%&gt;<\/span><\/pre>\n<\/div>\n<h2 dir=\"auto\">template<\/h2>\n<p dir=\"auto\">\u8bb2\u5b8c\u9700\u8981\u7684\u77e5\u8bc6\u70b9\uff0c\u6211\u4eec\u5f00\u59cb\u8bb2 underscore \u6a21\u677f\u5f15\u64ce\u7684\u5b9e\u73b0\u3002<\/p>\n<p dir=\"auto\">\u4e0e\u6211\u4eec\u4e0a\u7bc7\u4f7f\u7528\u6570\u7ec4\u7684 push \uff0c\u6700\u540e\u518d join \u7684\u65b9\u6cd5\u4e0d\u540c\uff0cunderscore \u4f7f\u7528\u7684\u662f\u5b57\u7b26\u4e32\u62fc\u63a5\u7684\u65b9\u5f0f\u3002<\/p>\n<p dir=\"auto\">\u6bd4\u5982\u4e0b\u9762\u8fd9\u6837\u4e00\u6bb5\u6a21\u677f\u5b57\u7b26\u4e32\uff1a<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content='&lt;%for ( var i = 0; i &lt; users.length; i++ ) { %&gt;\n    &lt;li&gt;\n        &lt;a href=\"&lt;%=users[i].url%&gt;\"&gt;\n            &lt;%=users[i].name%&gt;\n        &lt;\/a&gt;\n    &lt;\/li&gt;\n&lt;% } %&gt;'><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">&lt;%for ( var i = 0; i &lt; users.length; i++ ) { %&gt;\n    &lt;li&gt;\n        &lt;a href=\"&lt;%=users[i].url%&gt;\"&gt;\n            &lt;%=users[i].name%&gt;\n        &lt;\/a&gt;\n    &lt;\/li&gt;\n&lt;% } %&gt;\n<\/code><\/pre>\n<\/div>\n<p dir=\"auto\">\u6211\u4eec\u5148\u5c06 <code class=\"notranslate\">&lt;%=xxx%&gt;<\/code> \u66ff\u6362\u6210 <code class=\"notranslate\">'+ xxx +'<\/code>\uff0c\u518d\u5c06 <code class=\"notranslate\">&lt;%xxx%&gt;<\/code> \u66ff\u6362\u6210 <code class=\"notranslate\">'; xxx __p+='<\/code>:<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"';for ( var i = 0; i &lt; users.length; i++ ) { __p+='\n    &lt;li&gt;\n        &lt;a href=&quot;'+ users[i].url + '&quot;&gt;\n            '+ users[i].name +'\n        &lt;\/a&gt;\n    &lt;\/li&gt;\n';  } __p+='\"><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">';for ( var i = 0; i &lt; users.length; i++ ) { __p+='\n    &lt;li&gt;\n        &lt;a href=\"'+ users[i].url + '\"&gt;\n            '+ users[i].name +'\n        &lt;\/a&gt;\n    &lt;\/li&gt;\n';  } __p+='\n<\/code><\/pre>\n<\/div>\n<p dir=\"auto\">\u8fd9\u6bb5\u4ee3\u7801\u80af\u5b9a\u4f1a\u8fd0\u884c\u9519\u8bef\u7684\uff0c\u6240\u4ee5\u6211\u4eec\u518d\u6dfb\u52a0\u4e9b\u5934\u5c3e\u4ee3\u7801\uff0c\u7136\u540e\u7ec4\u6210\u4e00\u4e2a\u5b8c\u6574\u7684\u4ee3\u7801\u5b57\u7b26\u4e32\uff1a<\/p>\n<div class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"var __p='';\nwith(obj){\n__p+='\n\n';for ( var i = 0; i &lt; users.length; i++ ) { __p+='\n    &lt;li&gt;\n        &lt;a href=&quot;'+ users[i].url + '&quot;&gt;\n            '+ users[i].name +'\n        &lt;\/a&gt;\n    &lt;\/li&gt;\n';  } __p+='\n\n';\n};\nreturn __p;\"><\/p>\n<pre class=\"notranslate\"><code class=\"notranslate\">var __p='';\nwith(obj){\n__p+='\n\n';for ( var i = 0; i &lt; users.length; i++ ) { __p+='\n    &lt;li&gt;\n        &lt;a href=\"'+ users[i].url + '\"&gt;\n            '+ users[i].name +'\n        &lt;\/a&gt;\n    &lt;\/li&gt;\n';  } __p+='\n\n';\n};\nreturn __p;\n<\/code><\/pre>\n<\/div>\n<p dir=\"auto\">\u6574\u7406\u4e0b\u4ee3\u7801\u5c31\u662f\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var __p='';\nwith(obj){\n    __p+='';\n    for ( var i = 0; i &lt; users.length; i++ ) { \n        __p+='&lt;li&gt;&lt;a href=&quot;'+ users[i].url + '&quot;&gt; '+ users[i].name +'&lt;\/a&gt;&lt;\/li&gt;';\n    }\n    __p+='';\n};\nreturn __p\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">__p<\/span><span class=\"pl-c1\">=<\/span><span class=\"pl-s\">''<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-k\">with<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">obj<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-s1\">__p<\/span><span class=\"pl-c1\">+=<\/span><span class=\"pl-s\">''<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-k\">for<\/span> <span class=\"pl-kos\">(<\/span> <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">i<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-c1\">0<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-s1\">i<\/span> <span class=\"pl-c1\">&lt;<\/span> <span class=\"pl-s1\">users<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">length<\/span><span class=\"pl-kos\">;<\/span> <span class=\"pl-s1\">i<\/span><span class=\"pl-c1\">++<\/span> <span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span> \n        <span class=\"pl-s1\">__p<\/span><span class=\"pl-c1\">+=<\/span><span class=\"pl-s\">'&lt;li&gt;&lt;a href=\"'<\/span><span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">users<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-s1\">i<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">url<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">'\"&gt; '<\/span><span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">users<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-s1\">i<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">name<\/span> <span class=\"pl-c1\">+<\/span><span class=\"pl-s\">'&lt;\/a&gt;&lt;\/li&gt;'<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-kos\">}<\/span>\n    <span class=\"pl-s1\">__p<\/span><span class=\"pl-c1\">+=<\/span><span class=\"pl-s\">''<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-k\">return<\/span> <span class=\"pl-s1\">__p<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u7136\u540e\u6211\u4eec\u5c06 <code class=\"notranslate\">__p<\/code> \u8fd9\u6bb5\u4ee3\u7801\u5b57\u7b26\u4e32\u4f20\u5165 Function \u6784\u9020\u51fd\u6570\u4e2d\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var render = new Function(data, __p)\">\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">render<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">data<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">__p<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u6211\u4eec\u6267\u884c\u8fd9\u4e2a render \u51fd\u6570\uff0c\u4f20\u5165\u9700\u8981\u7684 data \u6570\u636e\uff0c\u5c31\u53ef\u4ee5\u8fd4\u56de\u4e00\u6bb5 HTML \u5b57\u7b26\u4e32\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"render(data)\">\n<pre class=\"notranslate\"><span class=\"pl-en\">render<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">data<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<h2 dir=\"auto\">\u7b2c\u4e94\u7248 &#8211; \u7279\u6b8a\u5b57\u7b26\u7684\u5904\u7406<\/h2>\n<p dir=\"auto\">\u6211\u4eec\u63a5\u7740\u4e0a\u7bc7\u7684<a href=\"https:\/\/github.com\/mqyqingfeng\/Blog\/tree\/master\/demos\/template\/template4\">\u7b2c\u56db\u7248<\/a>\u8fdb\u884c\u4e66\u5199\uff0c\u4e0d\u8fc7\u52a0\u5165\u5bf9\u7279\u6b8a\u5b57\u7b26\u7684\u8f6c\u4e49\u4ee5\u53ca\u4f7f\u7528\u5b57\u7b26\u4e32\u62fc\u63a5\u7684\u65b9\u5f0f\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"\/\/ \u7b2c\u4e94\u7248\nvar settings = {\n    \/\/ \u6c42\u503c\n    evaluate: \/&lt;%([\\s\\S]+?)%&gt;\/g,\n    \/\/ \u63d2\u5165\n    interpolate: \/&lt;%=([\\s\\S]+?)%&gt;\/g,\n};\n\nvar escapes = {\n    &quot;'&quot;: &quot;'&quot;,\n    '\\\\': '\\\\',\n    '\\r': 'r',\n    '\\n': 'n',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = \/\\\\|'|\\r|\\n|\\u2028|\\u2029\/g;\n\nvar template = function(text) {\n\n    var source = &quot;var __p='';\\n&quot;;\n    source = source + &quot;with(obj){\\n&quot;\n    source = source + &quot;__p+='&quot;;\n\n    var main = text\n    .replace(escapeRegExp, function(match) {\n        return '\\\\' + escapes[match];\n    })\n    .replace(settings.interpolate, function(match, interpolate){\n        return &quot;'+\\n&quot; + interpolate + &quot;+\\n'&quot;\n    })\n    .replace(settings.evaluate, function(match, evaluate){\n        return &quot;';\\n &quot; + evaluate + &quot;\\n__p+='&quot;\n    })\n\n    source = source + main + &quot;';\\n }; \\n return __p;&quot;;\n\n    console.log(source)\n\n    var render = new Function('obj',  source);\n\n    return render;\n};\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-c\">\/\/ \u7b2c\u4e94\u7248<\/span>\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">settings<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-c\">\/\/ \u6c42\u503c<\/span>\n    <span class=\"pl-c1\">evaluate<\/span>: <span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%([\\s\\S]+?)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-c\">\/\/ \u63d2\u5165<\/span>\n    <span class=\"pl-c1\">interpolate<\/span>: <span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>&lt;%=([\\s\\S]+?)%&gt;<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">;<\/span>\n\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">escapes<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-s\">\"'\"<\/span>: <span class=\"pl-s\">\"'\"<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\\\'<\/span>: <span class=\"pl-s\">'\\\\'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\r'<\/span>: <span class=\"pl-s\">'r'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\n'<\/span>: <span class=\"pl-s\">'n'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\u2028'<\/span>: <span class=\"pl-s\">'u2028'<\/span><span class=\"pl-kos\">,<\/span>\n    <span class=\"pl-s\">'\\u2029'<\/span>: <span class=\"pl-s\">'u2029'<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">;<\/span>\n\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">escapeRegExp<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>\\\\|'|\\r|\\n|\\u2028|\\u2029<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">;<\/span>\n\n<span class=\"pl-k\">var<\/span> <span class=\"pl-en\">template<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">text<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n\n    <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">\"var __p='';\\n\"<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"with(obj){\\n\"<\/span>\n    <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"__p+='\"<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">main<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">text<\/span>\n    <span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">escapeRegExp<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n        <span class=\"pl-k\">return<\/span> <span class=\"pl-s\">'\\\\'<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">escapes<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span>\n    <span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">settings<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">interpolate<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">interpolate<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n        <span class=\"pl-k\">return<\/span> <span class=\"pl-s\">\"'+\\n\"<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">interpolate<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"+\\n'\"<\/span>\n    <span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span>\n    <span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">settings<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">evaluate<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">evaluate<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n        <span class=\"pl-k\">return<\/span> <span class=\"pl-s\">\"';\\n \"<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">evaluate<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"\\n__p+='\"<\/span>\n    <span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span>\n\n    <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">main<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"';\\n }; \\n return __p;\"<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">source<\/span><span class=\"pl-kos\">)<\/span>\n\n    <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">render<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">'obj'<\/span><span class=\"pl-kos\">,<\/span>  <span class=\"pl-s1\">source<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-s1\">render<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5b8c\u6574\u7684\u4f7f\u7528\u4ee3\u7801\u53ef\u4ee5\u53c2\u8003 <a href=\"https:\/\/github.com\/mqyqingfeng\/Blog\/tree\/master\/demos\/template\/template5\">template \u793a\u4f8b\u4e94<\/a>\u3002<\/p>\n<h2 dir=\"auto\">\u7b2c\u516d\u7248 &#8211; \u7279\u6b8a\u503c\u7684\u5904\u7406<\/h2>\n<p dir=\"auto\">\u4e0d\u8fc7\u6709\u4e00\u70b9\u9700\u8981\u6ce8\u610f\u7684\u662f\uff1a<\/p>\n<p dir=\"auto\">\u5982\u679c\u6570\u636e\u4e2d <code class=\"notranslate\">users[i].url<\/code> \u4e0d\u5b58\u5728\u600e\u4e48\u529e\uff1f\u6b64\u65f6\u53d6\u503c\u7684\u7ed3\u679c\u4e3a undefined\uff0c\u6211\u4eec\u77e5\u9053\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"'1' + undefined \/\/ &quot;1undefined&quot;\">\n<pre class=\"notranslate\"><span class=\"pl-s\">'1'<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-c1\">undefined<\/span> <span class=\"pl-c\">\/\/ \"1undefined\"<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5c31\u76f8\u5f53\u4e8e\u62fc\u63a5\u4e86 undefined \u5b57\u7b26\u4e32\uff0c\u8fd9\u80af\u5b9a\u4e0d\u662f\u6211\u4eec\u60f3\u8981\u7684\u3002\u6211\u4eec\u53ef\u4ee5\u5728\u4ee3\u7801\u4e2d\u52a0\u5165\u4e00\u70b9\u5224\u65ad\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\".replace(settings.interpolate, function(match, interpolate){\n    return &quot;'+\\n&quot; + (interpolate == null ? '' : interpolate) + &quot;+\\n'&quot;\n})\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">settings<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">interpolate<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">interpolate<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-s\">\"'+\\n\"<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">interpolate<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">null<\/span> ? <span class=\"pl-s\">''<\/span> : <span class=\"pl-s1\">interpolate<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"+\\n'\"<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u4f46\u662f\u5427\uff0c\u6211\u5c31\u662f\u4e0d\u559c\u6b22\u5199\u4e24\u904d interpolate \u2026\u2026 \u55ef\uff1f\u90a3\u5c31\u8fd9\u6837\u5427\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var source = &quot;var __t, __p='';\\n&quot;;\n\n...\n\n.replace(settings.interpolate, function(match, interpolate){\n    return &quot;'+\\n((__t=(&quot; + interpolate + &quot;))==null?'':__t)+\\n'&quot;\n})\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">\"var __t, __p='';\\n\"<\/span><span class=\"pl-kos\">;<\/span>\n\n...\n\n<span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">settings<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">interpolate<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">interpolate<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-s\">\"'+\\n((__t=(\"<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">interpolate<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"))==null?'':__t)+\\n'\"<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5176\u5b9e\u5c31\u76f8\u5f53\u4e8e\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var __t;\n\nvar result = (__t = interpolate) == null ? '' : __t;\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">__t<\/span><span class=\"pl-kos\">;<\/span>\n\n<span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">result<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">__t<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">interpolate<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c1\">==<\/span> <span class=\"pl-c1\">null<\/span> ? <span class=\"pl-s\">''<\/span> : <span class=\"pl-s1\">__t<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5b8c\u6574\u7684\u4f7f\u7528\u4ee3\u7801\u53ef\u4ee5\u53c2\u8003 <a href=\"https:\/\/github.com\/mqyqingfeng\/Blog\/tree\/master\/demos\/template\/template6\">template \u793a\u4f8b\u516d<\/a>\u3002<\/p>\n<h2 dir=\"auto\">\u7b2c\u4e03\u7248<\/h2>\n<p dir=\"auto\">\u73b0\u5728\u6211\u4eec\u4f7f\u7528\u7684\u65b9\u5f0f\u662f\u5c06\u6a21\u677f\u5b57\u7b26\u4e32\u8fdb\u884c\u591a\u6b21\u66ff\u6362\uff0c\u7136\u800c\u5728 underscore \u7684\u5b9e\u73b0\u4e2d\uff0c\u53ea\u8fdb\u884c\u4e86\u4e00\u6b21\u66ff\u6362\uff0c\u6211\u4eec\u6765\u770b\u770b underscore \u662f\u600e\u4e48\u5b9e\u73b0\u7684\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"var template = function(text) {\n    var matcher = RegExp([\n        (settings.interpolate).source,\n        (settings.evaluate).source\n    ].join('|') + '|$', 'g');\n\n    var index = 0;\n    var source = &quot;__p+='&quot;;\n\n    text.replace(matcher, function(match, interpolate, evaluate, offset) {\n        source += text.slice(index, offset).replace(escapeRegExp, function(match) {\n            return '\\\\' + escapes[match];\n        });\n\n        index = offset + match.length;\n\n        if (interpolate) {\n            source += &quot;'+\\n((__t=(&quot; + interpolate + &quot;))==null?'':__t)+\\n'&quot;;\n        } else if (evaluate) {\n            source += &quot;';\\n&quot; + evaluate + &quot;\\n__p+='&quot;;\n        }\n\n        return match;\n    });\n\n    source += &quot;';\\n&quot;;\n\n    source = 'with(obj||{}){\\n' + source + '}\\n'\n\n    source = &quot;var __t, __p='';&quot; +\n        source + 'return __p;\\n';\n\n    var render = new Function('obj', source);\n\n    return render;\n};\"><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-en\">template<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">text<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">matcher<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-v\">RegExp<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-kos\">[<\/span>\n        <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">settings<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">interpolate<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">source<\/span><span class=\"pl-kos\">,<\/span>\n        <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">settings<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">evaluate<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">source<\/span>\n    <span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">join<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">'|'<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">'|$'<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s\">'g'<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">index<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-c1\">0<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">\"__p+='\"<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-s1\">text<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">matcher<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">interpolate<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">evaluate<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">offset<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n        <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+=<\/span> <span class=\"pl-s1\">text<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">slice<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">index<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">offset<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">escapeRegExp<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n            <span class=\"pl-k\">return<\/span> <span class=\"pl-s\">'\\\\'<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">escapes<\/span><span class=\"pl-kos\">[<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">]<\/span><span class=\"pl-kos\">;<\/span>\n        <span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n\n        <span class=\"pl-s1\">index<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s1\">offset<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-c1\">length<\/span><span class=\"pl-kos\">;<\/span>\n\n        <span class=\"pl-k\">if<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">interpolate<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n            <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+=<\/span> <span class=\"pl-s\">\"'+\\n((__t=(\"<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">interpolate<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"))==null?'':__t)+\\n'\"<\/span><span class=\"pl-kos\">;<\/span>\n        <span class=\"pl-kos\">}<\/span> <span class=\"pl-k\">else<\/span> <span class=\"pl-k\">if<\/span> <span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">evaluate<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-kos\">{<\/span>\n            <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+=<\/span> <span class=\"pl-s\">\"';\\n\"<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">evaluate<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">\"\\n__p+='\"<\/span><span class=\"pl-kos\">;<\/span>\n        <span class=\"pl-kos\">}<\/span>\n\n        <span class=\"pl-k\">return<\/span> <span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">;<\/span>\n    <span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+=<\/span> <span class=\"pl-s\">\"';\\n\"<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">'with(obj||{}){\\n'<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">'}\\n'<\/span>\n\n    <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">\"var __t, __p='';\"<\/span> <span class=\"pl-c1\">+<\/span>\n        <span class=\"pl-s1\">source<\/span> <span class=\"pl-c1\">+<\/span> <span class=\"pl-s\">'return __p;\\n'<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">render<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-k\">new<\/span> <span class=\"pl-v\">Function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s\">'obj'<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">source<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">;<\/span>\n\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-s1\">render<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">;<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u5176\u5b9e\u539f\u7406\u4e5f\u5f88\u7b80\u5355\uff0c\u5c31\u662f\u5728\u6267\u884c\u591a\u6b21\u5339\u914d\u51fd\u6570\u7684\u65f6\u5019\uff0c\u4e0d\u65ad\u590d\u5236\u5b57\u7b26\u4e32\uff0c\u5904\u7406\u5b57\u7b26\u4e32\uff0c\u62fc\u63a5\u5b57\u7b26\u4e32\uff0c\u6700\u540e\u62fc\u63a5\u9996\u5c3e\u4ee3\u7801\uff0c\u5f97\u5230\u6700\u7ec8\u7684\u4ee3\u7801\u5b57\u7b26\u4e32\u3002<\/p>\n<p dir=\"auto\">\u4e0d\u8fc7\u503c\u5f97\u4e00\u63d0\u7684\u662f\uff1a\u5728\u8fd9\u6bb5\u4ee3\u7801\u91cc\uff0cmatcher \u7684\u8868\u8fbe\u5f0f\u6700\u540e\u4e3a\uff1a<code class=\"notranslate\">\/&lt;%=([\\s\\S]+?)%&gt;|&lt;%([\\s\\S]+?)%&gt;|$\/g<\/code><\/p>\n<p dir=\"auto\">\u95ee\u9898\u662f\u4e3a\u4ec0\u4e48\u8fd8\u8981\u52a0\u4e2a <code class=\"notranslate\">|$<\/code> \u5462\uff1f\u6211\u4eec\u6765\u770b\u4e0b $\uff1a<\/p>\n<div class=\"highlight highlight-source-js notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content='var str = \"abc\";\nstr.replace(\/$\/g, function(match, offset){\n    console.log(typeof match) \/\/ \u7a7a\u5b57\u7b26\u4e32\n    console.log(offset) \/\/ 3\n    return match\n})'><\/p>\n<pre class=\"notranslate\"><span class=\"pl-k\">var<\/span> <span class=\"pl-s1\">str<\/span> <span class=\"pl-c1\">=<\/span> <span class=\"pl-s\">\"abc\"<\/span><span class=\"pl-kos\">;<\/span>\n<span class=\"pl-s1\">str<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">replace<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-pds\"><span class=\"pl-c1\">\/<\/span>$<span class=\"pl-c1\">\/<\/span>g<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-k\">function<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">,<\/span> <span class=\"pl-s1\">offset<\/span><span class=\"pl-kos\">)<\/span><span class=\"pl-kos\">{<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-k\">typeof<\/span> <span class=\"pl-s1\">match<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c\">\/\/ \u7a7a\u5b57\u7b26\u4e32<\/span>\n    <span class=\"pl-smi\">console<\/span><span class=\"pl-kos\">.<\/span><span class=\"pl-en\">log<\/span><span class=\"pl-kos\">(<\/span><span class=\"pl-s1\">offset<\/span><span class=\"pl-kos\">)<\/span> <span class=\"pl-c\">\/\/ 3<\/span>\n    <span class=\"pl-k\">return<\/span> <span class=\"pl-s1\">match<\/span>\n<span class=\"pl-kos\">}<\/span><span class=\"pl-kos\">)<\/span><\/pre>\n<\/div>\n<p dir=\"auto\">\u6211\u4eec\u4e4b\u6240\u4ee5\u5339\u914d $\uff0c\u662f\u4e3a\u4e86\u83b7\u53d6\u6700\u540e\u4e00\u4e2a\u5b57\u7b26\u4e32\u7684\u4f4d\u7f6e\uff0c\u8fd9\u6837\u5f53\u6211\u4eec text.slice(index, offset)\u7684\u65f6\u5019\uff0c\u5c31\u53ef\u4ee5\u622a\u53d6\u5230\u6700\u540e\u4e00\u4e2a\u5b57\u7b26\u3002<\/p>\n<p dir=\"auto\">\u5b8c\u6574\u7684\u4f7f\u7528\u4ee3\u7801\u53ef\u4ee5\u53c2\u8003 <a href=\"https:\/\/github.com\/mqyqingfeng\/Blog\/tree\/master\/demos\/template\/template7\">template \u793a\u4f8b\u4e03<\/a>\u3002<\/p>\n<h2 dir=\"auto\">\u6700\u7ec8\u7248<\/h2>\n<p dir=\"auto\">\u5176\u5b9e\u4ee3\u7801\u5199\u5230\u8fd9\u91cc\uff0c\u5c31\u5df2\u7ecf\u8ddf underscore \u7684\u5b9e\u73b0\u5f88\u63a5\u8fd1\u4e86\uff0c\u53ea\u662f underscore \u52a0\u5165\u4e86\u66f4\u591a\u7ec6\u8282\u7684\u5904\u7406\uff0c\u6bd4\u5982\uff1a<\/p>\n<ol dir=\"auto\">\n<li>\u5bf9\u6570\u636e\u7684\u8f6c\u4e49\u529f\u80fd<\/li>\n<li>\u53ef\u4f20\u5165\u914d\u7f6e\u9879<\/li>\n<li>\u5bf9\u9519\u8bef\u7684\u5904\u7406<\/li>\n<li>\u6dfb\u52a0 source \u5c5e\u6027\uff0c\u4ee5\u65b9\u4fbf\u67e5\u770b\u4ee3\u7801\u5b57\u7b26\u4e32<\/li>\n<li>\u6dfb\u52a0\u4e86\u65b9\u4fbf\u8c03\u8bd5\u7684 print \u51fd\u6570<\/li>\n<li>&#8230;<\/li>\n<\/ol>\n<p dir=\"auto\">\u4f46\u662f\u8fd9\u4e9b\u5185\u5bb9\u90fd\u8fd8\u7b97\u7b80\u5355\uff0c\u5c31\u4e0d\u4e00\u7248\u4e00\u7248\u5199\u4e86\uff0c\u6700\u540e\u7684\u7248\u672c\u5728 <a href=\"https:\/\/github.com\/mqyqingfeng\/Blog\/tree\/master\/demos\/template\/template8\">template \u793a\u4f8b\u516b<\/a>\uff0c\u5982\u679c\u5bf9\u5176\u4e2d\u6709\u7591\u95ee\uff0c\u6b22\u8fce\u7559\u8a00\u8ba8\u8bba\u3002<\/p>\n<h2 dir=\"auto\">underscore \u7cfb\u5217<\/h2>\n<p dir=\"auto\">underscore \u7cfb\u5217\u76ee\u5f55\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/mqyqingfeng\/Blog\">https:\/\/github.com\/mqyqingfeng\/Blog<\/a>\u3002<\/p>\n<p dir=\"auto\">underscore \u7cfb\u5217\u9884\u8ba1\u5199\u516b\u7bc7\u5de6\u53f3\uff0c\u91cd\u70b9\u4ecb\u7ecd underscore \u4e2d\u7684\u4ee3\u7801\u67b6\u6784\u3001\u94fe\u5f0f\u8c03\u7528\u3001\u5185\u90e8\u51fd\u6570\u3001\u6a21\u677f\u5f15\u64ce\u7b49\u5185\u5bb9\uff0c\u65e8\u5728\u5e2e\u52a9\u5927\u5bb6\u9605\u8bfb\u6e90\u7801\uff0c\u4ee5\u53ca\u5199\u51fa\u81ea\u5df1\u7684 undercore\u3002<\/p>\n<\/td>\n<p>\u6587\u7ae0\u8f6c\u8f7d\u81ea<a href='https:\/\/github.com\/mqyqingfeng\/Blog\/issues\/70'>https:\/\/github.com\/mqyqingfeng\/Blog\/issues\/70<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 \u672c\u7bc7\u63a5\u7740\u4e0a\u7bc7 underscore \u7cfb\u5217\u4e4b\u5b9e\u73b0\u4e00\u4e2a\u6a21\u677f\u5f15\u64ce(\u4e0a)\u3002 \u9274\u4e8e\u672c\u7bc7\u6d89\u53ca\u7684\u77e5\u8bc6\u70b9\u592a\u591a\uff0c\u6211\u4eec\u5148\u6765\u4ecb\u7ecd\u4e0b\u4f1a\u7528\u5230\u7684\u77e5\u8bc6\u70b9\u3002 \u53cd\u659c\u6760\u7684\u4f5c\u7528 var txt&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.lccc.top\/?p=1365\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1365","post","type-post","status-publish","format-standard","hentry","category-learn"],"_links":{"self":[{"href":"https:\/\/www.lccc.top\/index.php?rest_route=\/wp\/v2\/posts\/1365"}],"collection":[{"href":"https:\/\/www.lccc.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lccc.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lccc.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lccc.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1365"}],"version-history":[{"count":1,"href":"https:\/\/www.lccc.top\/index.php?rest_route=\/wp\/v2\/posts\/1365\/revisions"}],"predecessor-version":[{"id":1476,"href":"https:\/\/www.lccc.top\/index.php?rest_route=\/wp\/v2\/posts\/1365\/revisions\/1476"}],"wp:attachment":[{"href":"https:\/\/www.lccc.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lccc.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lccc.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}