sobre resumen que programacion lenguaje introduccion etiquetas estructura ensayo con codigos javascript language-features syntactic-sugar

resumen - El mejor azúcar sintáctico de JavaScript



lenguaje de programacion javascript (30)

Al igual que el operador predeterminado, || es el operador de guardia, && .

answer = obj && obj.property

Opuesto a

if (obj) { answer = obj.property; } else { answer = null; }

Aquí hay algunas gemas:

Literales:

var obj = {}; // Object literal, equivalent to var obj = new Object(); var arr = []; // Array literal, equivalent to var arr = new Array(); var regex = /something/; // Regular expression literal, equivalent to var regex = new RegExp(''something'');

Defaults:

arg = arg || ''default''; // if arg evaluates to false, use ''default'', which is the same as: arg = !!arg ? arg : ''default'';

Por supuesto, conocemos funciones anónimas, pero poder tratarlas como literales y ejecutarlas en el acto (como cierre) es genial:

(function() { ... })(); // Creates an anonymous function and executes it

Pregunta: ¿Qué otro gran azúcar sintáctico está disponible en javascript?


Aquí hay uno que acabo de descubrir: verificación nula antes de llamar a la función:

a = b && b.length;

Este es un equivalente más corto a:

a = b ? b.length : null;

La mejor parte es que puedes verificar una cadena de propiedades:

a = b && b.c && b.c.length;


Asignación de las palabras clave de uso frecuente (o cualquier método) a las variables simples como ths

var $$ = document.getElementById; $$(''samText'');


Cadenas de varias líneas:

var str = "This is / all one / string.";

Como no puede aplicar sangría a las líneas siguientes sin agregar también el espacio en blanco a la cadena, las personas generalmente prefieren concatenar con el operador más. Pero esto proporciona una buena capacidad de documento aquí .


Clase de fecha de JavaScript que proporciona una semi-"interfaz fluida". Esto compensa la imposibilidad de extraer la porción de fecha de una clase Date directamente:

var today = new Date((new Date()).setHours(0, 0, 0, 0));

No es una interfaz completamente fluida porque lo siguiente solo nos dará un valor numérico que en realidad no es un objeto Date:

var today = new Date().setHours(0, 0, 0, 0);


Convierta la cadena en entero predeterminado en 0 si es imposible,

0 | "3" //result = 3 0 | "some string" -> //result = 0 0 | "0" -> 0 //result = 0

Puede ser útil en algunos casos, principalmente cuando 0 se considera como un mal resultado


Crea un literal de objeto anónimo con simplemente: ({})

Ejemplo: necesita saber si los objetos tienen el método valueOf:

var hasValueOf = !! ({}). valueOf

Azúcar sintáctico extra: el doble no ''!!'' para convertir casi cualquier cosa en un booleano de manera muy sucinta.


En Mozilla (y según se informa IE7) puede crear una constante XML usando:

var xml = <elem></elem>;

También puedes sustituir variables:

var elem = "html"; var text = "Some text"; var xml = <{elem}>{text}</{elem}>;


En situaciones de análisis con un conjunto fijo de componentes:

var str = "John Doe";

Puede asignar los resultados directamente a las variables, utilizando el synatx de "asignación desestructurante":

var [fname, lname] = str.split(" "); alert(lname + ", " + fname);

Que es un poco más legible que:

var a = str.split(" "); alert(a[1] + ", " + a[0]);

Alternativamente:

var [str, fname, lname] = str.match(/(.*) (.*)/);

Tenga en cuenta que esta es una función de Javascript 1.7 . Así que eso es Mozilla 2.0+ y Chrome 6+ navegadores, en este momento.


Esto no es un javascript exclusivo, pero guarda como tres líneas de código:

check ? value1 : value2


Función de flecha invocada inmediatamente:

var test = "hello, world!"; (() => test)(); //returns "hello, world!";


Me encanta lo simple que es trabajar con listas:

var numberName = ["zero", "one", "two", "three", "four"][number];

Y hashes:

var numberValue = {"zero":0, "one":1, "two":2, "three":3, "four":4}[numberName];

En la mayoría de los otros idiomas, este sería un código bastante pesado. Los valores predeterminados de valor también son encantadores. Por ejemplo, informes de códigos de error:

var errorDesc = {301: "Moved Permanently", 404: "Resource not found", 503: "Server down" }[errorNo] || "An unknown error has occurred";


Me encanta poder evaluar () una cadena json y recuperar una estructura de datos completamente poblada. Odio tener que escribir todo al menos dos veces (una vez para IE, otra vez para Mozilla).


Obteniendo el datetime actual como milisegundos:

Date.now()

Por ejemplo, para cronometrar la ejecución de una sección de código:

var start = Date.now(); // some code alert((Date.now() - start) + " ms elapsed");


Olvidé:

(function() { ... }).someMethod(); // Functions as objects


Poder extender los tipos de JavaScript nativos a través de herencia prototípica.

String.prototype.isNullOrEmpty = function(input) { return input === null || input.length === 0; }


Prueba de membresía de objeto:

var props = { a: 1, b: 2 }; ("a" in props) // true ("b" in props) // true ("c" in props) // false


Repetir una cadena como "-" un número específico de veces al aprovechar el método de unión en una matriz vacía:

var s = new Array(repeat+1).join("-");

Resultados en "---" cuando se repite == 3.


Respaldo por defecto:

var foo = {}; // empty object literal alert(foo.bar) // will alert "undefined" alert(foo.bar || "bar"); // will alert the fallback ("bar")

Un ejemplo práctico:

// will result in a type error if (foo.bar.length === 0) // with a default fallback you are always sure that the length // property will be available. if ((foo.bar || "").length === 0)


Siguiendo obj || {default: true} sintaxis:

llamando a su función con esto: hola (neededOne && neededTwo && needThree) si un parámetro está indefinido o es falso, entonces llamará a hello (false), a veces útil


The Array#forEach en Javascript 1.6

myArray.forEach(function(element) { alert(element); });


Un poco más sobre el ejemplo de Levik:

var foo = (condition) ? value1 : value2;


Usa === para comparar el valor y escribe:

var i = 0; var s = "0"; if (i == s) // true if (i === s) // false


Usar funciones anónimas y un cierre para crear una variable privada (ocultación de información) y los métodos get / set asociados:

var getter, setter; (function() { var _privateVar=123; getter = function() { return _privateVar; }; setter = function(v) { _privateVar = v; }; })()


int para el molde de cadena

var i = 12; var s = i+"";


Getters y setters :

function Foo(bar) { this._bar = bar; } Foo.prototype = { get bar() { return this._bar; }, set bar(bar) { this._bar = bar.toUpperCase(); } };

Nos da:

>>> var myFoo = new Foo("bar"); >>> myFoo.bar "BAR" >>> myFoo.bar = "Baz"; >>> myFoo.bar "BAZ"


Literales de plantilla

var a = 10; var b = 20; var text = `${a} + ${b} = ${a+b}`;

¡entonces la variable de texto será como abajo!

10 + 20 = 30


Cambiar el tamaño de la longitud de una matriz

la propiedad de longitud no es de solo lectura . Puede usarlo para aumentar o disminuir el tamaño de una matriz.

var myArray = [1,2,3]; myArray.length // 3 elements. myArray.length = 2; //Deletes the last element. myArray.length = 20 // Adds 18 elements to the array; the elements have the undefined value. A sparse array.


element.innerHTML = ""; // Replaces body of HTML element with an empty string.

Un atajo para eliminar todos los nodos secundarios del elemento.


var tags = { name: "Jack", location: "USA" }; "Name: {name}<br>From {location}".replace(//{(.*?)/}/gim, function(all, match){ return tags[match]; });

la devolución de llamada para reemplazar cadena es útil.