{"id":8876,"date":"2023-08-30T10:37:56","date_gmt":"2023-08-30T02:37:56","guid":{"rendered":"\/?p=8876"},"modified":"2023-08-30T10:37:56","modified_gmt":"2023-08-30T02:37:56","slug":"js%e4%bb%a3%e7%a0%81%e5%ae%89%e5%85%a8%e9%98%b2%e6%8a%a4%e5%8e%9f%e7%90%86","status":"publish","type":"post","link":"\/?p=8876","title":{"rendered":"JS\u4ee3\u7801\u5b89\u5168\u9632\u62a4\u539f\u7406"},"content":{"rendered":"<h2>\u4e00\u3001\u5e38\u91cf\u7684\u6df7\u6dc6\u539f\u7406<\/h2>\n<p>\u793a\u4f8b\u4ee3\u7801\uff1a\u4e3aDate\u539f\u578b\u5bf9\u8c61\u6dfb\u52a0format\u65b9\u6cd5<\/p>\n<pre><code class=\"language-javascript\">Date.prototype.format = function (formatStr){\n    var str = formatStr\n    var Week = [&#039;\u65e5&#039;, &#039;\u4e00&#039;,&#039;\u4e8c&#039;,&#039;\u4e09&#039;,&#039;\u56db&#039;,&#039;\u4e94&#039;,&#039;\u516d&#039;]\n    str = str.replace(\/yyyy|YYYY\/, this.getFullYear())\n    str = str.replace(\/MM\/, (this.getMonth()+1)&gt;9 ? (this.getMonth()+1).toString() : &#039;0&#039; + (this.getMonth() + 1));\n    str = str.replace(\/dd|DD\/, this.getDate() &gt;9 ? this.getDate().toString() : &#039;0&#039; + this.getDate());\n    return str;\n}\nconsole.log(new Date().format(&#039;yyyy-MM-dd&#039;));<\/code><\/pre>\n<h3>1.\u5bf9\u8c61\u5c5e\u6027\u7684\u4e24\u79cd\u8bbf\u95ee\u65b9\u5f0f<\/h3>\n<pre><code class=\"language-javascript\">function People(name) {\n    this.name = name;\n}\nPeople.prototype.sayHello = function () {\n    console.log(&#039;Hello&#039;);\n}\nvar p = new People(&#039;xiaojianbang&#039;);\n\nconsole.log(p.name);    \/\/xiaojianbang \u7b2c\u4e00\u79cd\u8bbf\u95ee\u65b9\u5f0f\np.sayHello();           \/\/Hello\nconsole.log(p[&#039;name&#039;]);   \/\/xiaojianbang \u7b2c\u4e8c\u79cd\u8bbf\u95ee\u65b9\u5f0f\np[&#039;sayHello&#039;]();      \/\/Hello<\/code><\/pre>\n<ul>\n<li><code>p.name<\/code>\u8fd9\u79cd\u65b9\u5f0f\uff0cname\u662f\u4e00\u4e2a\u6807\u8bc6\u7b26\uff0c\u5fc5\u987b\u660e\u786e\u51fa\u73b0\u5728\u4ee3\u7801\u4e2d\uff0c\u4e0d\u80fd\u52a0\u5bc6\u548c\u62fc\u63a5\uff1b<\/li>\n<li><code>p[&#039;name&#039;]<\/code>\u8fd9\u79cd\u65b9\u5f0f\u4e2d\uff0cname\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u65e2\u7136\u662f\u5b57\u7b26\u4e32\uff0c\u8bbf\u95ee\u7684\u65f6\u5019\u5c31\u53ef\u4ee5\u8fdb\u884c\u62fc\u63a5\u548c\u52a0\u5bc6\u3002\u5728JS\u6df7\u6dc6\u4e2d\uff0c\u4e00\u822c\u4f1a\u9009\u62e9\u7528\u8fd9\u79cd\u65b9\u5f0f\u6765\u8bbf\u95ee\u5c5e\u6027\u3002<\/li>\n<\/ul>\n<p>\u8bbf\u95ee\u5bf9\u8c61\u7684\u65b9\u6cd5\u4e5f\u4e00\u6837\u3002\u56e0\u4e3a\u5bf9\u8c61\u7684\u65b9\u6cd5\u53ef\u4ee5\u770b\u4f5c\u7279\u6b8a\u7684\u5c5e\u6027\uff0c\u5b83\u662f\u4e00\u79cd\u503c\u4e3a\u51fd\u6570\u7684\u5c5e\u6027\u3002\u7b2c\u4e00\u6bb5\u793a\u4f8b\u4ee3\u7801\u53ef\u4ee5\u8f6c\u6362\u4e3a\u5982\u4e0b\u5f62\u5f0f\uff1a<\/p>\n<pre><code class=\"language-javascript\">Date.prototype.format = function (formatStr) {\n    var str = formatStr;\n    var Week = [&#039;\u65e5&#039;, &#039;\u4e00&#039;, &#039;\u4e8c&#039;, &#039;\u4e09&#039;, &#039;\u56db&#039;, &#039;\u4e94&#039;, &#039;\u516d&#039;];\n    str = str[&#039;replace&#039;](\/yyyy|YYYY\/, this[&#039;getFullYear&#039;]());\n    str = str[&#039;replace&#039;](\/MM\/, (this[&#039;getMonth&#039;]() + 1) &gt; 9 ? (this[&#039;getMonth&#039;]() + 1)[&#039;toString&#039;]() : &#039;0&#039; + (this[&#039;getMonth&#039;]() + 1));\n    str = str[&#039;replace&#039;](\/dd|DD\/, this[&#039;getDate&#039;]() &gt; 9 ? this[&#039;getDate&#039;]()[&#039;toString&#039;]() : &#039;0&#039; + this[&#039;getDate&#039;]());\n    return str\n}\nconsole.log(new window[&#039;Date&#039;]()[&#039;format&#039;](&#039;yyyy-MM-dd&#039;));\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<p><code>Date<\/code>\u65b9\u6cd5\u662f\u5168\u5c40\u5bf9\u8c61\u7684\u5c5e\u6027\u6216\u65b9\u6cd5\uff0c\u53ef\u4ee5\u7701\u7565\u5168\u5c40\u5bf9\u8c61\u540d\u3002<\/p>\n<p><code>new window.Date() \u7b49\u540c\u4e8e new Date()<\/code><\/p>\n<p>\u8fd9\u91cc\u7531\u4e8e\u8981\u628a<code>Date<\/code>\u53d8\u6210\u5b57\u7b26\u4e32\uff0c\u56e0\u6b64\u524d\u9762\u5c31\u5fc5\u987b\u52a0<code>window<\/code><\/p>\n<p><strong>\u6ce8\uff1a<\/strong><\/p>\n<p>\u5728JavaScript\u4e2d\uff0c<code>new window.Date<\/code>\u548c<code>new Date<\/code>\u90fd\u662f\u521b\u5efa<code>Date<\/code>\u5bf9\u8c61\u7684\u65b9\u5f0f\uff0c\u4f46\u5b83\u4eec\u5b9e\u9645\u4e0a\u662f\u4e0d\u540c\u7684\u5bf9\u8c61\u3002<\/p>\n<p><code>window.Date<\/code>\u662f\u5168\u5c40\u5bf9\u8c61<code>window<\/code>\u7684\u5c5e\u6027\uff0c\u5b83\u6307\u5411\u5185\u7f6e\u7684<code>Date<\/code>\u6784\u9020\u51fd\u6570\u3002\u800c<code>new Date<\/code>\u5219\u662f\u76f4\u63a5\u8c03\u7528<code>Date<\/code>\u6784\u9020\u51fd\u6570\u521b\u5efa\u4e00\u4e2a\u65b0\u7684<code>Date<\/code>\u5bf9\u8c61\u3002<\/p>\n<p>\u5c3d\u7ba1\u5b83\u4eec\u90fd\u662f\u7528\u4e8e\u521b\u5efa<code>Date<\/code>\u5bf9\u8c61\u7684\u65b9\u5f0f\uff0c\u4f46\u662f\u5b83\u4eec\u5728\u5185\u5b58\u4e2d\u662f\u4e0d\u540c\u7684\u5bf9\u8c61\u5b9e\u4f8b\u3002\u56e0\u6b64\uff0c<code>new window.Date<\/code>\u548c<code>new Date<\/code>\u662f\u4e0d\u76f8\u7b49\u7684\uff0c\u5b83\u4eec\u7684\u6bd4\u8f83\u7ed3\u679c\u662f<code>false<\/code>\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528<code>===<\/code>\u8fd0\u7b97\u7b26\u6765\u6bd4\u8f83\u4e24\u4e2a\u5bf9\u8c61\u662f\u5426\u76f8\u7b49\u3002\u4f8b\u5982\uff0c<code>new window.Date === new Date<\/code>\u5c06\u4f1a\u8fd4\u56de<code>false<\/code>\uff0c\u56e0\u4e3a\u5b83\u4eec\u662f\u4e0d\u540c\u7684\u5bf9\u8c61\u5b9e\u4f8b\u3002<\/p>\n<pre><code class=\"language-javascript\">console.log(new window.Date === new Date); \/\/ false\nconsole.log(new window.Date == new Date); \/\/ false<\/code><\/pre>\n<p>\u5982\u679c\u60a8\u60f3\u6bd4\u8f83\u4e24\u4e2a<code>Date<\/code>\u5bf9\u8c61\u7684\u503c\u662f\u5426\u76f8\u7b49\uff0c\u53ef\u4ee5\u4f7f\u7528<code>getTime()<\/code>\u65b9\u6cd5\u5c06\u65e5\u671f\u5bf9\u8c61\u8f6c\u6362\u4e3a\u65f6\u95f4\u6233\uff0c\u7136\u540e\u8fdb\u884c\u6bd4\u8f83\u3002\u4f8b\u5982\uff1a<\/p>\n<pre><code class=\"language-javascript\">console.log(new window.Date().getTime() === new Date().getTime()); \/\/ true<\/code><\/pre>\n<p>\u8fd9\u6837\u53ef\u4ee5\u6bd4\u8f83\u4e24\u4e2a\u65e5\u671f\u5bf9\u8c61\u7684\u65f6\u95f4\u6233\u662f\u5426\u76f8\u7b49\uff0c\u4ece\u800c\u5224\u65ad\u5b83\u4eec\u7684\u503c\u662f\u5426\u76f8\u7b49\u3002<\/p>\n<h3>2.\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32<\/h3>\n<p>\u6539\u53d8\u5bf9\u8c61\u5c5e\u6027\u7684\u8bbf\u95ee\u65b9\u5f0f\u540e\uff0c\u4ee3\u7801\u7684\u53ef\u8bfb\u6027\u4ecd\u7136\u8f83\u9ad8\uff0c\u9700\u8981\u7ee7\u7eed\u590d\u6742\u5316\u5904\u7406\u3002<\/p>\n<p>\u56e0\u4e3aJS\u4e2d\u7684\u5b57\u7b26\u4e32\u652f\u6301\u4ee5\u5341\u516d\u8fdb\u5236\u5f62\u5f0f\u8868\u793a\uff0c\u6240\u4ee5\u53ef\u4ee5\u7528\u5341\u516d\u8fdb\u5236\u5f62\u5f0f\u4ee3\u66ff\u539f\u6709\u7684\u5b57\u7b26\u4e32\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u4ee3\u7801\uff0c\u5b8c\u6210\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u7684\u8f6c\u6362\uff1a<\/p>\n<pre><code class=\"language-javascript\">function hexEnc(code) {\n    for (var hexStr = [], i = 0, s; i &lt; code.length; i++) {\n        s = code.charCodeAt(i).toString(16);\n        hexStr += &quot;\\\\x&quot; + s;\n    }\n    return hexStr\n}<\/code><\/pre>\n<p>\u5728JS\u4e2d\uff0ccharAt\u65b9\u6cd5\u7528\u6765\u53bb\u9664\u5b57\u7b26\u4e32\u4e2d\u5bf9\u5e94\u7d22\u5f15\u7684\u5b57\u7b26\u3002\u800ccharCodeAt\u65b9\u6cd5\u7528\u6765\u53bb\u9664\u5b57\u7b26\u4e32\u4e2d\u5bf9\u5e94\u7d22\u5f15\u7684\u5b57\u7b26\u7684ASCII\u7801\u3002\u7136\u540e\u7528toString(16)\u8f6c\u6362\u621016\u8fdb\u5236\uff0c\u518d\u4e0e\\x\u62fc\u63a5\u3002\u4e3a\u4e86\u65b9\u4fbf\u7406\u89e3\uff0c\u8fd9\u91cc\u53ea\u5904\u7406\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u4ee3\u7801\u8f6c\u6362\u4e3a\uff1a<\/p>\n<pre><code class=\"language-javascript\">Date.prototype.format = function (formatStr) {\n    var str = formatStr;\n    var Week = [&#039;\u65e5&#039;, &#039;\u4e00&#039;, &#039;\u4e8c&#039;, &#039;\u4e09&#039;, &#039;\u56db&#039;, &#039;\u4e94&#039;, &#039;\u516d&#039;];\n    str = str[&#039;replace&#039;](\/yyyy|YYYY\/, this[&#039;getFullYear&#039;]());\n    str = str[&#039;replace&#039;](\/MM\/, (this[&#039;getMonth&#039;]() + 1) &gt; 9 ? (this[&#039;getMonth&#039;]() + 1)[&#039;toString&#039;]() : &#039;0&#039; + (this[&#039;getMonth&#039;]() + 1));\n    str = str[&#039;replace&#039;](\/dd|DD\/, this[&#039;getDate&#039;]() &gt; 9 ? this[&#039;getDate&#039;]()[&#039;toString&#039;]() : &#039;0&#039; + this[&#039;getDate&#039;]());\n    return str\n}\nconsole.log(new window[&#039;Date&#039;]()[&#039;format&#039;](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;));\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<p>\u8fd9\u79cd\u6df7\u6dc6\u65b9\u5f0f\u5f88\u5bb9\u6613\u88ab\u8fd8\u539f\uff0c\u4e0d\u4f1a\u5927\u91cf\u5e94\u7528\uff0c\u53ea\u7528\u5728\u65e0\u6cd5\u52a0\u5bc6\u7684\u5b57\u7b26\u4e32\u4e0a\u3002<\/p>\n<p>\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u7684\u8fd8\u539f\u65b9\u6cd5\u5f88\u7b80\u5355\uff0c\u628a\u5b57\u7b26\u4e32\u653e\u5728\u63a7\u5236\u53f0\u4e2d\u8f93\u51fa\u5373\u53ef\u3002<\/p>\n<h3>3.Unicode\u5b57\u7b26\u4e32<\/h3>\n<p>\u5728JS\u4e2d\uff0c\u5b57\u7b26\u4e32\u9664\u4e86\u53ef\u4ee5\u8868\u793a\u6210\u5341\u516d\u8fdb\u5236\u7684\u5f62\u5f0f\u4ee5\u5916\uff0c\u8fd8\u652f\u6301\u7528Unicode\u5f62\u5f0f\u8868\u793a\u3002<\/p>\n<p>unicode\u8f6c\u6362\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-javascript\">function unicodeEnc(str) {\n    var value = &#039;&#039;;\n    for (var i = 0; i &lt; str.length; i++)\n        value += &quot;\\\\u&quot; + (&quot;0000&quot; + parseInt(str.charCodeAt(i)).toString(16)).substr(-4);\n    return value;\n}<\/code><\/pre>\n<p>\u5904\u7406\u540e\uff1a<\/p>\n<pre><code class=\"language-javascript\">Date.prototype.\\u0066\\u006f\\u0072\\u006d\\u0061\\u0074 = function(formatStr) {\n    var \\u0073\\u0074\\u0072 = \\u0066\\u006f\\u0072\\u006d\\u0061\\u0074\\u0053\\u0074\\u0072;\n    var Week = [&#039;\\u65e5&#039;, &#039;\\u4e00&#039;, &#039;\\u4e8c&#039;, &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, &#039;\\u516d&#039;];\n    str = str[&#039;replace&#039;](\/yyyy|YYYY\/, this[&#039;getFullYear&#039;]());\n    str = str[&#039;replace&#039;](\/MM\/, (this[&#039;getMonth&#039;]() + 1) &gt; 9 ? (this[&#039;getMonth&#039;]() + 1)[&#039;toString&#039;]() : &#039;0&#039; + (this[&#039;getMonth&#039;]() + 1));\n    str = str[&#039;replace&#039;](\/dd|DD\/, this[&#039;getDate&#039;]() &gt; 9 ? this[&#039;getDate&#039;]()[&#039;toString&#039;]() : &#039;0&#039; + this[&#039;getDate&#039;]());\n    return str;\n}\nconsole.log( new \\u0077\\u0069\\u006e\\u0064\\u006f\\u0077[&#039;\\u0044\\u0061\\u0074\\u0065&#039;]()[&#039;format&#039;](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;) );\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<p>\u5728\u5b9e\u9645\u7684JS\u6df7\u6dc6\u5e94\u7528\u4e2d\uff0c\u6807\u8bc6\u7b26\u4e00\u822c\u4e0d\u4f1a\u66ff\u6362\u6210Unicode\u5f62\u5f0f\uff0c\u56e0\u4e3a\u8fd8\u539f\u662f\u5426\u5bb9\u6613\u3002\u901a\u5e38\u7684\u6df7\u6dc6\u65b9\u5f0f\u662f\u66ff\u6362\u6210\u6ca1\u6709\u8bed\u4e49\uff0c\u4f46\u770b\u4e0a\u53bb\u5341\u5206\u76f8\u4f3c\u7684\u540d\u5b57\uff0c\u5982<code>_0x21dd83<\/code>\u3001<code>_0x21dd84<\/code>\u548c<code>_0x21dd85<\/code>,\u6216\u662f\u7531\u5927\u5199\u5b57\u6bcdO\u3001\u5c0f\u5199\u5b57\u6bcdo\u4ee5\u53ca\u6570\u5b570\u7ec4\u6210\u7684\u540d\u5b57\uff0c\u5982<code>Oo00Oo0<\/code>\u3001<code>Oo00O0o<\/code>\u3001<code>oO000Oo<\/code>\uff0c\u6ce8\u610f\uff0c\u6807\u8bc6\u7b26\u4e0d\u5141\u8bb8\u4ee5\u6570\u5b57\u5f00\u5934\u3002\u540e\u9762\u5c06\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528AST\u5b9e\u73b0\u6807\u8bc6\u7b26\u6df7\u6dc6\u3002<\/p>\n<p>\u6700\u540e\uff0c\u4ecb\u7ecdUnicode\u5b57\u7b26\u4e32\u8fd8\u539f\u7684\u65b9\u6cd5\u3002\u4e0e16\u8fdb\u5236\u5b57\u7b26\u4e32\u4e00\u6837\uff0c\u628a\u5b57\u7b26\u4e32\u653e\u5728\u63a7\u5236\u53f0\u4e2d\u8f93\u51fa\u5373\u53ef\u3002<\/p>\n<h3>4.\u5b57\u7b26\u4e32\u7684ASCII\u7801\u6df7\u6dc6<\/h3>\n<p>\u4e3a\u4e86\u5b8c\u6210\u5b57\u7b26\u4e32\u7684ASCII\u7801\u6df7\u6dc6\uff0c\u8fd9\u91cc\u9700\u8981\u4f7f\u7528\u4e24\u4e2a\u51fd\u6570\uff0c\u4e00\u4e2a\u662fString\u5bf9\u8c61\u4e0b\u7684charCodeAt\u65b9\u6cd5\uff0c\u53e6\u4e00\u4e2a\u662fString\u7c7b\u4e0b\u7684fromCharCode\u65b9\u6cd5\u3002\u5148\u4ecb\u7ecd\u8fd9\u4e24\u4e2a\u65b9\u6cd5\u7684\u7528\u6cd5\u3002\u5728\u63a7\u5236\u53f0\u6267\u884c\u4ee5\u4e0b\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-javascript\">console.log(&#039;x&#039;.charCodeAt(0)); \/\/120\n\nconsole.log(&#039;b&#039;.charCodeAt(0));  \/\/98\n\nconsole.log(String.fromCharCode(120, 98));  \/\/&quot;xb&quot;<\/code><\/pre>\n<p>\u8fd9\u4e24\u4e2a\u65b9\u6cd5\u662f\u76f8\u53cd\u7684\u4e24\u4e2a\u8fc7\u7a0b\u3002<\/p>\n<ul>\n<li>\n<p>String.fromCharCode\u63a5\u6536\u7684\u662f\u53ef\u53d8\u957f\u5ea6\u7684\u6570\u503c\u7c7b\u578b\u7684\u53c2\u6570\uff0c<\/p>\n<\/li>\n<li>\n<p>.charCodeAt\u662f\u628a\u5b57\u7b26\u8f6c\u6362\u6210ASCII\u7801<\/p>\n<\/li>\n<\/ul>\n<p><code>console.log(&#039;x&#039;.charCodeAt(0));<\/code> (0)\u6709\u4ec0\u4e48\u542b\u4e49\uff0c\u4e0d\u52a00\u53ef\u4ee5\u5417\uff1f<\/p>\n<p>\u5728JavaScript\u4e2d\uff0c\u5b57\u7b26\u4e32\u7684<code>charCodeAt<\/code>\u65b9\u6cd5\u7528\u4e8e\u83b7\u53d6\u6307\u5b9a\u7d22\u5f15\u4f4d\u7f6e\u5904\u5b57\u7b26\u7684Unicode\u7f16\u7801\u3002<\/p>\n<p>\u5728\u7ed9\u5b9a\u7684\u4ee3\u7801\u4e2d\uff0c<code>.charCodeAt(0)<\/code>\u8868\u793a\u83b7\u53d6\u5b57\u7b26\u4e32\u4e2d\u7d22\u5f15\u4e3a0\u7684\u5b57\u7b26\u7684Unicode\u7f16\u7801\u3002\u7d22\u5f15\u4ece0\u5f00\u59cb\uff0c\u6240\u4ee5<code>0<\/code>\u8868\u793a\u7b2c\u4e00\u4e2a\u5b57\u7b26\u3002<\/p>\n<p>\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u5b57\u7b26\u4e32<code>&#039;x&#039;<\/code>\u53ea\u6709\u4e00\u4e2a\u5b57\u7b26\uff0c\u5b83\u7684\u7d22\u5f15\u4e3a0\u3002\u56e0\u6b64\uff0c<code>.charCodeAt(0)<\/code>\u5c06\u8fd4\u56de\u5b57\u7b26<code>&#039;x&#039;<\/code>\u7684Unicode\u7f16\u7801\u3002<\/p>\n<p>\u5982\u679c\u4e0d\u52a0<code>0<\/code>\uff0c\u5373\u4f7f\u7528<code>.charCodeAt()<\/code>\u800c\u4e0d\u662f<code>.charCodeAt(0)<\/code>\uff0c\u5b83\u5c06\u9ed8\u8ba4\u4f7f\u7528\u7d22\u5f15<code>0<\/code>\uff0c\u56e0\u4e3a\u8fd9\u662f\u8be5\u65b9\u6cd5\u7684\u9ed8\u8ba4\u884c\u4e3a\u3002\u56e0\u6b64\uff0c\u4e24\u8005\u662f\u7b49\u4ef7\u7684<\/p>\n<pre><code class=\"language-javascript\">console.log(&#039;xb&#039;.charCodeAt());  \/\/ 120\nconsole.log(&#039;xb&#039;.charCodeAt(0)); \/\/ 120\nconsole.log(&#039;xb&#039;.charCodeAt(1));  \/\/ 98<\/code><\/pre>\n<p><strong>\u4f7f\u7528\u4ee5\u4e0b\u4ee3\u7801\uff0c\u628a\u4e00\u4e2a\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5b57\u8282\u6570\u7ec4\uff1a<\/strong><\/p>\n<pre><code class=\"language-javascript\">function stringToByte(str) {\n    var byteArr = [];\n    for (var i = 0; i &lt; str.length; i++) {\n        byteArr.push(str.charCodeAt(i));\n    }\n    return byteArr;\n}\nconsole.log(stringToByte(&#039;xiaojianbang&#039;));\n\/\/ [120, 105, 97, 111, 106, 105, 97, 110, 98, 97, 110, 103]<\/code><\/pre>\n<p>\u4f7f\u7528<code>String.fromCharCode<\/code>\u8f6c\u6362\u56de\u53bb\uff1a<\/p>\n<pre><code class=\"language-javascript\">String.fromCharCode(120, 105, 97, 111, 106, 105, 97, 110, 98, 97, 110, 103)  \n\/\/ &#039;xiaojianbang&#039;<\/code><\/pre>\n<p>\u6570\u7ec4\u8f6c\u6362<code>String.fromCharCode.apply<\/code>\uff1a<\/p>\n<p>\u6ce8\u610f\uff1a\u8fd9\u91cc\u7684<code>apply<\/code>\u662f\u51fd\u6570\u672c\u8eab\u7684\u65b9\u6cd5\uff0c\u4ece<code>Function.prototype<\/code>\u7ee7\u627f\u6765\u7684\u3002\u5b83\u5141\u8bb8\u4f60\u5728\u8c03\u7528\u4e00\u4e2a\u51fd\u6570\u65f6\uff0c\u5c06\u4e00\u4e2a\u6570\u7ec4\u6216\u7c7b\u6570\u7ec4\u5bf9\u8c61\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9\u8be5\u51fd\u6570\u3002\u8fd9\u91cc\uff0c<code>.apply(null, [120, 105, 97, 111, 106, 105, 97, 110, 98, 97, 110, 103])<\/code>\u5c06\u6570\u7ec4<code>[120, 105, 97, 111, 106, 105, 97, 110, 98, 97, 110, 103]<\/code>\u4e2d\u7684\u5143\u7d20\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9<code>String.fromCharCode<\/code>\u51fd\u6570\u3002<\/p>\n<pre><code class=\"language-javascript\">String.fromCharCode.apply(null, [120, 105, 97, 111, 106, 105, 97, 110, 98, 97, 110, 103])\n\/\/ &#039;xiaojianbang&#039;<\/code><\/pre>\n<p><strong>ASCII\u7801\u4e0d\u4ec5\u7528\u6765\u505a\u5b57\u7b26\u4e32\u6df7\u6dc6\uff0c\u8fd8\u53ef\u4ee5\u7528\u6765\u505a\u4ee3\u7801\u6df7\u6dc6\u3002<\/strong><\/p>\n<pre><code class=\"language-javascript\">\/\/ str = str[&#039;replace&#039;](\/yyyy|YYYY\/, this[&#039;getFullYear&#039;]());\nstringToByte(&quot;str = str[&#039;replace&#039;](\/yyyy|YYYY\/, this[&#039;getFullYear&#039;]());&quot;)\n\/\/ [115, 116, 114, 32, 61, 32, 115, 116, 114, 91, 39, 114, 101, 112, 108, 97, 99, 101, 39, 93, 40, 47, 121, 121, 121, 121, 124, 89, 89, 89, 89, 47, 44, 32, 116, 104, 105, 115, 91, 39, 103, 101, 116, 70, 117, 108, 108, 89, 101, 97, 114, 39, 93, 40, 41, 41, 59]<\/code><\/pre>\n<p>\u8fd9\u6bb5\u5b57\u8282\u6570\u7ec4\u901a\u8fc7String.fromCharCode\u8f6c\u6362\u6210\u5b57\u7b26\u4e32\uff0c<\/p>\n<p>\u518d\u901a\u8fc7eavl\u6267\u884c\uff0c\u6216Function\u751f\u6210\u4e00\u4e2a\u51fd\u6570<\/p>\n<pre><code class=\"language-javascript\">var str = &quot;str = str[&#039;replace&#039;](\/yyyy|YYYY\/, this[&#039;getFullYear&#039;]());&quot;;\nvar func = new Function(str);\n\nfunc();<\/code><\/pre>\n<p>\u793a\u4f8b\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-javascript\">Date.prototype.\\u0066\\u006f\\u0072\\u006d\\u0061\\u0074 = function(formatStr) {\n    var \\u0073\\u0074\\u0072 = \\u0066\\u006f\\u0072\\u006d\\u0061\\u0074\\u0053\\u0074\\u0072;\n    var Week = [&#039;\\u65e5&#039;, &#039;\\u4e00&#039;, &#039;\\u4e8c&#039;, &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, &#039;\\u516d&#039;];\n    eval(String.fromCharCode(115, 116, 114, 32, 61, 32, 115, 116, 114, 91, 39, 114, 101, 112, 108, 97, 99, 101, 39, 93, 40, 47, 121, 121, 121, 121, 124, 89, 89, 89, 89, 47, 44, 32, 116, 104, 105, 115, 91, 39, 103, 101, 116, 70, 117, 108, 108, 89, 101, 97, 114, 39, 93, 40, 41, 41, 59));\n    str = str[&#039;replace&#039;](\/MM\/, (this[&#039;getMonth&#039;]() + 1) &gt; 9 ? (this[&#039;getMonth&#039;]() + 1)[&#039;toString&#039;]() : &#039;0&#039; + (this[&#039;getMonth&#039;]() + 1));\n    str = str[&#039;replace&#039;](\/dd|DD\/, this[&#039;getDate&#039;]() &gt; 9 ? this[&#039;getDate&#039;]()[&#039;toString&#039;]() : &#039;0&#039; + this[&#039;getDate&#039;]());\n    return str;\n}\nconsole.log( new \\u0077\\u0069\\u006e\\u0064\\u006f\\u0077[&#039;\\u0044\\u0061\\u0074\\u0065&#039;]()[String.fromCharCode(102, 111, 114, 109, 97, 116)](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;) );\n\/\/\u8f93\u51fa\u7ed3\u679c 2023-08-29<\/code><\/pre>\n<h3>5.\u5b57\u7b26\u4e32\u5e38\u91cf\u52a0\u5bc6<\/h3>\n<p>\u5b57\u7b26\u4e32\u5e38\u91cf\u52a0\u5bc6\u7684\u6838\u5fc3\u601d\u60f3\u662f\uff0c\u5148\u628a\u5b57\u7b26\u4e32\u52a0\u5bc6\u5f97\u5230\u5bc6\u6587\uff0c\u7136\u540e\u518d\u4f7f\u7528\u524d\uff0c\u8c03\u7528\u5bf9\u5e94\u7684\u89e3\u5bc6\u51fd\u6570\u53bb\u4e45\u89e3\u5bc6\uff0c\u5f97\u5230\u660e\u6587\u3002\u4ee3\u7801\u4e2d\u4ec5\u51fa\u73b0\u89e3\u5bc6\u51fd\u6570\u548c\u5bc6\u6587\u3002\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u4e0d\u540c\u7684\u52a0\u5bc6\u65b9\u6cd5\u53bb\u52a0\u5bc6\u5b57\u7b26\u4e32\uff0c\u518d\u8c03\u7528\u4e0d\u540c\u7684\u89e3\u5bc6\u51fd\u6570\u53bb\u89e3\u5bc6\u3002\u672c\u8282\u5c06\u4ee3\u7801\u4e2d\u5269\u4e0b\u7684\u5b57\u7b26\u90fd\u5904\u7406\u5b8c\uff0c\u5b57\u7b26\u4e32\u52a0\u5bc6\u65b9\u5f0f\u91c7\u7528\u6700\u7b80\u5355\u7684Base64\u7f16\u7801\u3002<\/p>\n<pre><code class=\"language-javascript\">btoa(&quot;replace&quot;)\n&#039;cmVwbGFjZQ==&#039;\nbtoa(&quot;getMonth&quot;)\n&#039;Z2V0TW9udGg=&#039;\nbtoa(&quot;getDate&quot;)\n&#039;Z2V0RGF0ZQ==&#039;\nbtoa(&quot;0&quot;)\n&#039;MA==&#039;\nbtoa(&quot;toString&quot;)\n&#039;dG9TdHJpbmc=&#039;<\/code><\/pre>\n<p>\u6d4f\u89c8\u5668\u81ea\u5e26\u7684Base64\u7f16\u7801\u548c\u63a5\u7801\u7684\u51fd\u6570\uff0c\u5176\u4e2dbtoa\u7528\u6765\u7f16\u7801\uff0catob\u7528\u6765\u89e3\u5bc6\u3002\u5b9e\u9645\u7684\u6df7\u6dc6\u4e2d\uff0c\u7f16\u7801\u89e3\u7801\u65b9\u5f0f\u591a\u4e3a\u81ea\u5b9a\u4e49\uff0c\u5b57\u7b26\u4e32\u52a0\u5bc6\u540e\uff0c\u9700\u8981\u628a\u5bf9\u5e94\u7684\u89e3\u5bc6\u51fd\u6570\u4e5f\u653e\u5165\u4ee3\u7801\u4e2d\uff0c\u624d\u80fd\u6b63\u5e38\u8fd0\u884c\u3002<\/p>\n<p>\u5904\u7406\u540e\u7684\u4ee3\u7801\u4e3a\uff1a<\/p>\n<pre><code class=\"language-javascript\">Date.prototype.\\u0066\\u006f\\u0072\\u006d\\u0061\\u0074 = function(formatStr) {\n    var \\u0073\\u0074\\u0072 = \\u0066\\u006f\\u0072\\u006d\\u0061\\u0074\\u0053\\u0074\\u0072;\n    var Week = [&#039;\\u65e5&#039;, &#039;\\u4e00&#039;, &#039;\\u4e8c&#039;, &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, &#039;\\u516d&#039;];\n    eval(String.fromCharCode(115, 116, 114, 32, 61, 32, 115, 116, 114, 91, 39, 114, 101, 112, 108, 97, 99, 101, 39, 93, 40, 47, 121, 121, 121, 121, 124, 89, 89, 89, 89, 47, 44, 32, 116, 104, 105, 115, 91, 39, 103, 101, 116, 70, 117, 108, 108, 89, 101, 97, 114, 39, 93, 40, 41, 41, 59));\n    str = str[atob(&#039;cmVwbGFjZQ==&#039;)](\/MM\/, (this[atob(&#039;Z2V0TW9udGg=&#039;)]() + 1) &gt; 9 ? (this[atob(&#039;Z2V0TW9udGg=&#039;)]() + 1)[atob(&#039;dG9TdHJpbmc=&#039;)]() : atob(&#039;MA==&#039;) + (this[atob(&#039;Z2V0TW9udGg=&#039;)]() + 1));\n    str = str[atob(&#039;cmVwbGFjZQ==&#039;)](\/dd|DD\/, this[atob(&#039;Z2V0RGF0ZQ==&#039;)]() &gt; 9 ? this[atob(&#039;Z2V0RGF0ZQ==&#039;)]()[atob(&#039;dG9TdHJpbmc=&#039;)]() : atob(&#039;MA==&#039;) + this[atob(&#039;Z2V0RGF0ZQ==&#039;)]());\n    return str;\n}\nconsole.log( new \\u0077\\u0069\\u006e\\u0064\\u006f\\u0077[&#039;\\u0044\\u0061\\u0074\\u0065&#039;]()[String.fromCharCode(102, 111, 114, 109, 97, 116)](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;) );\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<p>\u5728\u5b9e\u9645\u6df7\u6dc6\u5e94\u7528\u4e2d\uff0c\u6807\u8bc6\u7b26\u5fc5\u987b\u5904\u7406\u6210\u6ca1\u6709\u8bed\u4e49\u7684\uff0c\u4e0d\u7136\u5f88\u5bb9\u6613\u5c31\u5b9a\u4f4d\u5230\u5173\u952e\u4ee3\u7801\u3002\u6b64\u5916\uff0c\u5efa\u8bae\u51cf\u5c11\u4f7f\u7528\u7cfb\u7edf\u81ea\u5e26\u7684\u51fd\u6570\uff0c\u81ea\u5df1\u53bb\u5b9e\u73b0\u76f8\u5e94\u7684\u51fd\u6570\u3002\u56e0\u4e3a\u4e0d\u7ba1\u5982\u4f55\u6df7\u6dc6\uff0c\u6700\u7ec8\u6267\u884c\u8fc7\u7a0b\u4e2d\uff0c\u7cfb\u7edf\u51fd\u6570\u7684\u540d\u5b57\u662f\u56fa\u5b9a\u7684\uff0c\u901a\u8fc7hook\u6781\u6613\u5b9a\u4f4d\u5230\u5173\u952e\u4ee3\u7801\u3002<\/p>\n<h3>6.\u6570\u503c\u5e38\u91cf\u52a0\u5bc6<\/h3>\n<p>\u7b97\u6cd5\u52a0\u5bc6\u8fc7\u7a0b\u4e2d\uff0c\u4f1a\u4f7f\u7528\u5230\u4e00\u4e9b\u56fa\u5b9a\u7684\u6570\u503c\u5e38\u91cf\u3002\u6bd4\u5982\uff0cMD5 \u4e2d\u7684\u5e38\u91cf 0x67452301\uff0c0xefcdab89,0x98badcfe,0x10325476,SHA1 \u4e2d\u7684\u5e38\u91cf 0x67452301,0xefcdab89,0x98badcfe\uff0c0x10325476\uff0c0xc3d2elf0\u3002\u56e0\u6b64\uff0c\u5728\u6807\u51c6\u7b97\u6cd5\u9006\u5411\u4e2d\uff0c\u7ecf\u5e38\u4f1a\u901a\u8fc7\u641c\u7d22\u8fd9\u4e9b\u6570\u503c\u5e38\u91cf\uff0c\u6765\u5b9a\u4f4d\u4ee3\u7801\u5173\u952e\u4f4d\u7f6e\uff0c\u6216\u8005\u786e\u5b9a\u4f7f\u7528\u7684\u662f\u54ea\u4e2a\u7b97\u6cd5\u3002\u5f53\u7136\uff0c\u5728\u4ee3\u7801\u4e2d\u4e0d\u4e00\u5b9a\u4f1a\u5199\u5341\u516d\u8fdb\u5236\u5f62\u5f0f\u6bd4\u5982\uff0c0x67452301\uff0c\u5728\u4ee3\u7801\u6210\u53ef\u80fd\u4f1a\u5199\u6210\u5341\u8fdb\u5236\u7684 1732584193\u3002\u5b89\u5168\u8d77\u89c1\uff0c\u53ef\u4ee5\u628a\u8fd9\u4e9b\u6570\u503c\u5e38\u91cf\u4e5f\u7b80\u5355\u52a0\u5bc6\u4e0b\u3002<br \/>\n\u53ef\u4ee5\u4f7f\u7528\u4f4d\u5f02\u6216\u7684\u7279\u6027\u6765\u52a0\u5bc6\u3002\u6bd4\u5982\uff0ca^b = c\uff0c\u90a3\u4e48c^b = a\u3002\u4ee5 SHA1 \u7b97\u6cd5\u4e2d\u76840xc3d2elf0\u5e38\u91cf\u4e3a\u4f8b\uff0c0xc3d2e1f0^0x12345678 = 0xdle6b788 \uff0c \u90a3\u4e48\u5728\u4ee3\u7801\u4e2d\u53ef\u4ee5\u75280xdle6b788^0x12345678 \u6765\u4ee3\u66ff 0xc3d2elf0\uff0c\u5176\u4e2d0x12345678 \u53ef\u4ee5\u7406\u89e3\u6210\u5bc6\u94a5\uff0c\u53ef\u4ee5\u968f\u673a\u751f\u6210\u3002<br \/>\n\u6df7\u6dc6\u65b9\u6848\u5e76\u4e0d\u4e00\u5b9a\u662f\u5355\u4e00\u4f7f\u7528\uff0c\u5404\u79cd\u65b9\u6848\u4e4b\u95f4\u4e5f\u53ef\u4ee5\u7ed3\u5408\u4f7f\u7528\u3002\u6bd4\u5982\uff0c\u4e0a\u8ff0\u65b9\u6cd5\u4e2d\u4e24\u6570\u8fdb\u884c\u4f4d\u5f02\u6216\uff0c\u5b9e\u9645\u4e0a\u5c31\u662f\u4e00\u4e2a\u4e8c\u9879\u5f0f\u3002\u90a3\u4e48\uff0c\u5c31\u53ef\u4ee5\u7ed3\u5408 6.2.3 \u5c0f\u8282\u4e2d\u4ecb\u7ecd\u7684\uff0c\u628a\u4e8c\u9879\u5f0f\u53d8\u4e3a\u51fd\u6570\u591a\u7ea7\u5d4c\u5957\u7684\u82b1\u6307\u4ee4\u3002<\/p>\n<h2>\u4e8c\u3001\u589e\u52a0JS\u9006\u5411\u8005\u7684\u5de5\u4f5c\u91cf<\/h2>\n<h3>1.\u6570\u7ec4\u6df7\u6dc6<\/h3>\n<p>\u5c06\u6240\u6709\u7684\u5b57\u7b26\u4e32\u90fd\u63d0\u53d6\u5230\u4e00\u4e2a\u6570\u7ec4\u4e2d\uff0c\u7136\u540e\u518d\u9700\u8981\u5f15\u7528\u5b57\u7b26\u4e32\u7684\u5730\u65b9\uff0c\u5168\u90e8\u4ee5\u6570\u7ec4\u4e0b\u6807\u7684\u65b9\u5f0f\u8bbf\u95ee\u6570\u7ec4\u6210\u5458\uff1a<\/p>\n<pre><code class=\"language-javascript\">var bigArr = [&#039;Date&#039;, &#039;getTime&#039;, &#039;log&#039;];\nconsole[bigArr[2]](new window[bigArr[0]]()[bigArr[1]]());\n\/\/console.log( new window.Date().getTime() )<\/code><\/pre>\n<p>JS\u8bed\u6cd5\u7075\u6d3b\uff0c\u540c\u4e00\u4e2a\u6570\u7ec4\u4e2d\uff0c\u53ef\u4ee5\u540c\u65f6\u5b58\u653e\u5404\u79cd\u7c7b\u578b\uff0c\u4f8b\u5982\uff1a<\/p>\n<pre><code class=\"language-javascript\">var bigArr = [\n    true,\n    &#039;xiaojianbang&#039;,\n    1000,\n    [100, 200, 300], {\n        name: &#039;xiaojianbang&#039;,\n        money: 0\n    },\n    function () {\n        console.log(&#039;Hello&#039;)\n    }\n];\nconsole.log(bigArr[0]);         \/\/true\nconsole.log(bigArr[1]);         \/\/xiaojianbang\nconsole.log(bigArr[2]);         \/\/1000\nconsole.log(bigArr[3][0]);      \/\/100\nconsole.log(bigArr[4].money);   \/\/0\nconsole.log(bigArr[5]());       \/\/Hello<\/code><\/pre>\n<p>\u56e0\u6b64\uff0c\u53ef\u4ee5\u628a\u4ee3\u7801\u4e2d\u7684\u4e00\u90e8\u5206\u51fd\u6570\u63d0\u53d6\u5230\u5927\u6570\u7ec4\u4e2d\u3002\u5982String.fromCharCode\u5c31\u53ef\u4ee5\u63d0\u53d6\u5230\u5927\u6570\u7ec4\u4e2d\u3002\u4e3a\u4e86\u5b89\u5168\uff0c\u901a\u5e38\u4f1a\u5bf9\u63d0\u53d6\u5230\u6570\u7ec4\u4e2d\u7684\u5b57\u7b26\u4e32\u8fdb\u884c\u52a0\u5bc6\u5904\u7406\uff0c\u628a\u4ee3\u7801\u5904\u7406\u6210\u5b57\u7b26\u4e32\u5c31\u53ef\u4ee5\u8fdb\u884c\u52a0\u5bc6\u4e86\u3002\u5bf9\u4e8e\u8fd9\u4e2a\u51fd\u6570\uff0c\u6539\u5199\u4e3a\u4e00\u4e0b\u5f62\u5f0f\uff1a<\/p>\n<pre><code class=\"language-javascript\">console.log(&quot;&quot;[&#039;constructor&#039;][&#039;fromCharCode&#039;](120)) \/\/ \u8f93\u51fax\n\/\/ \u7b49\u540c\u4e8e String.fromCharCode(120)\n\/\/ &quot;&quot;\u7a7a\u5b57\u7b26\u4e32\u7684[&#039;constructor&#039;]\uff0c\u539f\u578b\u5bf9\u8c61\uff0c\u5373String<\/code><\/pre>\n<p>\u5904\u7406\u540e\u7684\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-javascript\">var bigArr = [\n    &#039;\\u65e5&#039;, &#039;\\u4e00&#039;, &#039;\\u4e8c&#039;, &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, \n    &#039;\\u516d&#039;, &#039;cmVwbGFjZQ==&#039;, &#039;Z2V0TW9udGg=&#039;, &#039;dG9TdHJpbmc=&#039;, \n    &#039;Z2V0RGF0ZQ==&#039;, &#039;MA==&#039;, &quot;&quot;[&#039;constructor&#039;][&#039;fromCharCode&#039;]\n];\nDate.prototype.\\u0066\\u006f\\u0072\\u006d\\u0061\\u0074 = function(formatStr) {\n    var \\u0073\\u0074\\u0072 = \\u0066\\u006f\\u0072\\u006d\\u0061\\u0074\\u0053\\u0074\\u0072;\n    var Week = [bigArr[0], bigArr[1], bigArr[2], bigArr[3], bigArr[4], bigArr[5], bigArr[6]];\n    eval(String.fromCharCode(115, 116, 114, 32, 61, 32, 115, 116, 114, 91, 39, 114, 101, 112, 108, 97, 99, 101, 39, 93, 40, 47, 121, 121, 121, 121, 124, 89, 89, 89, 89, 47, 44, 32, 116, 104, 105, 115, 91, 39, 103, 101, 116, 70, 117, 108, 108, 89, 101, 97, 114, 39, 93, 40, 41, 41, 59));\n    str = str[atob(bigArr[7])](\/MM\/, (this[atob(bigArr[8])]() + 1) &gt; 9 ? (this[atob(bigArr[8])]() + 1)[atob(bigArr[9])]() : atob(bigArr[11]) + (this[atob(bigArr[8])]() + 1));\n    str = str[atob(bigArr[7])](\/dd|DD\/, this[atob(bigArr[10])]() &gt; 9 ? this[atob(bigArr[10])]()[atob(bigArr[9])]() : atob(bigArr[11]) + this[atob(bigArr[10])]());\n    return str;\n}\nconsole.log( new \\u0077\\u0069\\u006e\\u0064\\u006f\\u0077[&#039;\\u0044\\u0061\\u0074\\u0065&#039;]()[bigArr[12](102, 111, 114, 109, 97, 116)](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;) );\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<h3>2.\u6570\u7ec4\u4e71\u5e8f<\/h3>\n<p>\u5728\u6570\u7ec4\u6df7\u6dc6\u7684\u57fa\u7840\u4e0a\uff0c\u628a\u5927\u6570\u7ec4\u7684\u987a\u5e8f\u6253\u4e71\uff0c\u8fd9\u6837\u4e0b\u6807\u5c31\u4e0d\u80fd\u4e00\u4e00\u4e0e\u6570\u7ec4\u5bf9\u5e94\uff1b\u4ee3\u7801\u8fd0\u884c\u524d\uff0c\u518d\u6267\u884c\u6062\u590d\u987a\u5e8f\u7684\u51fd\u6570\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u4ee3\u7801\u6253\u4e71\u6570\u7ec4\u987a\u5e8f\uff1a<\/p>\n<pre><code class=\"language-javascript\">var bigArr = [\n    &#039;\\u65e5&#039;, &#039;\\u4e00&#039;, &#039;\\u4e8c&#039;, &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, \n    &#039;\\u516d&#039;, &#039;cmVwbGFjZQ==&#039;, &#039;Z2V0TW9udGg=&#039;, &#039;dG9TdHJpbmc=&#039;, \n    &#039;Z2V0RGF0ZQ==&#039;, &#039;MA==&#039;, &quot;&quot;[&#039;constructor&#039;][&#039;fromCharCode&#039;]\n];\n(function(arr, num){\n    var shuffer = function(nums){\n        while(--nums){\n            arr.unshift(arr.pop());\n        }\n    };\n    shuffer(++num);\n}(bigArr, 0x20));\nconsole.log( bigArr );\n\/\/[&quot;cmVwbGFjZQ==&quot;, &quot;Z2V0TW9udGg=&quot;, &quot;dG9TdHJpbmc=&quot;, &quot;Z2V0RGF0ZQ==&quot;, &quot;MA==&quot;, f, &quot;\u65e5&quot;, &quot;\u4e00&quot;, &quot;\u4e8c&quot;, &quot;\u4e09&quot;, &quot;\u56db&quot;, &quot;\u4e94&quot;, &quot;\u516d&quot;]\n\/\/console.log( bigArr[5](120) );     \/\/\u8f93\u51fa x<\/code><\/pre>\n<p>\u5728\u8fd9\u6bb5\u4ee3\u7801\u4e2d\uff0c\u6709\u4e00\u4e2a\u81ea\u6267\u884c\u7684\u533f\u540d\u51fd\u6570\u3002\u5b9e\u53c2\u90e8\u5206\u4f20\u5165\u7684\u662f\u6570\u7ec4\u548c\u4e00\u4e2a\u4efb\u610f\u6570\u503c\u3002\u5728\u8fd9\u4e2a\u51fd\u6570\u5185\u90e8\uff0c\u901a\u8fc7\u5bf9\u6570\u7ec4\u8fdb\u884c\u5f39\u51fa\u548c\u538b\u5165\u64cd\u4f5c\u6765\u6253\u4e71\u987a\u5e8f\u3002\u9664\u6b64\u4e4b\u5916\uff0c\u53ea\u8981\u63a7\u5236\u53f0\u8f93\u51fa\uff0cUnicode\u5904\u7406\u540e\u7684\u5b57\u7b26\u4e32\u5c31\u53d8\u6210\u539f\u6765\u7684\u4e2d\u6587\u3002\u8fd9\u5c31\u662f\u4e4b\u524d\u8bf4\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u548cUnicode\u90fd\u5f88\u5bb9\u6613\u8fd8\u539f\u3002<\/p>\n<p>\u8fd8\u539f\u6570\u7ec4\u987a\u5e8f\u7684\u65b9\u6cd5:<\/p>\n<pre><code class=\"language-javascript\">var bigArr = [\n    &#039;cmVwbGFjZQ==&#039;, &#039;Z2V0TW9udGg=&#039;, &#039;dG9TdHJpbmc=&#039;, &#039;Z2V0RGF0ZQ==&#039;, \n    &#039;MA==&#039;, &quot;&quot;[&#039;constructor&#039;][&#039;fromCharCode&#039;], &#039;\\u65e5&#039;, &#039;\\u4e00&#039;, \n    &#039;\\u4e8c&#039;, &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, &#039;\\u516d&#039;\n];\n(function(arr, num){\n    var shuffer = function(nums){\n        while(--nums){\n            arr[&#039;push&#039;](arr[&#039;shift&#039;]());\n        }\n    };\n    shuffer(++num);\n}(bigArr, 0x20)); \nDate.prototype.\\u0066\\u006f\\u0072\\u006d\\u0061\\u0074 = function(formatStr) {\n    var \\u0073\\u0074\\u0072 = \\u0066\\u006f\\u0072\\u006d\\u0061\\u0074\\u0053\\u0074\\u0072;\n    var Week = [bigArr[0], bigArr[1], bigArr[2], bigArr[3], bigArr[4], bigArr[5], bigArr[6]];\n    eval(String.fromCharCode(115, 116, 114, 32, 61, 32, 115, 116, 114, 91, 39, 114, 101, 112, 108, 97, 99, 101, 39, 93, 40, 47, 121, 121, 121, 121, 124, 89, 89, 89, 89, 47, 44, 32, 116, 104, 105, 115, 91, 39, 103, 101, 116, 70, 117, 108, 108, 89, 101, 97, 114, 39, 93, 40, 41, 41, 59));\n    str = str[atob(bigArr[7])](\/MM\/, (this[atob(bigArr[8])]() + 1) &gt; 9 ? (this[atob(bigArr[8])]() + 1)[atob(bigArr[9])]() : atob(bigArr[11]) + (this[atob(bigArr[8])]() + 1));\n    str = str[atob(bigArr[7])](\/dd|DD\/, this[atob(bigArr[10])]() &gt; 9 ? this[atob(bigArr[10])]()[atob(bigArr[9])]() : atob(bigArr[11]) + this[atob(bigArr[10])]());\n    return str;\n}\nconsole.log( new \\u0077\\u0069\\u006e\\u0064\\u006f\\u0077[&#039;\\u0044\\u0061\\u0074\\u0065&#039;]()[bigArr[12](102, 111, 114, 109, 97, 116)](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;) );\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<h3>3.\u82b1\u6307\u4ee4<\/h3>\n<p>\u628a<code>this.getMonth()+1<\/code>\u8fd9\u4e2a\u4e8c\u9879\u5f0f\u6539\u4e3a\u5982\u4e0b\u5f62\u5f0f\uff1a<\/p>\n<pre><code class=\"language-javascript\">function _0x20ab1fxe1(a, b){\n    return a + b;\n}\n\/\/_0x20ab1fxe1(this.getMonth(), 1);\n_0x20ab1fxe1(new Date().getMonth(), 1); \/\/\u8f93\u51fa7\n\/\/\u4e3a\u4e86\u80fd\u591f\u5728\u63a7\u5236\u53f0\u6b63\u5e38\u8fd0\u884c\uff0c\u628athis\u6539\u6210new Date()<\/code><\/pre>\n<p>\u672c\u8d28\u662f\u628a\u4e8c\u9879\u5f0f\u62c6\u5f00\u6210\u4e09\u90e8\u5206\uff1a\u4e8c\u9879\u5f0f\u7684\u5de6\u8fb9\u3001\u4e8c\u9879\u5f0f\u7684\u53f3\u8fb9\u548c\u8fd0\u7b97\u7b26\u3002\u4e8c\u9879\u5f0f\u7684\u5de6\u8fb9\u548c\u53f3\u8fb9\u4f5c\u4e3a\u53e6\u4e00\u4e2a\u51fd\u6570\u7684\u4e24\u4e2a\u53c2\u6570\uff0c\u4e8c\u9879\u5f0f\u7684\u8fd0\u7b97\u7b26\u4f5c\u4e3a\u8be5\u51fd\u6570\u7684\u8fd0\u884c\u903b\u8f91\u3002\u8fd9\u4e2a\u51fd\u6570\u672c\u8eab\u662f\u6ca1\u6709\u610f\u4e49\u7684\uff0c\u4f46\u5b83\u80fd\u77ac\u95f4\u589e\u52a0\u4ee3\u7801\u91cf\uff0c\u4ece\u800c\u589e\u52a0JS\u9006\u5411\u8005\u7684\u5de5\u4f5c\u91cf\u3002<\/p>\n<p>\u4e8c\u9879\u5f0f\u8f6c\u53d8\u4e3a\u51fd\u6570\u5f0f\uff0c\u8fdb\u884c\u591a\u7ea7\u5d4c\u5957\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-javascript\">function _0x20ab1fxe2(a, b){\n    return a + b;\n}\nfunction _0x20ab1fxe1(a, b){\n    return _0x20ab1fxe2(a, b);\n}\n_0x20ab1fxe1(new Date().getMonth(), 1);     \/\/\u8f93\u51fa7<\/code><\/pre>\n<p>\u5982\u628a<code>&#039;0&#039;+(this.getMonth()+1)<\/code>\u8fd9\u4e2a\u4e8c\u9879\u5f0f\u6539\u4e3a\u5982\u4e0b\u6240\u793a\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-javascript\">function _0x20ab1fxe2(a, b){\n    return a + b;\n}\nfunction _0x20ab1fxe1(a, b){\n    return _0x20ab1fxe2(a, b);\n}\nfunction _0x20ab1fxe3(a, b){\n    return a + b;\n}\nfunction _0x20ab1fxe4(a, b){\n    return _0x20ab1fxe3(a, b);\n}\n_0x20ab1fxe4(&#039;0&#039;, _0x20ab1fxe1(new Date().getMonth(), 1));\n\/\/\u8f93\u51fa &quot;07&quot;<\/code><\/pre>\n<h3>4.jsfuck<\/h3>\n<p>jsfuck\u4e5f\u53ef\u4ee5\u7b97\u662f\u4e00\u79cd\u7f16\u7801\u3002\u5b83\u80fd\u628ajs\u4ee3\u7801\u8f6c\u5316\u6210\u53ea\u75286\u4e2a\u5b57\u7b26\u5c31\u53ef\u4ee5\u8868\u793a\u7684\u4ee3\u7801\u3002\u5e76\u53ef\u4ee5\u6b63\u5e38\u6267\u884c\u3002\u8fd9\u516d\u4e2a\u5b57\u7b26\u5206\u522b\u662f\uff1a<code>(<\/code>\u3001<code>+<\/code>\u3001<code>!<\/code>\u3001<code>[<\/code>\u3001<code>]<\/code>\u3001<code>)<\/code><\/p>\n<p>\u8f6c\u6362\u540e\u7684JS\u4ee3\u7801\u96be\u4ee5\u6708\u5ea6\uff0c\u53ef\u4f5c\u4e3a\u7b80\u5355\u7684\u4fdd\u5bc6\u63aa\u65bd\uff0c\u5982\u6570\u503c\u5e38\u91cf8\u8f6c\u6210jsfuck\u540e\u4e3a\uff1a<\/p>\n<p><code>[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[]<\/code><\/p>\n<p><strong>\u5b83\u4f7f\u75286\u4e2a\u7279\u5b9a\u5b57\u7b26\u53d6\u5230\u4e86js\u4e2d\u7684undefined\u3001true\u3001false\u3001NaN\u7b49\u5173\u952e\u5b57\u7684\u5b57\u7b26\uff0c\u5e76\u5c06\u4ed6\u4eec\u7ec4\u88c5\u6210\u4e86\u8fd9\u4e2a\u533f\u540d\u51fd\u6570<\/strong>\u3002<\/p>\n<p>\u8fd9\u51e0\u4e2a\u5b57\u7b26\u5982\u679c\u4f60\u8d34\u5230\u63a7\u5236\u53f0\uff0c\u4f1a\u8f93\u51fa\u201cfalse\u201d\u5b57\u7b26\u4e32\uff0c\u5176\u5b9e\u6709\u7528\u7684\u662f\u524d\u9762\u7684 <code>![]<\/code>\uff0c\u540e\u9762\u7684<code>+[]<\/code>\u53ea\u662f\u5c06false\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u3002<\/p>\n<p>\u90a3\u4e48\u8fd9\u4e2a\u65f6\u5019\uff0c\u5982\u679c\u6211\u4eec\u518d\u80fd\u591f\u4f7f\u7528jsfuck\u76846\u4e2a\u7279\u5b9a\u5b57\u7b26\u53d6\u5230\u5b57\u7b26\u4e32\u201cfalse\u201d\u7684\u4e0b\u6807\uff0c\u90a3\u4e48\u6211\u4eec\u5c31\u53d6\u5230\u5bf9\u5e94\u7684\u7279\u5b9a\u5b57\u7b26\u4e86\u3002<\/p>\n<p>\u81f3\u4e8e\u4e3a\u4ec0\u4e48\u7b49\u4e8e\u4ed6\u4eec\u4f1a\u7b49\u4e8e0\u548c1\uff0c\u8fd9\u91cc\u63d0\u793a\u4e00\u4e0b\u5927\u5bb6\uff0c<strong>\u8bf7\u628a\u7b2c\u4e00\u4e2a+\u770b\u505a\u6b63\u6570\u7684\u7b26\u53f7\uff0c\u7136\u540e\u5c31\u4f1a\u6267\u884cJs\u7684\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362<\/strong>\u3002<\/p>\n<p>\u5230\u8fd9\u4e2a\u65f6\u5019\uff0c\u6211\u4eec\u65e2\u6709\u5b57\u7b26\u4e32\uff0c\u53c8\u6709\u4e86\u4e0b\u6807\uff0c\u53d6\u5bf9\u5e94\u7684\u5b57\u7b26\u5c31\u65b9\u4fbf\u4e86\u3002<\/p>\n<p>\u6240\u4ee5\u4e0a\u9762\u90a3\u4e2ajsfuck\u8868\u8fbe\u5f0f\uff0c\u6700\u7ec8\u53ea\u662f\u4e00\u4e2a\u6839\u636e\u4e0b\u6807\u53d6\u5b57\u7b26\u4e32\u7279\u5b9a\u5b57\u7b26\u800c\u5df2\u3002<\/p>\n<p>\u800c\u6211\u4eec\u6700\u5f00\u59cb\u7684jsfuck\u793a\u4f8b\uff0c\u6b63\u662f<strong>\u7531\u8fd9\u4e00\u4e2a\u4e2a\u7684\u5b57\u7b26\uff0c\u4e00\u4e2a\u4e2a\u7684\u4e0b\u6807\u62fc\u88c5\u800c\u6210\u7684<\/strong>\u3002<strong>26\u4e2a\u82f1\u6587\u5b57\u6bcd\u90fd\u53ef\u4ee5\u4f7f\u7528js\u7684\u5173\u952e\u5b57\u53d6\u5230\u3002<\/strong><\/p>\n<p>JsFuck\u89e3\u5bc6\u7f51\u7ad9\uff1a<a href=\"http:\/\/codertab.com\/JsUnFuck\">CoderTab - JSUnFuck - Decode JSFuck Here<\/a><\/p>\n<p>JsFuck\u52a0\u5bc6\u7f51\u7ad9\uff1a<a href=\"https:\/\/jsfuck.com\/\">JSFuck - Write any JavaScript with 6 Characters: []()!+<\/a><\/p>\n<h2>\u4e09\u3001\u4ee3\u7801\u6267\u884c\u6d41\u7a0b\u7684\u9632\u62a4\u539f\u7406<\/h2>\n<p>\u524d\u9762\u7684\u6df7\u6dc6\u8fc7\u7a0b\u5e76\u6ca1\u6709\u6539\u53d8\u6267\u884c\u6d41\u7a0b<\/p>\n<h3>1.\u6d41\u7a0b\u5e73\u5766\u5316<\/h3>\n<p>\u5728\u6d41\u7a0b\u5e73\u5766\u5316\u6df7\u6dc6\u4e2d\uff0c\u4f1a\u7528\u5230switch\u8bed\u53e5\uff0c\u56e0\u4e3aswitch\u8bed\u53e5\u4e2d\u7684case\u5757\u662f\u8bc4\u7ea7\u7684\uff0c\u800c\u4e14\u8c03\u6362case\u5757\u7684\u524d\u540e\u987a\u5e8f\u5e76\u4e0d\u5f71\u54cd\u4ee3\u7801\u539f\u5148\u7684\u6267\u884c\u903b\u8f91\u3002<\/p>\n<p>\u4e3a\u4e86\u65b9\u4fbf\u7406\u89e3\uff0c\u8fd9\u91cc\u4e3e\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-javascript\">function test1(){\n    var a = 1000;\n    var b = a + 2000;\n    var c = b + 3000;\n    var d = c + 4000;\n    var e = d + 5000;\n    var f = e + 6000;\n    return f;\n}\nconsole.log( test1() );\n\/\/\u8f93\u51fa 21000<\/code><\/pre>\n<p>\u6df7\u6dc6test1\u51fd\u6570\u4e2d\u7684\u4ee3\u7801\u6267\u884c\u6d41\u7a0b\u4e3a\uff1a\u9996\u5148\u628a\u4ee3\u7801\u5206\u5757\uff0c\u4e14\u6253\u4e71\u4ee3\u7801\u5757\u7684\u987a\u5e8f\uff0c\u5206\u522b\u6dfb\u52a0\u5230\u4e0d\u540c\u7684case\u5757\u4e2d\u3002\u65b9\u4fbf\u8d77\u89c1\uff0c\u5c31\u5904\u7406\u6210\u4e00\u884c\u4ee3\u7801\u5bf9\u5e94\u4e00\u4e2acase\u5757\u7684\u5f62\u5f0f\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-javascript\">function test1(){\n    case &#039;1&#039;:\n        var c = b + 3000;\n    case &#039;2&#039;:\n        var e = d + 5000;\n    case &#039;3&#039;:\n        var d = c + 4000;\n    case &#039;4&#039;:\n        var f = e + 6000;   \n    case &#039;5&#039;:\n        var b = a + 2000;\n    case &#039;6&#039;:\n        return f;\n    case &#039;7&#039;:\n        var a = 1000;\n}<\/code><\/pre>\n<p>\u5f53\u4ee3\u7801\u5757\u6253\u4e71\u987a\u5e8f\u540e\uff0c\u5982\u679c\u60f3\u8981\u8ddf\u539f\u5148\u7684\u6267\u884c\u987a\u5e8f\u4e00\u6837\uff0c\u90a3\u4e48case\u5757\u7684\u8df3\u8f6c\u987a\u5e8f\u5e94\u8be5\u662f7,5,1,3,2,4,6\uff0c\u53ea\u6709case\u5757\u6309\u7167\u8fd9\u4e2a\u987a\u5e8f\u6267\u884c\uff0c\u624d\u80fd\u8ddf\u539f\u6267\u884c\u987a\u5e8f\u4fdd\u6301\u4e00\u81f4\u3002<\/p>\n<p>\u5176\u6b21\uff0c\u9700\u8981\u4e00\u4e2a\u5faa\u73af\u3002\u56e0\u4e3aswitch\u8bed\u53e5\u53ea\u8ba1\u7b97\u4e00\u6b21switch\u8868\u8fbe\u5f0f\uff0c\u5b83\u7684\u6267\u884c\u6d41\u7a0b\u5982\u4e0b\uff1a<\/p>\n<ol>\n<li>\u8ba1\u7b97\u4e00\u6b21switch\u8868\u8fbe\u5f0f\uff1b<\/li>\n<li>\u628a\u8868\u8fbe\u5f0f\u7684\u503c\u4e0e\u6bcf\u4e2acase\u7684\u503c\u8fdb\u884c\u5bf9\u6bd4(\u8fd9\u91cc\u662f <code>===<\/code>\u7684\u5339\u914d\uff0c\u4e0d\u8f6c\u6362\u7c7b\u578b)\uff1b<\/li>\n<li>\u5982\u679c\u5b58\u5728\u5339\u914d\uff0c\u5219\u6267\u884c\u5bf9\u5e94case\u5757\u3002<\/li>\n<\/ol>\n<p>\u56e0\u6b64\uff0c\u4ee3\u7801\u53ef\u4ee5\u6539\u5199\u6210\u5982\u4e0b\u5f62\u5f0f\uff1a<\/p>\n<pre><code class=\"language-javascript\">while(!![]){\n    switch(){\n    case &#039;1&#039;:\n        var c = b + 3000;\n        continue;\n        \/\/\u6bcf\u6267\u884c\u4e00\u6b21case\u5757\u4e2d\u7684\u4ee3\u7801\uff0c\u5c31\u8df3\u5230\u5faa\u73af\u672b\u5c3e\uff0c\u7ee7\u7eed\u4e0b\u4e00\u6b21\u5faa\u73af\n    case &#039;2&#039;:\n        var e = d + 5000;\n        continue;\n    case &#039;3&#039;:\n        var d = c + 4000;\n        continue;\n    case &#039;4&#039;:\n        var f = e + 6000;   \n        continue;\n    case &#039;5&#039;:\n        var b = a + 2000;\n        continue;\n    case &#039;6&#039;:\n        return f;\n        continue;\n    case &#039;7&#039;:\n        var a = 1000;\n        continue;\n    }\n    break\n    \/\/\u5f53switch\u8ba1\u7b97\u51fa\u6765\u7684\u8868\u8fbe\u5f0f\u7684\u503c\u4e0e\u6bcf\u4e2acase\u7684\u503c\u90fd\u4e0d\u5339\u914d\u65f6\uff0c\u4ee3\u7801\u5c31\u4f1a\u8fd0\u884c\u5230\u8fd9\u91cc\uff0c\u518d\u8df3\u51fa\u5faa\u73af\n}<\/code><\/pre>\n<p>\u8fd9\u662f\u4e00\u4e2a\u6b7b\u5faa\u73af,\u6240\u4ee5\u9700\u8981\u4e00\u4e2a\u8fb9\u754c\u6761\u4ef6\u6765\u7ed3\u675f\u5faa\u73af\u3002\u5047\u5982\u51fd\u6570\u6709 return \u8bed\u53e5,\u90a3\u4e48\u6267\u884c\u5230\u5bf9\u5e94\u7684 case \u5757\u540e,\u4f1a\u76f4\u63a5\u8fd4\u56de\u3002\u5047\u5982\u51fd\u6570\u6ca1\u6709 return \u8bed\u53e5,\u4ee3\u7801\u6267\u884c\u5230\u6700\u540e,\u5c31\u9700\u8981\u8ba9 switch \u8ba1\u7b97\u51fa\u6765\u7684\u8868\u8fbe\u5f0f\u7684\u503c\u4e0e\u6bcf\u4e2a case \u7684\u503c\u90fd\u4e0d\u5339\u914d,\u90a3\u4e48\u5c31\u4f1a\u6267\u884c\u6700\u540e\u7684 break \u6765\u8df3\u51fa\u5faa\u73af\u3002<br \/>\n\u5728\u8fd9\u4e2a\u6848\u4f8b\u91cc\uff0creturn \u8bed\u53e5\u540e\u9762\u7684 continue \u8bed\u662f\u4e0d\u4f1a\u88ab\u6267\u884c\u7684,\u4f46\u7559\u7740\u4e0d\u5f71\u54cd\u4ee3\u7801\u8fd0\u884c\u3002\u5047\u5982\u8fd9\u662f\u4e00\u6bb5\u7531 AST \u81ea\u52a8\u5904\u7406\u51fa\u6765\u7684\u4ee3\u7801,\u8fd9\u6837\u505a\u66f4\u5177\u901a\u7528\u6027,\u4e0d\u9700\u8981\u8003\u8651\u51fd\u6570\u7684\u6700\u540e\u4e00\u6761\u8bed\u53e5\u662f\u5426\u662f return \u8bed\u53e5\u3002<br \/>\n\u6700\u540e,\u9700\u8981\u6784\u9020\u4e00\u4e2a\u5206\u53d1\u5668,\u91cc\u9762\u8bb0\u5f55\u4e86\u4ee3\u7801\u6267\u884c\u7684\u771f\u5b9e\u987a\u5e8f\u3002\u4f8b\u5982,<code>var arrStr =&#039;7|5|1|3|2|4|6&#039;split(), i= 0;<\/code>,\u628a\u8fd9\u4e2a\u5b57\u7b26\u4e32<code>&#039;7|5|1|3|2|4|6&#039;<\/code>\u901a\u8fc7 split \u5206\u5272\u6210\u4e00\u4e2a\u6570\u7ec4\u3002<code>i<\/code>\u4f5c\u4e3a\u8ba1\u6570\u5668,\u6bcf\u6b21\u9012\u589e,\u6309\u987a\u5e8f\u5f15\u7528\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u4e2a\u6210\u5458\u3002\u56e0\u6b64,switch \u4e2d\u7684\u8868\u8fbe\u5f0f\u5c31\u53ef\u4ee5\u5199\u6210 <code>switch(arrStr[i++])<\/code>\u3002\u5b8c\u6574\u4ee3\u7801\u5982\u4e0b\u6240\u793a:<\/p>\n<pre><code class=\"language-javascript\">function test2(){\n    var arrStr = &#039;7|5|1|3|2|4|6&#039;.split(&#039;|&#039;), i = 0;\n    while (!![]) {\n        switch(arrStr[i++]){\n            case &#039;1&#039;:\n                var c = b + 3000;\n                continue;\n            case &#039;2&#039;:\n                var e = d + 5000;\n                continue;\n            case &#039;3&#039;:\n                var d = c + 4000;\n                continue;\n            case &#039;4&#039;:\n                var f = e + 6000;\n                continue;\n            case &#039;5&#039;:\n                var b = a + 2000;\n                continue;\n            case &#039;6&#039;:\n                return f;\n                continue;\n            case &#039;7&#039;:\n                var a = 1000;\n                continue;\n        }\n        break;\n    }\n}\nconsole.log( test2() );\n\/\/\u8f93\u51fa 21000<\/code><\/pre>\n<p>\u53ef\u4ee5debugger\u67e5\u770b\u4e0b\u8fc7\u7a0b\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/image-20230829192439847.png\" alt=\"image-20230829192439847\" \/><\/p>\n<p>\u518d\u6765\u89e3\u91ca <code>switch(arrStr[i++])<\/code>\u7684\u4f5c\u7528\u3002i\u7684\u521d\u59cb\u503c\u4e3a0,\u4f1a\u5148\u53d6\u5230 arrStr[o],\u7136\u540ei\u589e\u52a0 1,\u518d\u53d6\u5230 arrStr[1],\u4ee5\u6b64\u7c7b\u63a8\u3002\u5047\u5982\u51fd\u6570\u6709 return \u8bed\u53e5,\u6267\u884c\u5230\u6700\u540e\u4e00\u4e2a case \u5757\u65f6,\u51fd\u6570\u8fd4\u56de,\u5faa\u73af\u4e5f\u9000\u51fa\u4e86\u3002\u5047\u5982\u51fd\u6570\u6ca1\u6709 return \u8bed\u53e5,\u5f53i\u4e00\u76f4\u9012\u589e\u5230\u6570\u7ec4\u8d8a\u754c\u65f6\uff0c\u5c31\u4f1a\u53d6\u5230undefined(JS \u4e2d\u8bbf\u95ee\u6570\u7ec4\u8d8a\u754c\u4e0d\u4f1a\u62a5\u9519),\u7136\u540e\u6267\u884c\u6700\u540e\u7684 break \u8df3\u51fa\u5faa\u73af\u3002\u5728\u7406\u89e3\u4e86\u7b80\u5355\u7684\u6848\u4f8b\u540e,\u5c31\u53ef\u4ee5\u5bf9 \u4e0a\u4e00\u8282\u4e2d\u7684\u4ee3\u7801\u505a\u8fdb\u4e00\u6b65\u6df7\u6dc6,\u5904\u7406\u540e\u7684\u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre><code class=\"language-javascript\">\/\/\u6700\u5f00\u59cb\u7684\u5927\u6570\u7ec4\nvar bigArr = [\n    &#039;cmVwbGFjZQ==&#039;, &#039;Z2V0TW9udGg=&#039;, &#039;dG9TdHJpbmc=&#039;, &#039;Z2V0RGF0ZQ==&#039;, &#039;MA==&#039;, \n    &quot;&quot;[&#039;constructor&#039;][&#039;fromCharCode&#039;], &#039;\\u65e5&#039;, &#039;\\u4e00&#039;, &#039;\\u4e8c&#039;, \n    &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, &#039;\\u516d&#039;\n];\n\/\/\u8fd8\u539f\u6570\u7ec4\u987a\u5e8f\u7684\u81ea\u6267\u884c\u51fd\u6570\n(function(arr, num){\n    var shuffer = function(nums){\n        while(--nums){\n            arr[&#039;push&#039;](arr[&#039;shift&#039;]());\n        }\n    };\n    shuffer(++num);\n}(bigArr,0x20));\n\/\/\u672c\u5c0f\u8282\u5904\u7406\u7684switch\u6d41\u7a0b\u5e73\u5766\u5316\nDate.prototype.\\u0066\\u006f\\u0072\\u006d\\u0061\\u0074 = function(formatStr) {\n    var arrStr = &#039;7|5|1|3|2|4&#039;.split(&#039;|&#039;), i = 0;\n    while (!![]) {\n        switch(arrStr[i++]){\n            case &#039;1&#039;:\n                eval(String.fromCharCode(115, 116, 114, 32, 61, 32, 115, 116, 114, 91, 39, 114, 101, 112, 108, 97, 99, 101, 39, 93, 40, 47, 121, 121, 121, 121, 124, 89, 89, 89, 89, 47, 44, 32, 116, 104, 105, 115, 91, 39, 103, 101, 116, 70, 117, 108, 108, 89, 101, 97, 114, 39, 93, 40, 41, 41, 59));\n                continue;\n            case &#039;2&#039;:\n                str = str[atob(bigArr[7])](\/dd|DD\/, this[atob(bigArr[10])]() &gt; 9 ? this[atob(bigArr[10])]()[atob(bigArr[9])]() : atob(bigArr[11]) + this[atob(bigArr[10])]());\n                continue;\n            case &#039;3&#039;:\n                str = str[atob(bigArr[7])](\/MM\/, (this[atob(bigArr[8])]() + 1) &gt; 9 ? (this[atob(bigArr[8])]() + 1)[atob(bigArr[9])]() : atob(bigArr[11]) + (this[atob(bigArr[8])]() + 1));\n                continue;\n            case &#039;4&#039;:\n                return str;\n                continue;\n            case &#039;5&#039;:\n                var Week = [bigArr[0], bigArr[1], bigArr[2], bigArr[3], bigArr[4], bigArr[5], bigArr[6]];\n                continue;\n            case &#039;7&#039;:\n                var \\u0073\\u0074\\u0072 = \\u0066\\u006f\\u0072\\u006d\\u0061\\u0074\\u0053\\u0074\\u0072;\n                continue;\n        }\n        break;\n    }\n}\nconsole.log( new \\u0077\\u0069\\u006e\\u0064\\u006f\\u0077[&#039;\\u0044\\u0061\\u0074\\u0065&#039;]()[bigArr[12](102, 111, 114, 109, 97, 116)](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;) );\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<p>JS\u8bed\u6cd5\u6bd4\u8f83\u7075\u6d3b\uff0ccase\u540e\u9762\u8ddf\u7684\u503c\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\/\u5b57\u7b26\uff0c\u4e5f\u53ef\u4ee5\u662f\u6570\u503c\uff0c\u8fd8\u53ef\u4ee5\u662f\u5bf9\u8c61\u6216\u8005\u6570\u7ec4\u3002<\/p>\n<h3>2.\u9017\u53f7\u8868\u8fbe\u5f0f\u6df7\u6dc6<\/h3>\n<p>\u9017\u53f7\u8fd0\u7b97\u7b26\u7684\u4e3b\u8981\u4f5c\u7528\u662f\u628a\u591a\u4e2a\u8868\u8fbe\u5f0f\u6216\u8bed\u53e5\u8fde\u63a5\u6210\u4e00\u4e2a\u590d\u5408\u8bed\u53e5\u3002<\/p>\n<p><strong>\u9017\u53f7\u8fd0\u7b97\u7b26\u4e3b\u8981\u7528\u4e8e\u5728\u4e00\u884c\u4e2d\u6267\u884c\u591a\u4e2a\u64cd\u4f5c\uff0c\u800c\u53ea\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u64cd\u4f5c\u7684\u7ed3\u679c,\u4f46\u9017\u53f7\u524d\u9762\u7684\u8868\u8fbe\u5f0f\u4f9d\u7136\u4f1a\u6267\u884c\u3002<\/strong><\/p>\n<p>\u6d41\u7a0b\u5e73\u5766\u5316\u5c0f\u8282\u4e2d\u7684test1\u51fd\u6570\uff0c\u5c31\u7b49\u4ef7\u4e8e\uff1a<\/p>\n<pre><code class=\"language-javascript\">function test1(){\n    var a, b, c, d, e, f;\n    return a = 1000,\n    b = a + 2000,\n    c = b + 3000,\n    d = c + 4000,\n    e = d + 5000,\n    f = e + 6000,\n    f\n}\nconsole.log( test1() );\n\/\/\u8f93\u51fa 21000<\/code><\/pre>\n<p>return \u8bed\u53e5\u540e\u901a\u5e38\u53ea\u80fd\u9650\u4e00\u4e2a\u8868\u8fbe\u5f0f,\u5b83\u4f1a\u8fd4\u56de\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u8ba1\u7b97\u540e\u7684\u7ed3\u679c\u3002\u4f46\u662f\u9017\u53f7\u8fd0\u7b97\u7b26\u53ef\u4ee5\u628a\u591a\u4e2a\u8868\u8fbe\u5f0f\u8fde\u63a5\u6210\u4e00\u4e2a\u590d\u5408\u8bed\u53e5\u3002<\/p>\n<p>\u56e0\u6b64\u4e0a\u8ff0\u4ee3\u7801\u4e2d,return \u8bed\u53e5\u7684\u4f7f\u7528\u4e5f\u662f\u6ca1\u6709\u95ee\u9898\u7684,\u5b83\u4f1a\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u8868\u8fbe\u5f0f\u8ba1\u7b97\u540e\u7684\u7ed3\u679c,\u4f46\u662f\u524d\u9762\u7684\u8868\u8fbe\u5f0f\u4f9d\u7136\u4f1a\u6267\u884c\u3002<\/p>\n<p>\u4e0a\u6848\u4f8b\u53ea\u662f\u5355\u7eaf\u7684\u8fde\u63a5\u8bed\u53e5,\u6ca1\u6709\u6df7\u6dc6\u529b\u5ea6\u3002\u4e0b\u9762\u518d\u4ecb\u7ecd\u4e00\u4e2a\u6848\u4f8b,\u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre><code class=\"language-javascript\">var a = (a = 1000, a += 2000);\nconsole.log( a);\n\/\/\u8f93\u51fa???<\/code><\/pre>\n<p>\u7b2c\u4e00\u884c\u4ee3\u7801\u4e2d,\u62ec\u53f7\u4ee3\u8868\u8fd9\u662f\u4e00\u4e2a\u6574\u4f53,\u4e5f\u5c31\u662f\u628a(a=1000\uff0ca\u53412000)\u6574\u4f53\u8d4b\u503c\u7ed9\u53d8\u91cf\u3002\u8fd9\u4e2a\u6574\u4f53\u8fd4\u56de\u7684\u7ed3\u679c\u548c return \u8bed\u53e5\u662f\u4e00\u6837\u7684,\u4f1a\u5148\u6267\u884c a=1000,\u7136\u540e\u6267\u884ca+=2000,\u518d\u628a\u7ed3\u679c\u8d4b\u503c\u7ed9a \u53d8\u91cf,\u6700\u7ec8 a\u53d8\u91cf\u7684\u503c\u4e3a 3000\u3002<\/p>\n<p>\u660e\u767d\u4e86\u4e0a\u8ff0\u539f\u7406\u540e,\u518d\u4ecb\u7ecd\u9017\u53f7\u8fd0\u7b97\u7b26\u7684\u6df7\u6dc6,\u4ee5\u672c\u8282\u4e2d\u7684 testl \u51fd\u6570\u4e3a\u4f8b,\u5904\u7406\u601d\u8def<br \/>\n\u5982\u4e0b:<\/p>\n<ol>\n<li>\u6267\u884c a=1000\uff0c\u518d\u6267\u884c a+2000,\u4ee3\u7801\u53ef\u4ee5\u6539\u4e3a(a=1000\uff0ca+2000)\u3002<\/li>\n<li>\u63a5\u7740\u8d4b\u503c\u7ed9 b,\u4ee3\u7801\u53ef\u4ee5\u6539\u4e3a b=(a=1000\uff0ca+2000)\u3002<\/li>\n<li>\u6267\u884c b+3000,\u4ee3\u7801\u53ef\u4ee5\u6539\u4e3a(b=(a=1000\uff0ca+2000)\uff0cb+3000)\u3002<\/li>\n<li>\u63a5\u7740\u8d4b\u503c\u7ed9 c,\u4ee3\u7801\u53ef\u4ee5\u6539\u4e3a c=(b=(a=1000\uff0ca+2000)\uff0cb+3000)\u3002<\/li>\n<li>\u6267\u884cc+4000,\u4ee3\u7801\u53ef\u4ee5\u6539\u4e3a(c=(b=(a=1000\uff0ca+2000)\uff0cb+3000)\uff0cc+4000)\u3002<\/li>\n<\/ol>\n<p>\u4ee5\u6b64\u7c7b\u63a8\u3002<br \/>\n\u5904\u7406\u540e\u7684\u4ee3\u7801\u4e3a:<\/p>\n<pre><code class=\"language-javascript\">function test2(){\n    var a, b, c, d, e, f;\n    return f = (e = (d = (c = (b = (a = 1000, a + 2000), b + 3000), c + 4000), d + 5000), e + 6000);\n}\nconsole.log( test2() );\n\/\/\u8f93\u51fa 21000<\/code><\/pre>\n<p>\u8fd9\u6bb5\u4ee3\u7801\u6709\u4e00\u4e2a\u58f0\u660e\u4e00\u7cfb\u5217\u53d8\u91cf\u7684\u8bed\u53e5\u3002\u8fd9\u4e2a\u8bed\u53e5\u5f88\u591a\u4f59,\u53ef\u4ee5\u653e\u5230\u53c2\u6570\u5217\u8868\u4e0a,\u8fd9\u6837\u5c31\u4e0d\u9700\u8981 var \u58f0\u660e\u4e86\u3002\u53e6\u5916,\u65e2\u7136\u9017\u53f7\u8fd0\u7b97\u7b26\u8fde\u63a5\u591a\u4e2a\u8868\u8fbe\u5f0f\uff0c\u53ea\u4f1a\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u8868\u8fbe\u5f0fi\u7b97\u540e\u7684\u7ed3\u679c,\u90a3\u4e48\u53ef\u4ee5\u5728\u6700\u540e\u4e00\u4e2a\u8868\u8fbe\u5f0f\u4e4b\u524d\u63d2\u5165\u4e0d\u5f71\u54cd\u7ed3\u679c\u7684\u82b1\u6307\u4ee4\u3002<\/p>\n<p>\u6700\u7ec8\u5904\u7406\u540e\u7684\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-javascript\">function test2(a, b, c, d, e, f){\n    return f = (e = (d = (c = (b = (a = 1000, a + 50, b + 60, c + 70, a + 2000), d + 80, b + 3000), e + 90, c + 4000), f + 100 ,d + 5000), e + 6000);\n}\nconsole.log( test2() );\n\/\/ \u8f93\u51fa 21000<\/code><\/pre>\n<p>\u4e0a\u8ff0\u4ee3\u7801\u4e2d a+50\u3001b+60\u3001c+70\u3001d+80\u3001e+90\u3001f+100 \u8fd9\u4e9b\u82b1\u6307\u4ee4\u5e76\u65e0\u5b9e\u9645\u610f\u4e49,\u4e0d\u5f71\u54cd\u6709\u539f\u5148\u7684\u4ee3\u7801\u903b\u8f91\u3002test2\u867d\u67096\u4e2a\u53c2\u6570,\u4f46\u662f\u4e0d\u4f20\u53c2\u4e5f\u53ef\u4ee5\u8c03\u7528,\u53ea\u4e0d\u8fc7\u5404\u53c2\u6570\u7684\u521d\u59cb\u503c\u4e3aundefined\u3002<br \/>\n\u9017\u53f7\u8868\u8fbe\u5f0f\u6df7\u6dc6\u4e0d\u4ec5\u80fd\u5904\u7406\u8d4b\u503c\u8868\u8fbe\u5f0f,\u8fd8\u80fd\u5904\u7406\u8c03\u7528\u8868\u8fbe\u5f0f\u3001\u6210\u5458\u8868\u8fbe\u5f0f\u7b49\u3002\u8003\u8651\u4e0b\u9762\u8fd9\u4e2a\u6848\u4f8b:<\/p>\n<pre><code class=\"language-javascript\">var obj = {\n    name: &#039;xiaojianbang&#039;,\n    add: function(a, b){\n        return a + b;\n    }\n}\nfunction sub(a, b){\n    return a - b;\n}\nfunction test(){\n    var a = 1000;\n    var b = sub(a,3000) + 1;\n    var c = b + obj.add(b, 2000);\n    return c + obj.name\n}<\/code><\/pre>\n<p>test \u51fd\u6570\u4e2d\u6709\u51fd\u6570\u8c03\u7528\u8868\u8fbe\u5f0f sub,\u8fd8\u6709\u6210\u5458\u8868\u8fbe\u5f0f obj.add \u7b49,\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u4e24\u79cd\u65b9\u6cd5\u5bf9\u5176\u8fdb\u884c\u5904\u7406\u3002<\/p>\n<ol>\n<li>\u63d0\u5347\u53d8\u91cf\u58f0\u660e\u5230\u53c2\u6570\u4e2d\u3002<\/li>\n<li><code>b=(a=1000,sub)(a,3000)+1<\/code>\u4e2d\u7684<code>(a=1000,sub)<\/code>\u53ef\u4ee5\u6574\u4f53\u8fd4\u56de sub \u51fd\u6570,\u7136\u540e\u76f4\u63a5\u8c03\u7528,\u8ba1\u7b97\u7684\u7ed3\u679c\u52a0 1\u540e\u8d4b\u503c\u7ed9 b(\u7b49\u53f7\u7684\u8fd0\u7b97\u7b26\u4f18\u5148\u7ea7\u5f88\u4f4e)\u3002\u540c\u7406,\u5982\u679c sub \u51fd\u6570\u6539\u4e3aobj.add \u7684\u8bdd,\u53ef\u4ee5\u5904\u7406\u6210<code>(a=1000,obj.add)(a,3000)<\/code> \u6216\u8005<code>(a=1000,obj).add(a, 3000)<\/code>\u3002<\/li>\n<\/ol>\n<p>\u7b2c2\u79cd\u65b9\u6cd5\u662f\u8c03\u7528\u8868\u8fbe\u5f0f\u5728\u7b49\u53f7\u53f3\u8fb9\u7684\u60c5\u51b5\u3002\u4f8b\u5982 test \u51fd\u6570\u4e2d\u7684\u7b2c 3 \u6761\u8bed\u53e5\u91cc\u9762\u7684<code>b+obj.add(b,2000)<\/code>,\u53ef\u4ee5\u5bf9 obj.add \u8fdb\u884c\u5305\u88c5,\u5904\u7406\u6210 <code>b+(0,obj.add)(b,2000)<\/code>\u6216\u8005 <code>b+(0,obj).add(b,2000)<\/code>,\u62ec\u53f7\u4e2d\u76840\u53ef\u4ee5\u662f\u5176\u4ed6\u82b1\u6307\u4ee4\u3002<br \/>\n\u7efc\u4e0a\u6240\u8ff0\uff0c\u4e0a\u8ff0\u6848\u4f8b\u4e2d\u7684\u4ee3\u7801,\u53ef\u4ee5\u5904\u7406\u6210\u5982\u4e0b\u5f62\u5f0f:<\/p>\n<pre><code class=\"language-javascript\">var obj = {\n    name: &#039;xiaojianbang&#039;,\n    add: function(a, b){\n        return a + b;\n    }\n}\nfunction sub(a, b){\n    return a - b;\n}\nfunction test() {\n    return c = (b = (a = 1000, sub)(a, 3000) + 1, b + (0, obj).add(b, 2000)),\n    c + (0, obj).name;\n}<\/code><\/pre>\n<p>\u5728\u7406\u89e3\u4e86\u7b80\u5355\u7684\u6848\u4f8b\u540e\uff0c\u5c31\u53ef\u4ee5\u5bf9\u539f\u5148\u7684\u4ee3\u7801\u8fdb\u884c\u66f4\u6df1\u4e00\u6b65\u7684\u6df7\u6dc6\uff1a<\/p>\n<pre><code class=\"language-javascript\">\/\/\u6700\u5f00\u59cb\u7684\u5927\u6570\u7ec4\nvar bigArr = [\n    &#039;cmVwbGFjZQ==&#039;, &#039;Z2V0TW9udGg=&#039;, &#039;dG9TdHJpbmc=&#039;, &#039;Z2V0RGF0ZQ==&#039;, &#039;MA==&#039;, \n    &quot;&quot;[&#039;constructor&#039;][&#039;fromCharCode&#039;], &#039;\\u65e5&#039;, &#039;\\u4e00&#039;, &#039;\\u4e8c&#039;, \n    &#039;\\u4e09&#039;, &#039;\\u56db&#039;, &#039;\\u4e94&#039;, &#039;\\u516d&#039;\n];\n\/\/\u8fd8\u539f\u6570\u7ec4\u987a\u5e8f\u7684\u81ea\u6267\u884c\u51fd\u6570\n(function(arr, num){\n    var shuffer = function(nums){\n        while(--nums){\n            arr[&#039;push&#039;](arr[&#039;shift&#039;]());\n        }\n    };\n    shuffer(++num);\n}(bigArr,0x20));\n\/\/\u672c\u5c0f\u8282\u5904\u7406\u7684\u4ee3\u7801\n\/\/\u628a\u539f\u5148\u7684\u53d8\u91cf\u5b9a\u4e49\u63d0\u53d6\u5230\u53c2\u6570\u5217\u8868\u4e2d\nDate.prototype.\\u0066\\u006f\\u0072\\u006d\\u0061\\u0074 = function(formatStr, str, Week) {\n\/\/\u56e0\u4e3a\u57fa\u672c\u4e0a\u90fd\u4f1a\u5904\u7406\u6210\u4e00\u884c\u4ee3\u7801\uff0c\u6240\u4ee5return\u8bed\u53e5\u53ef\u4ee5\u63d0\u5230\u6700\u4e0a\u9762\nreturn str =    \n        (str = (\n            Week = (\n                \\u0073\\u0074\\u0072 = \\u0066\\u006f\\u0072\\u006d\\u0061\\u0074\\u0053\\u0074\\u0072, \n                [bigArr[0], bigArr[1], bigArr[2], bigArr[3], bigArr[4], bigArr[5], bigArr[6]]\n            \/\/\u4e0a\u9762\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c\uff0c\u4f1a\u8d4b\u503c\u7ed9Week\n            ), \n            eval(String.fromCharCode(115, 116, 114, 32, 61, 32, 115, 116, 114, 91, 39, 114, 101, 112, 108, 97, 99, 101, 39, 93, 40, 47, 121, 121, 121, 121, 124, 89, 89, 89, 89, 47, 44, 32, 116, 104, 105, 115, 91, 39, 103, 101, 116, 70, 117, 108, 108, 89, 101, 97, 114, 39, 93, 40, 41, 41, 59)), \n            str[atob(bigArr[7])](\/MM\/, (this[atob(bigArr[8])]() + 1) &gt; 9 ? (this[atob(bigArr[8])]() + 1)[atob(bigArr[9])]() : atob(bigArr[11]) + (this[atob(bigArr[8])]() + 1))\n        \/\/\u4e0a\u9762\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c\uff0c\u4f1a\u8d4b\u503c\u7ed9\u7b2c\u4e8c\u4e2astr\n        ),\n        str[atob(bigArr[7])](\/dd|DD\/, this[atob(bigArr[10])]() &gt; 9 ? this[atob(bigArr[10])]()[atob(bigArr[9])]() : atob(bigArr[11]) + this[atob(bigArr[10])]())\n    \/\/\u4e0a\u9762\u8fd9\u4e2a\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c\uff0c\u4f1a\u8d4b\u503c\u7ed9\u7b2c\u4e00\u4e2astr\n    );\n}\nconsole.log( new \\u0077\\u0069\\u006e\\u0064\\u006f\\u0077[&#039;\\u0044\\u0061\\u0074\\u0065&#039;]()[bigArr[12](102, 111, 114, 109, 97, 116)](&#039;\\x79\\x79\\x79\\x79\\x2d\\x4d\\x4d\\x2d\\x64\\x64&#039;) );\n\/\/\u8f93\u51fa\u7ed3\u679c 2020-07-04<\/code><\/pre>\n<p>\u6700\u540e\u4ecb\u7ecd\u9017\u53f7\u8868\u8fbe\u5f0f\u6df7\u6dc6\u7684\u8fd8\u539f\u6280\u5de7\u3002\u5728\u9017\u53f7\u8868\u8fbe\u5f0f\u6df7\u6dc6\u4e2d,\u901a\u5e38\u9700\u8981\u4f7f\u7528\u62ec\u53f7\u6765\u5206\u7ec4\uff0c\u5b9a\u4f4d\u5230\u6700\u91cc\u9762\u7684\u90a3\u4e2a\u62ec\u53f7\uff0c\u4e00\u822c\u5c31\u662f\u7b2c\u4e00\u6761\u8bed\u53e5\u3002\u7136\u540e\u4ece\u91cc\u5230\u5916,\u4e00\u5c42\u5c42\u5730\u6839\u636e\u62ec\u53f7\u5bf9\u5e94\u5173\u7cfb,\u8fd8\u539f\u8bed\u53e5\u987a\u5e8f\u3002<\/p>\n<p>\u5982\u679c\u7528 AST \u8fd8\u539f\u9017\u53f7\u8868\u8fbe\u5f0f\u6df7\u6dc6,\u5c31\u4e0d\u7528\u8fd9\u4e48\u9ebb\u70e6\u5730\u627e\u5bf9\u5e94\u5173\u7cfb\uff0c\u51e0\u884c\u4ee3\u7801\u5c31\u53ef\u4ee5\u89e3\u51b3\u95ee\u9898\u3002<\/p>\n<h2>\u56db\u3001\u5176\u4ed6\u4ee3\u7801\u9632\u62a4\u65b9\u6848<\/h2>\n<h3>1.eval\u52a0\u5bc6<\/h3>\n<p>\u5c06\u8fd9\u6bb5\u4ee3\u7801\u8fdb\u884ceval\u52a0\u5bc6\uff1a<\/p>\n<pre><code class=\"language-javascript\">Date.prototype.format = function (formatStr){\n    var str = formatStr\n    var Week = [&#039;\u65e5&#039;, &#039;\u4e00&#039;,&#039;\u4e8c&#039;,&#039;\u4e09&#039;,&#039;\u56db&#039;,&#039;\u4e94&#039;,&#039;\u516d&#039;]\n    str = str.replace(\/yyyy|YYYY\/, this.getFullYear())\n    str = str.replace(\/MM\/, (this.getMonth()+1)&gt;9 ? (this.getMonth()+1).toString() : &#039;0&#039; + (this.getMonth() + 1));\n    str = str.replace(\/dd|DD\/, this.getDate() &gt;9 ? this.getDate().toString() : &#039;0&#039; + this.getDate());\n    return str;\n}\nconsole.log(new Date().format(&#039;yyyy-MM-dd&#039;));<\/code><\/pre>\n<p><strong>\u5728\u7ebf\u52a0\u5bc6\u5de5\u5177\uff1a<\/strong><a href=\"http:\/\/1json.com\/enc\/jsevalencode.html\">javascript eval\u52a0\u5bc6\u89e3\u5bc6-1json.com<\/a><\/p>\n<pre><code class=\"language-javascript\">eval(function (p, a, c, k, e, r) {\n    e = function (c) {\n        return c.toString(36)\n    };\n    if (&#039;0&#039;.replace(0, e) == 0) {\n        while (c--)\n            r[e(c)] = k[c];\n        k = [function (e) {\n                return r[e] || e\n            }\n        ];\n        e = function () {\n            return &#039;[2-8a-f]&#039;\n        };\n        c = 1\n    };\n    while (c--)\n        if (k[c])\n            p = p.replace(new RegExp(&#039;\\\\b&#039; + e(c) + &#039;\\\\b&#039;, &#039;g&#039;), k[c]);\n    return p\n}(&#039;7.prototype.8=function(a){b 2=a;b Week=[\\&#039;\u65e5\\&#039;,\\&#039;\u4e00\\&#039;,\\&#039;\u4e8c\\&#039;,\\&#039;\u4e09\\&#039;,\\&#039;\u56db\\&#039;,\\&#039;\u4e94\\&#039;,\\&#039;\u516d\\&#039;];2=2.4(\/c|YYYY\/,3.getFullYear());2=2.4(\/d\/,(3.5()+1)&gt;9?(3.5()+1).e():\\&#039;0\\&#039;+(3.5()+1));2=2.4(\/f|DD\/,3.6()&gt;9?3.6().e():\\&#039;0\\&#039;+3.6());return 2};console.log(new 7().8(\\&#039;c-d-f\\&#039;));&#039;, [], 16, &#039;||str|this|replace|getMonth|getDate|Date|format||formatStr|var|yyyy|MM|toString|dd&#039;.split(&#039;|&#039;), 0, {}))<\/code><\/pre>\n<p>\u8fd9\u6bb5\u4ee3\u7801\u7684\u4e00\u4e2aeval()\u51fd\u6570,\u5b83\u7528\u6765\u628a\u4e00\u6bb5\u5b57\u7b26\u4e32\u5f53\u4f5c JS \u4ee3\u7801\u6765\u6267\u884c\u3002\u4e5f\u5c31\u662f\u8bf4,\u7ed9 eval()\u7684\u53c2\u6570\u662f\u4e00\u6bb5\u5b57\u7b26\u4e32\uff0c\u4f46\u5728\u4e0a\u8ff0\u4ee3\u7801\u4e2d,\u4f20\u7ed9 eval()\u51fd\u6570\u7684\u53c2\u6570\u662f\u4e00\u4e2a\u81ea\u6267\u884c\u533f\u540d\u51fd\u6570\u3002\u8fd9\u8bf4\u660e,\u8fd9\u4e2a\u533f\u540d\u96e8\u6570\u6267\u884c\u540e\u4f1a\u8fd4\u56de\u4e00\u6bb5\u5b57\u7b26\u4e32\uff0c\u5e76\u4e14\u7528 eval()\u6267\u884c\u8fd9\u6bb5\u5b57\u4e32\uff0c\u6267\u884c\u6548\u679c\u4e0e eval \u52a0\u5bc6\u524d\u7684\u4ee3\u7801\u6548\u679c\u7b49\u540c\u3002\u90a3\u5c31\u53ef\u4ee5\u628a\u8fd9\u4e2a\u533f\u540d\u51fd\u6570\u7406\u89e3\u6210\u662f\u4e00\u4e2a\u89e3\u5bc6\u51fd\u6570\u4e86\u3002\u7531\u6b64\u53ef\u89c1,eval \u52a0\u5bc6\u5176\u5b9e\u548c eval()\u5173\u7cfb\u4e0d\u5927\uff0ceval()\u53ea\u662f\u7528\u6765\u6267\u884c\u89e3\u5bc6\u51fa\u6765\u7684\u4ee3\u7801\u3002<br \/>\n\u518d\u6765\u89c2\u5bdf\u4f20\u7ed9\u8fd9\u4e2a\u533f\u540d\u96e8\u6570\u7684\u5b9e\u53c2\u90e8\u5206\u3002\u89c2\u5bdf\u7b2c 1\u4e2a\u5b9e\u53c2  \u548c\u7b2c 4\u4e2a\u5b9e\u53c2 k\u3002\u53ef\u4ee5\u770b\u51fa\u5904\u7406\u65b9\u5f0f\u5f88\u7b80\u5355,\u63d0\u53d6\u539f\u59cb\u4ee3\u7801\u4e2d\u7684\u4e00\u90e8\u5206\u6807\u8bc6\u7b26,\u7136\u540e\u7528\u5b83\u81ea\u5df1\u7684\u7b26\u53f7\u5360\u4f4d,\u6700\u540e\u518d<br \/>\n\u5bf9\u5e94\u66ff\u6362\u56de\u53bb\u5c31\u89e3\u5bc6\u4e86\u3002<\/p>\n<p>\u6700\u540e\u4ecb\u7ecd eval \u89e3\u5bc6\u3002\u8fd9\u4e2a\u6bd4\u8f83\u5bb9\u6613,\u65e2\u7136\u8fd9\u4e2a\u81ea\u6267\u884c\u7684\u533f\u540d\u51fd\u6570\u5c31\u662f\u89e3\u5bc6\u51fd\u6570,\u628a\u8ff0\u4ee3\u7801\u4e2d\u7684 eval\u5220\u53bb,\u5269\u4f59\u4ee3\u7801\u5728\u63a7\u5236\u53f0\u4e2d\u6267\u884c,\u5c31\u5f97\u5230\u539f\u59cb\u4ee3\u7801\u3002<\/p>\n<h3>2.\u5185\u5b58\u7206\u7834<\/h3>\n<p>\u5185\u5b58\u7206\u7834\u662f\u5728\u4ee3\u7801\u4e2d\u52a0\u4eba\u6b7b\u4ee3\u7801,\u6b63\u5e38\u60c5\u51b5\u4e0b\u8fd9\u6bb5\u4ee3\u7801\u4e0d\u6267\u884c,\u5f53\u68c0\u6d4b\u5230\u51fd\u6570\u88ab\u683c\u5f0f\u5316\u6216\u8005\u51fd\u6570\u88ab Hook,\u5c31\u8df3\u8f6c\u5230\u8fd9\u6bb5\u4ee3\u7801\u5e76\u6267\u884c,\u76f4\u5230\u5185\u5b58\u6ea2\u51fa,\u6d4f\u89c8\u5668\u4f1a\u63d0\u793a Out of Memory\u7a0b\u5e8f\u5d29\u6e83\u3002<\/p>\n<h3>3.\u68c0\u6d4b\u4ee3\u7801\u662f\u5426\u683c\u5f0f\u5316<\/h3>\n<p>\u68c0\u6d4b\u7684\u601d\u8def\u5f88\u7b80\u5355,\u5728JS\u4e2d\uff0c\u51fd\u6570\u662f\u53ef\u4ee5\u8f6c\u4e3a\u5b57\u7b26\u4e32\u7684\u3002\u56e0\u6b64\u53ef\u4ee5\u9009\u62e9\u4e00\u4e2a\u51fd\u6570\u8f6c\u4e3a\u5b57\u7b26\u4e32,\u7136\u540e\u8ddf\u5185\u7f6e\u7684\u5b57\u7b26\u4e32\u5bf9\u6bd4\u6216\u8005\u7528\u6b63\u5219\u5339\u914d\u3002<\/p>\n<p>\u51fd\u6570\u8f6c\u4e3a\u5b57\u7b26\u4e32\u5f88\u7b80\u5355,\u4ee3\u7801\u5982\u4e0b:<\/p>\n<pre><code class=\"language-javascript\">function add(a, b){return a + b;}\nconsole.log( add +&quot;&quot;);\nconsole.log( add.toString() );\n\/\/ &quot;function add(a, b){return a + b;)&quot;<\/code><\/pre>\n<p>\u5728Chrome \u5f00\u53d1\u8005\u5de5\u5177\u4e2d,\u628a\u4ee3\u7801\u683c\u5f0f\u5316\u540e,\u4f1a\u4ea7\u751f\u4e00\u4e2a\u540e\u7f00\u4e3a:formatted \u7684\u6587\u4ef6\u3002\u540e\u8fd9\u4e2a\u6587\u4ef6\u4e2d\u8bbe\u7f6e\u65ad\u70b9,\u89e6\u53d1\u65ad\u70b9\u540e,\u4f1a\u505c\u5728\u8fd9\u4e2a\u6587\u4ef6\u4e2d\u3002\u4f46\u662f,\u8fd9\u65f6\u628a\u67d0\u4e2a\u51fd\u6570\u8f6c\u4e3a\u5b57\u7b26\u4e32,\u53d6\u5230\u7684\u4f9d\u7136\u662f\u683c\u5f0f\u5316\u4e4b\u524d\u7684\u4ee3\u7801\u3002<\/p>\n<p>\u5728\u7b97\u6cd5\u9006\u5411\u4e2d,\u5206\u6790\u5b8c\u7b97\u6cd5,\u4e3a\u4e86\u5f97\u5230\u60f3\u8981\u7684\u7ed3\u679c,\u5c31\u9700\u8981\u5b9e\u73b0\u8fd9\u4e2a\u7b97\u6cd5\u3002\u7b80\u5355\u7684\u7b97\u6cd5\u4e00\u822c\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528\u73b0\u6210\u7684\u52a0\u5bc6\u5e93\u3002\u590d\u6742\u7684\u7b97\u6cd5\u5c31\u4f1a\u9009\u62e9\u76f4\u63a5\u4fee\u6539\u539f\u6587\u4ef6,\u7136\u540e\u8fd0\u884c\u5f97\u5230\u7ed3\u679c\u3002\u628a\u683c\u5f0f\u5316\u540e\u7684\u4ee3\u7801\u4fdd\u5b58\u6210\u4e00\u4e2a\u672c\u5730\u6587\u4ef6,\u8fd9\u65f6\u67d0\u4e2a\u51fd\u6570\u8f6c\u4e3a\u5b57\u7b26\u4e32,\u53d6\u5230\u7684\u5c31\u662f\u683c\u5f0f\u5316\u540e\u7684\u7ed3\u679c\u4e86\u3002<\/p>\n<p>\u662f\u5426\u89e6\u53d1\u683c\u5f0f\u5316\u68c0\u6d4b,\u5173\u952e\u662f\u770b\u539f\u6587\u4ef6\u4e2d\u662f\u5426\u6709\u683c\u5f0f\u5316\u3002\u68c0\u6d4b\u5230\u683c\u5f0f\u5316\u5c31\u8df3\u8f6c\u5230\u5185\u5b58\u7206\u7834\u4ee3\u7801\u4e2d\u6267\u884c,\u7a0b\u5e8f\u4f1a\u5d29\u6e83\u3002<\/p>\n<h2>\u5c0f\u7ed3<\/h2>\n<p>\u6df7\u6dc6\u7684\u76ee\u7684\u662f\u589e\u52a0\u9006\u5411\u5f00\u53d1\u8005\u7684\u5de5\u4f5c\u91cf\u3002\u4f8b\u5982,\u539f\u672c\u4e00\u5c0f\u65f6\u5c31\u89e3\u51b3\u7684\u7b97\u6cd5\uff0c\u6df7\u6dc6\u540e\u53ef\u80fd\u9700\u8981\u51e0\u5929\u624d\u80fd\u89e3\u51b3\u3002\u5f53\u7b97\u6cd5\u6bcf\u5929\u66f4\u65b0\uff0c\u9006\u5411\u5f00\u53d1\u8005\u81ea\u7136\u5c31\u653e\u5f03\u4e86\u3002\u76ee\u524d\u5e02\u9762\u4e0a\u5df2\u6709\u6b64\u7c7b\u65b9\u6848,\u53ea\u4e0d\u8fc7\u53d8\u5316\u7684\u7b97\u6cd5\u4ec5\u9650\u4e8e\u5fae\u8c03,\u5982\u7b97\u6cd5\u4e2d\u7684\u5e38\u91cf\u3001\u7b97\u6cd5\u52a0\u5bc6\u524d\u7684\u53c2\u6570\u987a\u5e8f\u7b49\u3002\u5982\u679c\u8981\u5b9e\u73b0\u6b64\u7c7b\u65b9\u6848,\u9700\u8981\u4e00\u79cd\u81ea\u52a8\u5316\u5904\u7406\u4ee3\u7801\u7684\u65b9\u6848\uff0cAST \u4e3a\u6b64\u800c\u751f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u5e38\u91cf\u7684\u6df7\u6dc6\u539f\u7406 \u793a\u4f8b\u4ee3\u7801\uff1a\u4e3aDate\u539f\u578b\u5bf9\u8c61\u6dfb\u52a0format\u65b9\u6cd5 Date.prototype.format = function    \u2026 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[194,189],"tags":[],"_links":{"self":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts\/8876"}],"collection":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8876"}],"version-history":[{"count":1,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/8876\/revisions"}],"predecessor-version":[{"id":8877,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/8876\/revisions\/8877"}],"wp:attachment":[{"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8876"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8876"},{"taxonomy":"post_tag","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}