Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Re:dart

    (Puntos:0)
    por pobrecito hablador el Miércoles, 24 Octubre de 2012, 10:39h (#1322755)
    Una cosa que no tengo clara es si el python tiene variables persistentes de scope de funcion. El Java lo imita levemente si las variables de la funcion son constantes. Un ejemplo seria:

          function foo(a) {
                var bar = a + 2;
                return function() { return bar++; };
          }
          var f = foo(2);

    En coffee script si lo prefieres seria:

          foo = (a) ->
              bar = a + 2
              () -> bar++
          f = foo 2

    En este caso la funcionalidad concreta provocaria que cada vez que se llama a la funcion f esta devuelve un valor incrementado de bar, aunque hiciese mucho de que foo se habria ejecutado y finalizado satisfactoriamente. Y con cada llamada a foo, tendriamos un contador nuevo en una funcion diferente. Reconozco que entender las ventajas de esto es dificil de primera entrada, supongo que por eso ha sido eliminado de casi todos los lenguajes. (No se si el Python)

    Una ventaja del Javascript sobre Python es el tema de la metaprogramación, he visto dar muchos rodeos para intentar hacer algo parecido a la flexibilidad del Javascript, y aun asi, al final acaba dando muchos problemas.

    Y sobre gestion de ambitos, no le falta en absoluto. De hecho entra dentro de variables persistentes en scope de funcion. Es normal que si vienes de fuera del Javascript, no conozcas el concepto y su aplicacion. Si quieres saber mas mirate el NodeJS o bien el JQuery, ambos muy estructurados. En este caso, para encapsular codigo en modules reutilizables, en navegadores, se suele utilizar el siguiente idiom:

    function (namespace) {
          var bar,foo; ...
          namespace.bar = bar;
    } (window);

    El NodeJS ja automaticamente moduliza sin requerir este idiom. Un modulo seria:

    var bar, foo; ...
    module.exports.bar = bar;

    y su uso externo:

    var misc = require("./foo-bar")
    misc.bar()

    Asi que diria que hay que andarse con ojo antes de hablar de algo que no se conoce, especialmente algo como el Javascript: tan sencillo en apariencia que parece que con poco esfuerzo lo tengamos que saber todo, pero tan maleable que puede superar muchas barreras (e incluso introducirlas).
    [ Padre ]
  • 2 respuestas por debajo de tu umbral de lectura actual.