๐ฅใ้ข่ฏๅฟ ่ใ้ญๅ ๅ จ่งฃๆ๏ผไปๅฎไนใไผ็ผบ็นๅฐ React ้ท้ฑไธๆกๆถๆบ็ ๏ผไธ็ฏๆๅฎๆๆ่็น๏ผ
๐ ๅไฝๅๅค้ข่ฏ็ๅๅญฆๅคงๅฎถๅฅฝ๏ผ
ๅจๅ็ซฏ้ข่ฏไธญ๏ผโ้ญๅ โ ๆฏๅบ็ฐ้ข็ๆ้ซ็ๅบ็ก้ขไนไธ๏ผไนๆฏๅบๅๅ้ไบบๆทฑๅบฆ็ๅ ณ้ฎ้ขใๅพๅคๅๅญฆๅจๅ็ญๆถๅฎนๆ้ๆผ่ฆ็น๏ผๆ่ ่ฏดไธๆธ ๅฎๅจๆกๆถๅบๅฑ็ๅฎ้ ๅบ็จใ
ไปๅคฉๆๆๅ ณไบ้ญๅ ็ๆๆๆ ธๅฟๅนฒ่ดง๏ผๅฎไนใๅฝขๆๆกไปถใไผ็ผบ็นใๅบ็จๅบๆฏใ้ข่ฏๆ ๅๅ็ญๆจกๆฟใๆกๆถๅบๅฑๅ็๏ผๅ จ้จๆด็ๅบๆฅไบใๅปบ่ฎฎ็ดๆฅๆถ่๏ผ้ข่ฏๅๅๅค่่ฏต๏ผ ๐
ไธใ้ญๅ ็ๆ ธๅฟๅฎไนไธๅฝขๆ
1. ไปไนๆฏ้ญๅ ๏ผ
ๅฎไน๏ผ้ญๅ ๆ็ๆฏ้ฃไบๅผ็จไบๅฆไธไธชๅฝๆฐไฝ็จๅไธญๅ้็ๅฝๆฐใ
ไปๆดๆทฑๅฑ็่งๅบฆ็่งฃ๏ผ
- ๐ฏ ๅฎๆฏไธไธชๅฝๆฐ๏ผๆๆ่ฎฟ้ฎๅฆไธไธชๅฝๆฐไฝ็จๅไธญ็ๅ้ๅๅฝๆฐใ
- ๐ง ๅฎๅญๅจ็่ฏฅๅฝๆฐๅๅฃฐๆ่ฟไธชๅฝๆฐๆถ็่ฏๆณ็ฏๅขใ
- ๐ก๏ธ ๅฎๆฏไธ็งๅฝขๆ็งๆไธไธๆ๏ผๅนถไธไฟๅญๅไฟๆค็งๆๅ้็ๆบๅถใ
2. ้ญๅ ็ๅฝขๆๆกไปถ
ๅฟ ้กปๅๆถๆปก่ถณไปฅไธไธค็น๏ผ
- ๅฝๆฐๅตๅฅ๏ผไธไธชๅฝๆฐๅญๅจไบๅฆไธไธชๅฝๆฐไธญใ
- ๅ้ๅผ็จ๏ผๅ ้จๅฝๆฐๅผ็จไบๅค้จๅฝๆฐ็ๅฑ้จๅ้ใ
3. ไปโๅฝๆฐ่งๅบฆโ็้ญๅ ็ๆฌ่ดจ
ๆไปฌๅฏไปฅ้่ฟๅฏนๆฏๆญฃๅธธๅฝๆฐไธ้ญๅ ๅฝๆฐ็็ๅฝๅจๆๆฅ็่งฃ๏ผ
| ๅบๆฏ | ๆง่กๆต็จ | ๅ ๅญ็ถๆ | ็ปๆ |
|---|---|---|---|
| โ ๆญฃๅธธๆ ๅต | ๅฝๆฐๆง่กๅฎๆฏ โ ๅบๆ | ่ขซโๆฅๆโๅๅซ๏ผ็ซๅณ้ๆฏ | ไธไธๆ้ๆพ๏ผๅ้ๆถๅคฑ |
| โ ๏ธ ็นๆฎๆ ๅต (้ญๅ ) | ๅฝๆฐไธไธๆๅฎๆ โ ไปๆๅผ็จ | ๅ ้จๅฝๆฐ่ขซๅค้จๅ ็จ๏ผๆ ๆณๅบๆ | ไธไธๆไธ่ขซ้ๆฏ๏ผ้ฟๆ้ฉป็ |
๐ก ๆ ธๅฟ็ป่ฎบ๏ผ ๅฝไปฃ็ ไธญไป็ถๆไธ่ฅฟ๏ผๅ ้จๅฝๆฐ๏ผ่ขซๆง่กไธไธๆไปฅๅค็ๅ ็ด ๅ ็จๆถ๏ผ่ฏฅไธไธๆๅฐฑไธไผ่ขซๅบๆ ้ๆพใ่ฟ็งโไธ่ขซ้ๆฏ็ไธไธๆโ๏ผๅฐฑๆฏ้ญๅ ็ๆฌ่ดจใ
ไบใ้ญๅ ็ไผ็ผบ็น๏ผ้ข่ฏ้ซ้ข็น๏ผ
โ ไผ็น
- ๅ้้ฟๆ้ฉปๆ๏ผๅฏไปฅ่ฎฉๅ้้ฟๆ้ฉปๆๅจๅ ๅญไธญ๏ผๅฎ็ฐ็ถๆไฟๆใ
- ๆฐๆฎ็งๆๅ๏ผ่ฎฉๅ้็งๆๅ๏ผ้ฟๅ ๅ จๅฑๆฑกๆ๏ผๆจกไปฟๅ็บงไฝ็จๅ๏ผใ
- ๆจกๆๅ็บงไฝ็จๅ๏ผๅจ ES6
let/constๆฎๅๅ๏ผ่ฟๆฏไธป่ฆ็่งฃๅณๆนๆกใ
โ ็ผบ็นไธ้ฃ้ฉ
- ๅ ๅญๆถ่ๅคง๏ผ้ญๅ ๅฏไปฅ่ฎฟ้ฎๅฐๅฝๅๅฝๆฐๅค็ๅ้๏ผ่ฟๅฏผ่ดๅค้จๅฝๆฐ็ๆดปๅจๅฏน่ฑกๅนถไธ่ฝๅจๅฎๆง่กๅฎๆฏๅ่ขซ้ๆฏใๅ ไธบๅจ้ญๅ ๅฝๆฐไธญไป็ถไฟๆ็ๅฏนๅฎ็ๅผ็จ๏ผๅชๆๅจ้ญๅ ๅฝๆฐ่ขซ้ๆฏไปฅๅ๏ผๅค้จๅ้ๆไผ่ขซ้ๆฏใ
- ๆง่ฝ้ฎ้ข๏ผไธ่ฝๆปฅ็จ้ญๅ ๏ผๅฆๅไผ้ ๆ็ฝ้กต็ๆง่ฝ้ฎ้ข๏ผ็่ณๅฏผ่ดๅ ๅญๆณๆผ๏ผๅ้ไธไผ่ขซๅๅพๅๆถๆบๅถๅๆถ๏ผใ
๐ก ่งฃๅณๆนๆณ
ๅจ้ๅบๅฝๆฐไนๅ๏ผๅฐไธไฝฟ็จ็ๅฑ้จๅ้ๅ
จ้จๅ ้ค๏ผๆๅจ็ฝฎไธบ null๏ผ๏ผๅๆญๅผ็จ้พใ
function example() {
let data = new Array(1000).fill('*');
function inner() {
console.log(data.length);
}
// ไผๅ๏ผๆๅจ่งฃ้คๅผ็จ
data = null;
return inner;
}
ไธใ้ญๅ ็ๅบ็จๅบๆฏ
้ญๅ ไธไป ไป ๆฏ็่ฎบ๏ผๅฎๅจๅฎ้ ๅผๅไธญๆ ๅคไธๅจ๏ผ
- ๐ ่ฎฉๅ้ๅๆ็งๆ็๏ผๅฎ็ฐๆจกๅๅ็ผ็จ๏ผ้่ๅ ้จๅฎ็ฐ็ป่ใ
const createCache = () => {
//ไธๅฏ็ดๆฅ่ฎฟ้ฎdata const data = {};
return {
set: function (key, val) { data[key] = val;},
get: function (key, val) { return data[key];},
}
- ๐งฑ ๆจกไปฟๅ็บงไฝ็จๅ๏ผ่งฃๅณๅ้ๆๅๅไฝ็จๅๆฑกๆ้ฎ้ขใ
const Counter = (function() {
let count = 0; // ็งๆๅ้
return {
add: () => count++,
get: () => count
};
})();
- ๐ ่งฃๅณ็ปๅ ธ้ฎ้ข๏ผ่งฃๅณๅพช็ฏไธญ i ็้ฎ้ข๏ผๅฆ var ๅจ setTimeout ไธญ็็ปๅ ธๆกไพ๏ผใ
// โ ้่ฏฏ็คบ่
for (var i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 1000); // ่พๅบ 5 ไธช 5
}
// โ
้ญๅ
่งฃๆณ
for (var i = 0; i < 5; i++) {
(function(j) {
setTimeout(() => console.log(j), 1000); // ่พๅบ 0, 1, 2, 3, 4
})(i);
}
- โก ๆง่ฝไผๅ๏ผ้ฒๆ๏ผDebounce๏ผๅ่ๆต๏ผThrottle๏ผ็ๆ ธๅฟๅฎ็ฐๅ็ใ
function debounce(fn, delay) {
let timer = null; // ้ญๅ
ไฟๅญ timer
return function(...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => fn.apply(this, args), delay);
};
}
- ๐ ๅฝๆฐๅผ็ผ็จ๏ผๆฏ้ๅ๏ผCurrying๏ผ็ๅฎ็ฐๅบ็กใ
โ ๏ธ ๆณจๆไธไธชโไผช็งๆโ็ BUG๏ผ ่ฝ็ถ้ญๅ ๅฏไปฅ่พพๅฐ็งๆๅ้ๆ็งๆๅฝๆฐ็ๆๆ๏ผไฝๅฎ้ ไธๅญๅจ BUGใ้่ฟ็นๅฎ็ๆๆฎต๏ผๅฆๅฉ็จๅๅ้พๆ็นๆฎ่ฐ็จๆนๅผ๏ผ๏ผไปฃ็ ไป็ถๅฏ่ฝ่ฎฟ้ฎๅฐ้ญๅ ็โ็งๆๅ้โใๆไปฅๅจ่ฎพ่ฎกๆถ่ฆไฟๆ่ญฆๆ
ๅใๆกๆถๅบๅฑๅฏน้ญๅ ็ไฝฟ็จ๏ผๅ ๅ้กน๏ผ
ๅฆๆไฝ ่ฝๅจ้ข่ฏไธญๆๅฐๆกๆถๆบ็ ไธญ้ญๅ ็ๅบ็จ๏ผ็ปๅฏนไผ่ฎฉ้ข่ฏๅฎ็ผๅไธไบฎ๏ผ
- React Hooks๏ผuseEffect ไธญๅญๅจ่ๅ็้ญๅ ้ท้ฑ๏ผStale Closure๏ผ๏ผๅณๅ่ฐๅฝๆฐๆ่ทไบ่ฟๆ็็ถๆๅผใ
- React HOC๏ผ้ซ้ถ็ปไปถๅคง้ไฝฟ็จ้ญๅ ๆฅๆณจๅ ฅ propsใ
- Promise ๅฎ็ฐ๏ผๅจ Promise ็ๅ่ฐๆฐ็ปไธญ๏ผๅญๅจ value ๅ reason ๅฐฑๆฏๅฉ็จ้ญๅ ๆๅญ็ถๆใ
- Generator ๅผๆญฅๅบ็จ๏ผๅฆ co ๆจกๅๆบ็ ไธญ๏ผๅฉ็จ้ญๅ ็ปๅฎ this ๅๅค็ๅผๆญฅๆต็จ๏ผๅ่ ECMAScript 6 ๅ ฅ้จ๏ผใ
- ๅ ถไป๏ผๅ็งไธญ้ดไปถใไบไปถ็ปๅฎ็ญๅบๅฑ้ป่พ
ไบใ๐ฅ ้ข่ฏโๅ่ฏดโๆ ๅๅ็ญๆจกๆฟ
ๅฆๆ้ข่ฏๅฎ้ฎ๏ผโ่ฏทไป็ปไธไธ้ญๅ โ๏ผ่ฏท็ดๆฅๆไปฅไธ้ป่พๅ็ญ๏ผๆก็ๆธ ๆฐ๏ผ่ฆ็ๅ จ้ข๏ผ
1๏ธโฃ ้ญๅ ๆฏไปไน๏ผ
โ้ญๅ ๆฏๆๆๆ่ฎฟ้ฎๅฆไธไธชๅฝๆฐไฝ็จๅไธญๅ้็ๅฝๆฐใ้ๅธธ่กจ็ฐไธบไธไธชๅฝๆฐไธญๅ ๅซๅฆไธไธชๅฝๆฐใไปๆฌ่ดจไธ่ฎฒ๏ผๅฎๅญๅจ็่ฏฅๅฝๆฐๅๅฃฐๆ่ฟไธชๅฝๆฐๆถ็่ฏๆณ็ฏๅข๏ผๅฝขๆไบไธ็ง็งๆไธไธๆ๏ผ็จไบไฟๅญๅไฟๆค็งๆๅ้ใโ
2๏ธโฃ ่กจ็ฐๅฝขๅผๆฏๆๆ ท็๏ผ
โไธป่ฆ่กจ็ฐไธบไธค็น๏ผ
- ๅฝๆฐๅตๅฅ๏ผไธไธชๅฝๆฐๅญๅจไบๅฆไธไธชๅฝๆฐไธญ๏ผ
- ๅ้ๅผ็จ๏ผๅ ้จๅฝๆฐๅฏไปฅ่ฎฟ้ฎๅฐ็ถ็บงๅฝๆฐ็ๅ้๏ผๅนถไธ่ฟไบๅ้ไธไผๅ ไธบ็ถ็บงๅฝๆฐๆง่กๅฎๆฏ่่ขซ้ๆฏใโ
3๏ธโฃ ้ญๅ ็ไฝ็จๅๅบ็จๅบๆฏ๏ผ
โไฝ็จไธป่ฆๆไธ็น๏ผ
- ้่ๅ้๏ผ้ฟๅ ๅ จๅฑๆฑกๆ๏ผ
- ่ฏปๅๅ ้จๅ้๏ผๅ ่ฎธๅค้จ่ฎฟ้ฎๅฝๆฐๅ ้จ็ๅฑ้จๅ้๏ผ
- ๆฐๆฎ็งๆๅ๏ผ่พพๅฐ็งๆๅ้ๆ็งๆๅฝๆฐ็ๆๆ๏ผ่ฝ็ถ็่ฎบไธๅญๅจ่ขซ่ฎฟ้ฎ็ BUG๏ผใ
ๅธธ่งๅบ็จๅบๆฏๅ ๆฌ๏ผ
- ๆจกๅๅๅผๅ
- ่งฃๅณๅพช็ฏไธญ
i็ๅๅผ้ฎ้ข- ๅฎ็ฐ้ฒๆ๏ผDebounce๏ผๅ่ๆต๏ผThrottle๏ผ
- ๆฏ้ๅ๏ผCurrying๏ผ
- ๆกๆถๅบๅฑๅบ็จ๏ผๅฆ React ็
useEffectใPromiseๅฎ็ฐใcoๆจกๅ็ญ๏ผโ
4๏ธโฃ ้ญๅ ๅธฆๆฅ็้ฎ้ขๅ่งฃๅณ๏ผ
โ็ผบ็น๏ผ็ฑไบๅ้ไธไผ่ขซๅๅพๅๆถๆบๅถ็ซๅณๅๆถ๏ผๅฎนๆ้ ๆๅ ๅญๆถ่่ฟๅคง๏ผ็่ณๅฏผ่ดๅ ๅญๆณๆผใ
่งฃๅณๆนๆณ๏ผๅจไธ้่ฆไฝฟ็จๆถ๏ผๅๆถๅฐไธไฝฟ็จ็ๅฑ้จๅ้ๅ ้ค๏ผ็ฝฎไธบ
null๏ผ๏ผๆ่ ้ฟๅ ไธๅฟ ่ฆ็้ญๅ ๅตๅฅใโ
๐ ๆป็ป
้ญๅ ๆฏ JavaScript ไธญๆๅผบๅคง็็นๆงไนไธ๏ผไนๆฏไธๆๅๅๅใ
- โจ ็จๅพๅฅฝ๏ผไปฃ็ ไผ้ ใๆจกๅๅใๅ่ฝๅผบๅคงใ
- ๐ฃ ็จไธๅฅฝ๏ผๅ ๅญๆณๆผใๆง่ฝไธ้ใBug ้พๅฏปใ
PS๏ผๆไธชๅฐๅนฟๅ๐
ๆๆฏ24ๅฑๅ็ซฏ๏ผๆฟไบๅ ซไธชๅคงๅoffer๏ผๅคง้จๅsspใๆ่ฟๅจ่พ ๅฏผไธไบๅๅญฆ๏ผๅคงๅคๆฐๅๅญฆ้ฝๆฟๅฐไบๅฟไปช็ๅคงๅoffer๏ผๆๅ ด่ถฃ็26-28ๅฑๅๅญฆๅฏไปฅ็งไฟกๆไบ่งฃๅ๏ผๆทฑๅบฆๅ ซ่กๆใssp้กน็ฎใ้กถ็บง็ฎๅไฟฎๆน๏ผๆๆๅ ่ฃ ้กน็ฎ้้พ็นใๆจกๆ้ข่ฏ็ญๅ จๆต็จๆๅก๏ผ
#ๅ็ซฏ##ๆๆๅฎไน ##ๆฅๆ##้ข่ฏไนๅๅบ่ฏฅๅฆไฝๅๅค๏ผ#
ๆฅ็1้็้ขๅ่งฃๆ