Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ for (let i = 0; i < 3; i++) {

#### Answer: C

Because of the event queue in JavaScript, the `setTimeout` callback function is called _after_ the loop has been executed. Since the variable `i` in the first loop was declared using the `var` keyword, this value was global. During the loop, we incremented the value of `i` by `1` each time, using the unary operator `++`. By the time the `setTimeout` callback function was invoked, `i` was equal to `3` in the first example.
Because of the event queue in JavaScript, the `setTimeout` callback function is called _after_ the loop has been executed. Since the variable `i` in the first loop was declared using the `var` keyword, this value was global. During the loop, we incremented the value of `i` by `1` each time, using the unary operator `++`. By the time the `setTimeout` callback function was invoked, `i` was equal to `3` in the first example. Due to hoisting, `var` allocates a single memory slot for the variable, so each iteration overwrites the same variable rather than creating a new one.

In the second loop, the variable `i` was declared using the `let` keyword: variables declared with the `let` (and `const`) keyword are block-scoped (a block is anything between `{ }`). During each iteration, `i` will have a new value, and each value is scoped inside the loop.
In the second loop, the variable `i` was declared using the `let` keyword: variables declared with the `let` (and `const`) keyword are block-scoped (a block is anything between `{ }`). During each iteration, `i` will have a new value, and each value is scoped inside the loop. Unlike `var`, `let` creates a new binding (a new memory slot) for each iteration, which is why each `setTimeout` callback captures a different value.

</p>
</details>
Expand Down
4 changes: 2 additions & 2 deletions ar-AR/README_AR.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ for (let i = 0; i < 3; i++) {
<div dir='rtl'>
الإجابة هي الخيار الثالث: C

بسبب ترتيب تسلسل الأحداث في الجافا سكريبت, دالة `setTimeout` والتي هي دالة من نوع callbackقد تم استدعائها بعد ان تم تنفيذ ال loop. بماأن المتغير `i` في الloop الاولى قد تم تعريفه عن طريق الكلمة المفتاحية `var` فإن هذه القيمة هي global. أثناء تنفيذ هذه ال loop قد تم إضافة 1 الى المتغير `var` في كل دورة باستخدام العملية `++`. بنهاية الدورة و عندما تم استدعاء الدالة `setTimeout` كانت قيمة المتغير `i` قد أصبحت تساوي `3` في المثال الأول.
في الloop الثانية ,تم تعريف المتغير `i` باستخدام الكلمة المفتاحية `let` المتغيرات التي يتم تعريفها باستخدام الكلمات المفتاحية `let` و `const` هي متغيرات تنتمي فقط للBlock الذي تم تعريفها بداخله, والذي هو بين القوسين, أثناءتنفيذ الloop, سنقوم بالتحصل على قيمة جديدة للمتغير `i` في نهاية كل دورة , وأي قيمة تكون منتمية للScope بداخل الloop.
بسبب ترتيب تسلسل الأحداث في الجافا سكريبت, دالة `setTimeout` والتي هي دالة من نوع callbackقد تم استدعائها بعد ان تم تنفيذ ال loop. بماأن المتغير `i` في الloop الاولى قد تم تعريفه عن طريق الكلمة المفتاحية `var` فإن هذه القيمة هي global. أثناء تنفيذ هذه ال loop قد تم إضافة 1 الى المتغير `var` في كل دورة باستخدام العملية `++`. بنهاية الدورة و عندما تم استدعاء الدالة `setTimeout` كانت قيمة المتغير `i` قد أصبحت تساوي `3` في المثال الأول. بسبب الـ hoisting، `var` يخصص مساحة ذاكرة واحدة للمتغير، لذلك كل تكرار يعيد كتابة نفس المتغير بدلاً من إنشاء متغير جديد.
في الloop الثانية ,تم تعريف المتغير `i` باستخدام الكلمة المفتاحية `let` المتغيرات التي يتم تعريفها باستخدام الكلمات المفتاحية `let` و `const` هي متغيرات تنتمي فقط للBlock الذي تم تعريفها بداخله, والذي هو بين القوسين, أثناءتنفيذ الloop, سنقوم بالتحصل على قيمة جديدة للمتغير `i` في نهاية كل دورة , وأي قيمة تكون منتمية للScope بداخل الloop. على عكس `var`، `let` ينشئ ربطاً جديداً (مساحة ذاكرة جديدة) لكل تكرار، ولهذا السبب كل callback لـ `setTimeout` يلتقط قيمة مختلفة.

</p>
</details>
Expand Down
4 changes: 2 additions & 2 deletions ar-EG/README_ar-EG.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,9 @@ for (let i = 0; i < 3; i++) {

#### الاجابة: ج

الفنكشن اللي`setTimeout` بتشغلها بيتم تشغليها _بعد_ ما اللووب تخلص بسبب قائمة الاحداث `event queue` في جافاسكربت. بما ان اول لووب اتعملت كان المتغير بتاعها معمول بكلمة `var` اذا كان `global` وبالتالي في اللوب احنا كل شوية كنا بنزود `i` لحد ما وصل ل 3 و _بعد_ كده قامت الفنكشن اللي جوا `setTimeout` اشتغلت. ده كده اول لووب.
الفنكشن اللي`setTimeout` بتشغلها بيتم تشغليها _بعد_ ما اللووب تخلص بسبب قائمة الاحداث `event queue` في جافاسكربت. بما ان اول لووب اتعملت كان المتغير بتاعها معمول بكلمة `var` اذا كان `global` وبالتالي في اللوب احنا كل شوية كنا بنزود `i` لحد ما وصل ل 3 و _بعد_ كده قامت الفنكشن اللي جوا `setTimeout` اشتغلت. ده كده اول لووب. بسبب الـ hoisting، `var` بيخصص مساحة ذاكرة واحدة للمتغير، فكل تكرار بيعيد كتابة نفس المتغير بدل ما يعمل متغير جديد.

اما بقى في تاني لووب المتغير `i` كان معمول بكلمة `let` و بالتالي المنظور بتاعه `scope` محدد بالاقواس المحيطة بيه `block` وبالتالي في كل مره اللوب هتزيد هيكون في قيمة جديدة تماماً للمتغير `i` و كل قيمة من دول موجوده جوا ال`block scope` اللي هي حصلت فيه, و بالتالي هيبقى كأن البرنامج شايف 3 قيم للمتغير `i` في 3 اماكن مختلفه!
اما بقى في تاني لووب المتغير `i` كان معمول بكلمة `let` و بالتالي المنظور بتاعه `scope` محدد بالاقواس المحيطة بيه `block` وبالتالي في كل مره اللوب هتزيد هيكون في قيمة جديدة تماماً للمتغير `i` و كل قيمة من دول موجوده جوا ال`block scope` اللي هي حصلت فيه, و بالتالي هيبقى كأن البرنامج شايف 3 قيم للمتغير `i` في 3 اماكن مختلفه! عكس `var`، `let` بيعمل ربط جديد (مساحة ذاكرة جديدة) لكل تكرار، وعلشان كده كل callback بتاع `setTimeout` بيلتقط قيمة مختلفة.

</p>
</details>
Expand Down
4 changes: 2 additions & 2 deletions bs-BS/README-bs_BS.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,12 @@ varijabla `i` u prvoj petlji je deklarirana pomoću ključne riječi` var`,
ta je vrijednost bila globalna. Tijekom petlje povećavamo vrijednost `i`
svaki put '1', koristeći unarni operator `++`. Do vremena
Pozvana je function povratnog poziva `setTimeout`,` i` je bila jednaka `3` u
u prvom primjeru.
u prvom primjeru. Zbog hoistinga, `var` dodjeljuje jedan memorijski slot za varijablu, tako da svaka iteracija prepisuje istu varijablu umjesto da stvara novu.

U drugoj petlji, varijabla `i` je deklarirana pomoću` let`
ključna riječ: varijable deklarirane s ključnom riječi `let` (i` const`) su
block-scoped (blok je sve između `{}`). Tijekom svake iteracije,
`i` će imati novu vrijednost, a svaka vrijednost će biti obuhvaćena unutar petlje.
`i` će imati novu vrijednost, a svaka vrijednost će biti obuhvaćena unutar petlje. Za razliku od `var`, `let` stvara novo vezivanje (novi memorijski slot) za svaku iteraciju, zbog čega svaki `setTimeout` callback hvata drugu vrijednost.

</p>
</details>
Expand Down
4 changes: 2 additions & 2 deletions de-DE/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ for (let i = 0; i < 3; i++) {

#### Antwort: C

Aufgrund der Event Queue in JavaScript, wird die Callback Funktion in `setTimeout` _nach_ der Schleife ausgeführt. Da die Variable `i` in der ersten Schleife mit dem `var` Keyword definiert wurde, ist dieser Wert global verfügbar. Während der Schleife wird der Wert von `i` jedesmal mithilfe des `++` Operators um `1` erhöht. Zu dem Zeitpunkt, wenn die Callback Funktion in `setTimeout` aufgerufen wird, ist `i` gleich `3` im ersten Beispiel.
Aufgrund der Event Queue in JavaScript, wird die Callback Funktion in `setTimeout` _nach_ der Schleife ausgeführt. Da die Variable `i` in der ersten Schleife mit dem `var` Keyword definiert wurde, ist dieser Wert global verfügbar. Während der Schleife wird der Wert von `i` jedesmal mithilfe des `++` Operators um `1` erhöht. Zu dem Zeitpunkt, wenn die Callback Funktion in `setTimeout` aufgerufen wird, ist `i` gleich `3` im ersten Beispiel. Aufgrund des Hoistings reserviert `var` einen einzigen Speicherplatz für die Variable, sodass jede Iteration dieselbe Variable überschreibt, anstatt eine neue zu erstellen.

In der zweiten Schleife wurde die Variable `i` mit dem `let` Keyword definiert: Variablen, die mit `let` (oder `const`) deklariert werden sind block-scoped (Ein Block ist alles zwischen `{ }`). Während jedem Durchlauf bekommt `i` einen neuen Wert zugewiesen, der jeweils innerhalb des Scopes der Schleife liegt.
In der zweiten Schleife wurde die Variable `i` mit dem `let` Keyword definiert: Variablen, die mit `let` (oder `const`) deklariert werden sind block-scoped (Ein Block ist alles zwischen `{ }`). Während jedem Durchlauf bekommt `i` einen neuen Wert zugewiesen, der jeweils innerhalb des Scopes der Schleife liegt. Im Gegensatz zu `var` erstellt `let` bei jeder Iteration eine neue Bindung (einen neuen Speicherplatz), weshalb jeder `setTimeout`-Callback einen anderen Wert erfasst.

</p>
</details>
Expand Down
4 changes: 2 additions & 2 deletions es-ES/README-ES.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ for (let i = 0; i < 3; i++) {

#### Respuesta correcta: C

Debido a la cola de eventos en JavaScript, la función `setTimeout` se llama una vez el ciclo se ha ejecutado. Dado que la variable `i` en el primer bucle se declaró utilizando la palabra reservada ` var`, este valor es global. Durante el bucle, incrementamos el valor de `i` en` 1` cada vez, utilizando el operador unario `++`. Cuando se invocó la función `setTimeout`,` i` era igual a `3` en el primer ejemplo.
Debido a la cola de eventos en JavaScript, la función `setTimeout` se llama una vez el ciclo se ha ejecutado. Dado que la variable `i` en el primer bucle se declaró utilizando la palabra reservada ` var`, este valor es global. Durante el bucle, incrementamos el valor de `i` en` 1` cada vez, utilizando el operador unario `++`. Cuando se invocó la función `setTimeout`,` i` era igual a `3` en el primer ejemplo. Debido al hoisting, `var` asigna una única ranura de memoria para la variable, por lo que cada iteración sobrescribe la misma variable en lugar de crear una nueva.

En el segundo bucle, la variable `i` se declaró utilizando la palabra reservada` let`: las variables declaradas con la palabra reservada `let` (y` const`) tienen un ámbito de bloque (un bloque es lo que se encuentra entre `{}`). Durante cada iteración, `i` tendrá un nuevo valor, y cada valor se encuentra dentro del bucle.
En el segundo bucle, la variable `i` se declaró utilizando la palabra reservada` let`: las variables declaradas con la palabra reservada `let` (y` const`) tienen un ámbito de bloque (un bloque es lo que se encuentra entre `{}`). Durante cada iteración, `i` tendrá un nuevo valor, y cada valor se encuentra dentro del bucle. A diferencia de `var`, `let` crea un nuevo enlace (una nueva ranura de memoria) en cada iteración, por lo que cada callback de `setTimeout` captura un valor diferente.

</p>
</details>
Expand Down
4 changes: 2 additions & 2 deletions fr-FR/README_fr-FR.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ for (let i = 0; i < 3; i++) {

#### Réponse : C

À cause du système de queue dans JavaScript, la fonction de rappel _(callback)_ du `setTimeout` est appelée _après_ que la boucle soit exécutée. Comme la variable `i` dans la première boucle est déclarée avec le mot-clé `var`, c'est une variable globale. Pendant la boucle, nous incrémentons la valeur de `i` de `1` à chaque fois, en utilisant l'opérateur arithmétique `++`. Lorsque la fonction de rappel _(callback)_ du `setTimeout` est invoquée, `i` est égal à `3` dans le premier exemple.
À cause du système de queue dans JavaScript, la fonction de rappel _(callback)_ du `setTimeout` est appelée _après_ que la boucle soit exécutée. Comme la variable `i` dans la première boucle est déclarée avec le mot-clé `var`, c'est une variable globale. Pendant la boucle, nous incrémentons la valeur de `i` de `1` à chaque fois, en utilisant l'opérateur arithmétique `++`. Lorsque la fonction de rappel _(callback)_ du `setTimeout` est invoquée, `i` est égal à `3` dans le premier exemple. En raison du hoisting, `var` alloue un seul emplacement mémoire pour la variable, donc chaque itération écrase la même variable au lieu d'en créer une nouvelle.

Dans la seconde boucle, la variable `i` est déclarée avec le mot clé `let` : les variables déclarées avec `let` (et `const`) ont une portée de bloc (tout ce qui est entre `{ }` est considéré comme un bloc). Pendant chaque itération, `i` aura une nouvelle valeur, et chaque valeur sera définie dans la boucle.
Dans la seconde boucle, la variable `i` est déclarée avec le mot clé `let` : les variables déclarées avec `let` (et `const`) ont une portée de bloc (tout ce qui est entre `{ }` est considéré comme un bloc). Pendant chaque itération, `i` aura une nouvelle valeur, et chaque valeur sera définie dans la boucle. Contrairement à `var`, `let` crée une nouvelle liaison (un nouvel emplacement mémoire) à chaque itération, c'est pourquoi chaque callback `setTimeout` capture une valeur différente.

</p>
</details>
Expand Down
4 changes: 2 additions & 2 deletions id-ID/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ for (let i = 0; i < 3; i++) {

#### Jawaban: C

Karena antrean peristiwa di JavaScript, fungsi callback `setTimeout` disebut _after_ loop telah dijalankan. Karena variabel `i` di loop pertama dideklarasikan menggunakan kata kunci` var`, nilai ini adalah global. Selama perulangan, kita menambah nilai `i` sebesar `1` setiap kali, menggunakan operator unary` ++ `. Pada saat fungsi callback `setTimeout` dipanggil,` i` sama dengan `3` di contoh pertama.
Karena antrean peristiwa di JavaScript, fungsi callback `setTimeout` disebut _after_ loop telah dijalankan. Karena variabel `i` di loop pertama dideklarasikan menggunakan kata kunci` var`, nilai ini adalah global. Selama perulangan, kita menambah nilai `i` sebesar `1` setiap kali, menggunakan operator unary` ++ `. Pada saat fungsi callback `setTimeout` dipanggil,` i` sama dengan `3` di contoh pertama. Karena hoisting, `var` mengalokasikan satu slot memori untuk variabel, sehingga setiap iterasi menimpa variabel yang sama daripada membuat yang baru.

Pada perulangan kedua, variabel `i` dideklarasikan menggunakan kata kunci` let`: variabel yang dideklarasikan dengan kata kunci `let` (dan` const`) memiliki cakupan blok (blok adalah apa saja di antara `{}`). Selama setiap iterasi, `i` akan memiliki nilai baru, dan setiap nilai dicakup di dalam loop.
Pada perulangan kedua, variabel `i` dideklarasikan menggunakan kata kunci` let`: variabel yang dideklarasikan dengan kata kunci `let` (dan` const`) memiliki cakupan blok (blok adalah apa saja di antara `{}`). Selama setiap iterasi, `i` akan memiliki nilai baru, dan setiap nilai dicakup di dalam loop. Tidak seperti `var`, `let` membuat binding baru (slot memori baru) untuk setiap iterasi, itulah sebabnya setiap callback `setTimeout` menangkap nilai yang berbeda.
</p>
</details>

Expand Down
4 changes: 2 additions & 2 deletions it-IT/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ for (let i = 0; i < 3; i++) {

#### Risposta: C

A causa della coda degli eventi in JavaScript la funzione di callback `setTimeout` viene chiamata _dopo_ che il loop è stato eseguito. Poiché la variabile `i` nel primo loop è stata dichiarata usando la chiave `var`, questo valore è globale. Durante il loop abbiamo incrementato ogni volta il valore di `i` di `1` usando l'operatore unario `++`. Quando è stata invocata la funzione di callback `setTimeout`, `i` nel primo esempio risultava sin dal principio uguale a `3`.
A causa della coda degli eventi in JavaScript la funzione di callback `setTimeout` viene chiamata _dopo_ che il loop è stato eseguito. Poiché la variabile `i` nel primo loop è stata dichiarata usando la chiave `var`, questo valore è globale. Durante il loop abbiamo incrementato ogni volta il valore di `i` di `1` usando l'operatore unario `++`. Quando è stata invocata la funzione di callback `setTimeout`, `i` nel primo esempio risultava sin dal principio uguale a `3`. A causa dell'hoisting, `var` alloca un singolo slot di memoria per la variabile, quindi ogni iterazione sovrascrive la stessa variabile invece di crearne una nuova.

Nel secondo loop, la variabile `i` è stata dichiarata usando la chiave `let`: le variabili dichiarate con la chiave `let` (e `const`) hanno lo scope del blocco (un blocco è qualsiasi cosa tra `{ }`). Durante ogni iterazione, `i` avrà un nuovo valore e ogni valore avrà lo scope all'interno del loop.
Nel secondo loop, la variabile `i` è stata dichiarata usando la chiave `let`: le variabili dichiarate con la chiave `let` (e `const`) hanno lo scope del blocco (un blocco è qualsiasi cosa tra `{ }`). Durante ogni iterazione, `i` avrà un nuovo valore e ogni valore avrà lo scope all'interno del loop. A differenza di `var`, `let` crea un nuovo binding (un nuovo slot di memoria) per ogni iterazione, motivo per cui ogni callback `setTimeout` cattura un valore diverso.

</p>
</details>
Expand Down
Loading