Ejemplo de sintaxis de JavaScript

Ejemplo mas avanzado

 

Este código de muestra muestra varias características de JavaScript.

/ * Encuentra el múltiplo común más bajo (MCM) de dos números * /
función LCMCalculator (x, y) {// función constructora
  var checkInt = function (x) {// función interna
    si (x% 1! == 0) {
      lanzar nuevo TypeError (x + "no es un entero"); // var a = mouseX
    };

    volver x
  }
  this.a = checkInt (x)
    // los puntos y coma ^^^^ son opcionales, una nueva línea es suficiente
  this.b = checkInt (y);

}
// El prototipo de instancias de objeto creado por un constructor es
// la propiedad "prototipo" de ese constructor.
LCMCalculator.prototype = {// literal del objeto
  constructor: LCMCalculator, // al reasignar un prototipo, establece la propiedad del constructor adecuadamente
  gcd: function () {// método que calcula el mayor divisor común
    // Algoritmo euclidiano:
    var a = Math.abs (this.a),
      b = Math.abs (this.b),
      t
    si (a <b) {
      // variables de intercambio
      // t = b; b = a; a = t;
      [a, b] = [b, a]; // swap usando la tarea de desestructuración (ES6)
    }
    mientras (b! == 0) {
      t = b;
      b = a% b;
      a = t;
    }
    // Solo es necesario calcular GCD una vez, así que "redefine" este método.
    // (En realidad no es una redefinición, está definida en la propia instancia,
    // de modo que this.gcd se refiera a esta "redefinición" en lugar de LCMCalculator.prototype.gcd.
    // Tenga en cuenta que esto conduce a un resultado incorrecto si los miembros del objeto LCMCalculator "a" y / o "b" se modifican posteriormente.)
    // También, 'gcd' === "gcd", este ['gcd'] === this.gcd
    este ['gcd'] = función () {
      devuelve un
    };
    devuelve un
  }
  // Los nombres de las propiedades de los objetos se pueden especificar mediante cadenas delimitadas por comillas dobles (") o simples (').
  mcm: función () {
    // Los nombres de variables no coinciden con las propiedades del objeto, por ejemplo, | lcm | no es | this.lcm |.
    // no usar | this.a * this.b | para evitar problemas de precisión en la PF
    var lcm = this.a / this.gcd () * this.b;
    // Solo es necesario calcular el mcm una vez, así que "redefine" este método.
    this.lcm = function () {
      volver mcm;
    };
    volver mcm;
  }
  toString: function () {
    devuelve "LCMCalculator: a =" + this.a + ", b =" + this.b;
  }
};

// Definir la función de salida genérica; Esta implementación solo funciona para navegadores web.
función de salida (x) {
  document.body.appendChild (document.createTextNode (x));
  document.body.appendChild (document.createElement ('br'));
}

// Nota: el mapa de Array () y forEach () están definidos en JavaScript 1.6.
// Se utilizan aquí para demostrar la naturaleza funcional inherente de JavaScript.
El
  [25, 55],
  [21, 56],
  [22, 58],
  [28, 56]
] .map (function (pair) {// array literal + función de mapeo
    devolver el nuevo LCMCalculator (par [0], par [1]);
  }). sort ((a, b) => a.lcm () - b.lcm ()) // sort con esta función comparativa; => es una forma abreviada de una función, llamada "función de flecha"
  .forEach (printResult);

función printResult (obj) {
  salida (obj + ", gcd =" + obj.gcd () + ", lcm =" + obj.lcm ());
}
La siguiente salida debe mostrarse en la ventana del navegador.

LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56
LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168
LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275
LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638

(0 votes)