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 0000000000000000000000000000000000000000..6b390d35c8546a08ede6396a551b2636cb7da353 --- /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 来简化异步代码。 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 0000000000000000000000000000000000000000..3dc068a2155bc761b6b67b74b3f26d8e78c21598 --- /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。