Skip to main content

Array.fill()


Caveat: If you .fill() an Array with an object, all elements refer to the same instance (i.e., the object isn’t cloned)

So if you do something like:
let a = Array(3).fill([]) // create an array named a and fill it with 3 empty array
a[2].push('poop') // push new value to the element array at index 2

expect [ [], [], [2]]
But because all element refer to the same instance, so the result is: [[2], [2], [2]]

More details here: https://2ality.com/2018/12/creating-arrays.html

Comments

Popular posts from this blog

Why Redux?

Redux giúp mình State management  - Quản lý State dễ thở hơn. Nếu bạn đã truyền (passing) props giữa các component thì chắc bạn sẽ gặp 1 lúc mà việc pass đi như vậy phức tạp và rườm rà nếu tụi nó nest nhau quá nhiều tầng, hoặc nhiều component cùng dùng chung một cái state ở đẩu đâu đó, việc passing props vậy đúng là cực hình, phải truyền từng tầng từng tầng một  => code nhiều => thì chắc chắn sẽ nhiều bug hơn (không code thì không bug =)) ). Mà bug này là khóc luôn. Kiểu phải truyền xuống từng tầng một này hay gọi là  Props drilling (also called "threading"). Redux với ý tưởng là sẽ tạo 1 cái " store " to bự chảng, chứa tất cả state mà app bạn cần dùng (share giữa nhiều component). Bạn cứ hiểu như nó là một cái component nằm ở đỉnh tree node của app. mấy cái node dưới sẽ là con nên sẽ access đến store được, chỉ cần connect vào là xong. Cái nào cần dùng thì sẽ " connect " vào cái " store " và dùng state đó thông qua props như thô...

Closures

Closures is (a fancy term for) a function that remembers outside things that are used inside const createPrinter() {   const name = 'Alex'   const printName = () => {     console.log(name)   }   return printName } const myPrinter = createPrinter() myPrinter() // Alex This function that was return from from createPrinter function is called a closure . // Here is printName Closure is a combination of a function and the environment where it was declared .