Hirdetés

Keresés

Új hozzászólás Aktív témák

  • cattus
    addikt

    Üdvözlet!

    Volt nemrég itt a fórumon téma, hogy a JavaScript mindössze 1 szálon fut.
    Néha ezt a tényt be is bizonyítja. Mégis érdekes, hogy ha van egy ilyen kódom:

    let value = getValue();
    function getValue() {
    return true;
    }
    myFunction(value);
    .
    .
    .
    .
    function myFunction(x) {
    //
    }

    ...akkor a console hibát dob vissza, miszerint: 'x is not definied'.

    Kérdem én: Ha 1 szálon fut, akkor követnie kellene a műveleti sorrendet (fentről lefelé). Ilyen esetben miért nem történik meg? Nyílván getValue(); nem csak egy egysoros kód, hanem egy feltételrendszer. Mégis a program az előtt futtatná myFunction(x);-et, mielőtt visszakapná value a getValue(); értékét.
    Ez az én olvasatomban azt jelentené, hogy párhuzamosan fut két function, és ha nincs visszatérő érték az egyikből addig, amíg a másik el nem jut arra a pontra, hogy használná, akkor hiba lesz az eredmény... :F

    Nem tudom hol futtatod / mi van még a kódodban, de nekem nem dob hibát. Nem is kéne neki, hiszen x az egy bemeneti paraméter, nem kell hogy definiálva legyen korábban.

    Rossz az olvasatod, a hoisting talán magyarázatot ad.

  • martonx
    veterán

    Üdvözlet!

    Volt nemrég itt a fórumon téma, hogy a JavaScript mindössze 1 szálon fut.
    Néha ezt a tényt be is bizonyítja. Mégis érdekes, hogy ha van egy ilyen kódom:

    let value = getValue();
    function getValue() {
    return true;
    }
    myFunction(value);
    .
    .
    .
    .
    function myFunction(x) {
    //
    }

    ...akkor a console hibát dob vissza, miszerint: 'x is not definied'.

    Kérdem én: Ha 1 szálon fut, akkor követnie kellene a műveleti sorrendet (fentről lefelé). Ilyen esetben miért nem történik meg? Nyílván getValue(); nem csak egy egysoros kód, hanem egy feltételrendszer. Mégis a program az előtt futtatná myFunction(x);-et, mielőtt visszakapná value a getValue(); értékét.
    Ez az én olvasatomban azt jelentené, hogy párhuzamosan fut két function, és ha nincs visszatérő érték az egyikből addig, amíg a másik el nem jut arra a pontra, hogy használná, akkor hiba lesz az eredmény... :F

    JSFiddle - Code Playground

    Kérdés, hogy hova rakod a console-t? :D
    Egyébként továbbra is így jsfiddle-el kellene szemléltetni a kérdést.

  • hiperFizikus
    senior tag

    Üdvözlet!

    Volt nemrég itt a fórumon téma, hogy a JavaScript mindössze 1 szálon fut.
    Néha ezt a tényt be is bizonyítja. Mégis érdekes, hogy ha van egy ilyen kódom:

    let value = getValue();
    function getValue() {
    return true;
    }
    myFunction(value);
    .
    .
    .
    .
    function myFunction(x) {
    //
    }

    ...akkor a console hibát dob vissza, miszerint: 'x is not definied'.

    Kérdem én: Ha 1 szálon fut, akkor követnie kellene a műveleti sorrendet (fentről lefelé). Ilyen esetben miért nem történik meg? Nyílván getValue(); nem csak egy egysoros kód, hanem egy feltételrendszer. Mégis a program az előtt futtatná myFunction(x);-et, mielőtt visszakapná value a getValue(); értékét.
    Ez az én olvasatomban azt jelentené, hogy párhuzamosan fut két function, és ha nincs visszatérő érték az egyikből addig, amíg a másik el nem jut arra a pontra, hogy használná, akkor hiba lesz az eredmény... :F

    Csak úgy kutyafuttában ránéztem, nem ez-e a bajod vele:

    let value = getValue();
    function getValue() {
      return true;
    }

    function myFunction(x) {
      //
    }
    .
    .
    myFunction(value);

    .
    .

    Vagyis csak azt hívhatod meg ami előtte már deklarálva van !

  • nevemfel
    senior tag

    Üdvözlet!

    Volt nemrég itt a fórumon téma, hogy a JavaScript mindössze 1 szálon fut.
    Néha ezt a tényt be is bizonyítja. Mégis érdekes, hogy ha van egy ilyen kódom:

    let value = getValue();
    function getValue() {
    return true;
    }
    myFunction(value);
    .
    .
    .
    .
    function myFunction(x) {
    //
    }

    ...akkor a console hibát dob vissza, miszerint: 'x is not definied'.

    Kérdem én: Ha 1 szálon fut, akkor követnie kellene a műveleti sorrendet (fentről lefelé). Ilyen esetben miért nem történik meg? Nyílván getValue(); nem csak egy egysoros kód, hanem egy feltételrendszer. Mégis a program az előtt futtatná myFunction(x);-et, mielőtt visszakapná value a getValue(); értékét.
    Ez az én olvasatomban azt jelentené, hogy párhuzamosan fut két function, és ha nincs visszatérő érték az egyikből addig, amíg a másik el nem jut arra a pontra, hogy használná, akkor hiba lesz az eredmény... :F

    Ha a console.log-ot a myFunction-ba rakod, akkor true-t ír ki ezen példa alapján.

Új hozzászólás Aktív témák

Hirdetés