21 Востаннє редагувалося sergii.zhuravell (22.08.2018 06:17:55)

Re: Замикання

[0]==![0] //True

- порівняння двох об'єктів і вони звісно не рівні (об'єкти порівнюються не за значенням, а за посиланням) - typeof [0]  // Object

Array(3)==",," //True

- 1. Array(3) створює масив з 3 пустих елементів (багато хто з початківців вважає що буде створено масив з одного елементу) 2. масив буде приведено до строки (так як використовується == для порівняння) і отримаємо ",," що дорівнює правій частині виразу порівняння

Про цифри - ви перевищили значення константи MAX_SAFE_INTEGER https://developer.mozilla.org/uk/docs/W … FE_INTEGER (до речі, стаття не закінчена, можемо долучатися до перекладу))

Подякували: leofun011

22

Re: Замикання

FakiNyan написав:
koala написав:
FakiNyan написав:

мабуть, різні реалізації інтерпретатора

На одному сайті?
Просто в першому випадку currNum лишався одним і тим самим, а в другому - постійно замінювався на this. І цей this був не тотожним.

не зрозумів.


Привіт) Якщо не проти, я можу спробувати пояснити.

В першому випадку currNum постійно замінювалась на значення this (тобно на число що зберігається в b).
В другому випадку вже код коректніший - на першому заході currNum дорівнює undefined, тому автор і робить перевірку змінної currNum і якщо вона undefined або нулл, то присвоює їй значення this (яке буде постійно однаковим).

if (!currNum) currNum=this;

Присвоювання лише один раз відбувається, тому при наступних викликах функції decrement для розрахунків вже використовується значення змінної currNum (яка зберігається в замиканні)

23

Re: Замикання

я вже давно зрозумів, насправді

24

Re: Замикання

Ок! Просто хотів допомогти) Я тут новенький, розглядаюся може кому треба допомога)