From 70f04d8d36554c3888a375242b662ed3bb816bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E9=87=91=E9=9B=B7?= <135652820@qq.com> Date: Fri, 1 Nov 2024 16:37:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BE=88=E9=9A=BE=E5=8F=91=E7=8E=B0?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E9=97=AD=E5=8C=85=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=BE=AA=E7=8E=AF=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...04\345\276\252\347\216\257\345\217\230\351\207\217.js" | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 "js/\345\276\210\351\232\276\345\217\221\347\216\260\347\232\204\351\227\256\351\242\230\357\274\214\351\227\255\345\214\205\344\270\255\347\232\204\345\276\252\347\216\257\345\217\230\351\207\217.js" diff --git "a/js/\345\276\210\351\232\276\345\217\221\347\216\260\347\232\204\351\227\256\351\242\230\357\274\214\351\227\255\345\214\205\344\270\255\347\232\204\345\276\252\347\216\257\345\217\230\351\207\217.js" "b/js/\345\276\210\351\232\276\345\217\221\347\216\260\347\232\204\351\227\256\351\242\230\357\274\214\351\227\255\345\214\205\344\270\255\347\232\204\345\276\252\347\216\257\345\217\230\351\207\217.js" new file mode 100644 index 0000000..3dc068a --- /dev/null +++ "b/js/\345\276\210\351\232\276\345\217\221\347\216\260\347\232\204\351\227\256\351\242\230\357\274\214\351\227\255\345\214\205\344\270\255\347\232\204\345\276\252\347\216\257\345\217\230\351\207\217.js" @@ -0,0 +1,8 @@ +for (var i = 0; i < 5; i++) { + setTimeout(function () { + console.log(i); + }, 1000); +} + +// 坑爹之处: +// 这段代码会在1秒后连续打印出 5 五次,而不是从 0 到 4。这是因为所有的 setTimeout 回调函数共享同一个 i 变量,而这个变量在循环结束后已经变成了 5。 -- Gitee From 92762cb9147c3a5eaf9bb3b568f840514678b169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E9=87=91=E9=9B=B7?= <135652820@qq.com> Date: Fri, 1 Nov 2024 16:44:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E5=9C=B0=E7=8B=B1=EF=BC=8C=E7=9B=B4=E6=8E=A5=E6=83=B3=E7=A0=B8?= =?UTF-8?q?=E9=94=AE=E7=9B=98=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\233\230\347\232\204\344\273\243\347\240\201.js" | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 "js/\345\274\202\346\255\245\345\233\236\350\260\203\345\234\260\347\213\261\357\274\214\347\233\264\346\216\245\346\203\263\347\240\270\351\224\256\347\233\230\347\232\204\344\273\243\347\240\201.js" diff --git "a/js/\345\274\202\346\255\245\345\233\236\350\260\203\345\234\260\347\213\261\357\274\214\347\233\264\346\216\245\346\203\263\347\240\270\351\224\256\347\233\230\347\232\204\344\273\243\347\240\201.js" "b/js/\345\274\202\346\255\245\345\233\236\350\260\203\345\234\260\347\213\261\357\274\214\347\233\264\346\216\245\346\203\263\347\240\270\351\224\256\347\233\230\347\232\204\344\273\243\347\240\201.js" new file mode 100644 index 0000000..6b390d3 --- /dev/null +++ "b/js/\345\274\202\346\255\245\345\233\236\350\260\203\345\234\260\347\213\261\357\274\214\347\233\264\346\216\245\346\203\263\347\240\270\351\224\256\347\233\230\347\232\204\344\273\243\347\240\201.js" @@ -0,0 +1,13 @@ +fs.readFile("file1.txt", "utf8", function (err, data1) { + if (err) throw err; + fs.readFile("file2.txt", "utf8", function (err, data2) { + if (err) throw err; + fs.readFile("file3.txt", "utf8", function (err, data3) { + if (err) throw err; + console.log(data1 + data2 + data3); + }); + }); +}); + +// 坑爹之处: +// 多层嵌套的异步回调会导致代码难以阅读和维护,这就是所谓的“回调地狱”。随着嵌套层级的增加,代码的可读性和可维护性急剧下降。应该要使用 Promises 或 async/await 来简化异步代码。 -- Gitee