Kurt: Unklare Meldung

Beitrag lesen

Hi Struppi,

ich hab mir nochmal Gedanken über die Unterschiede beider Sprachen gemacht und ich denke die unterschiedlichen Geltungsbereiche von Routine lassen sich durch Perl Namenräume erklären.

Perl merkt sich jede neue Routine in der Symboltabelle des aktuellen Packages, JS hingegen behandelt sie wie lexikale Variablen.

Wenn man also in einer Routine eine andere anlegt ist sie in JS nur im Scope der Mutterroutine sichtbar in Perl jedoch global.

Ciao
  Kurt

Hand auf herz, wann hast du das letzte mal eine Funktion dynamisch redefiniert? Und in welcher Sprache?

In Javascript ist dies öfters nötig, allerdings ist dort das Verhalten anders

function get(val, el) {

return function() { alert(val + ':' + el) };
}
function get2(val, el) {
function f() { alert(val + ':' + el) };
return f;
}

window.onload = function()  {
var all = document.getElementsByTagName('*');
for(var i = 0; i < all.length; i++) {
  var el = all[i];
  el.onclick = get(i, el);
  // el.onclick = get2(i, el);
}

}


>   
> Funktionert beides, in Perl nur das Erste, aber beim zweiten kommt dafür eine Warnung  
>   
> Struppi.
0 54

Unklare Meldung

Thomas
  • perl
  1. 0
    Struppi
  2. 0
    Patrick Andrieu
    1. 0
      Thomas
      1. 0
        Horst
        1. 0
          Thomas
          1. 0
            Struppi
            1. 0
              Horst
        2. 0
          Manuel B.
      2. 0
        Patrick Andrieu
      3. 0
        Daniel Thoma
        1. 0
          Thomas
          1. 0
            Patrick Andrieu
            1. 0
              Thomas
              1. 0
                Struppi
                1. 0
                  Patrick Andrieu
                2. 0
                  Thomas
                  1. 0
                    Struppi
                3. 0
                  Thomas
        2. 0
          Thomas nochmal
          1. 0
            Daniel Thoma
  3. 0
    Thomas
    1. 0
      Struppi
      1. 0
        Thomas
        1. 0
          Struppi
          1. 0
            Thomas
            1. 0
              Struppi
              1. 0
                Thomas
                1. 0
                  Struppi
                2. 0
                  Daniel Thoma
            2. 0
              Siechfred
              1. 0
                Thomas
                1. 0
                  Siechfred
                2. 0
                  Struppi
                  1. 0
                    Thomas
                    1. 0
                      Struppi
                    2. 0
                      Siechfred
                      1. 0
                        Thomas
                        1. 0
                          Kurt
                          1. 0
                            Thomas
                            1. 0
                              Kurt
                              1. 0

                                Kurzversion

                                Kurt
                              2. 0
                                Thomas
                                1. 0
                                  Kurt
                                  1. 0
                                    Thomas
                                    1. 0
                                      Kurt
                                      1. 0
                                        Struppi
                                        1. 0
                                          Kurt
                                        2. 0
                                          Kurt
                                          1. 0
                                            Struppi
                                      2. 0

                                        Klare Funktionsdefinitionen in Perl

                                        Kurt
    2. 0
      Siechfred
      1. 0
        Thomas
        1. 0
          Siechfred