variable functions float declarar create checker javascript syntax notation

functions - string variable javascript



¿Qué significa "opciones=opciones ||{} "Significa en Javascript? (5)

Esta pregunta ya tiene una respuesta aquí:

El otro día recibí un fragmento de código que me provocó curiosidad, pero no estoy muy seguro de lo que realmente hace;

options = options || {};

Mi pensamiento hasta ahora; establece las options variables para valorar las options si existen, si no, establece en el objeto vacío.

¿Si no?


Es el patrón predeterminado ...

Lo que tienes en tu fragmento es la forma más común de implementar el patrón por defecto , devolverá el valor del primer operando que produce un valor verdadero cuando se convierte a booleano.

var some_data = undefined; var some_obj_1 = undefined; var some_obj_2 = {foo: 123}; var str = some_data || "default"; var obj = some_obj1 || some_obj2 || {}; /* str == "default", obj == {foo: 123} */

lo anterior es básicamente equivalente a hacer la siguiente alternativa más detallada

var str = undefined; var obj = undefined; if (some_data) str = some_data; else str = "default"; if (some_obj1) obj = some_obj1; else if (some_obj2) obj = some_obj2; else obj = {};

ejemplos de rendimiento de valores por el operador OR lógico:

1 || 3 -> 1 0 || 3 -> 3 undefined || 3 -> 3 NaN || 3 -> 3 "" || "default" -> "default" undefined || undefined -> undefined false || true -> true true || false -> true null || "test" -> "test" undefined || {} -> {} {} || true -> {}

null || false || {} -> {} 0 || "!!" || 9 -> "!!"

Como puede ver, si no se encuentra coincidencia, el valor del último operando es yield.

¿Cuándo es esto útil?

Hay varios casos, aunque el más popular es establecer el valor predeterminado de los argumentos de la función, como se muestra a continuación:

function do_something (some_value) { some_value = some_value || "hello world"; console.log ("saying: " + some_value); } ... do_something ("how ya doin''?"); do_something ();

saying: how ya doin''? saying: hello world

Notas

Esta es una de las diferencias que JavaScript tiene en comparación con muchos otros lenguajes de programación populares.

El operador || no genera implícitamente un valor booleano, pero conserva los tipos de operandos y produce el primero que se evaluará como verdadero en una expresión booleana.

Muchos programadores que provienen de idiomas en los que este no es el caso (C, C ++, PHP, Python, etc.) encuentran esto bastante confuso al principio, y por supuesto siempre sucede lo contrario; las personas que provienen de javascript ( perl , etc.) se preguntan por qué esta característica no se implementa en otros lugares.


Encontré otra variación de esto:

options || (options = {});

Parece hacer el mismo truco.


Esto es útil para establecer valores predeterminados para los argumentos de la función, por ejemplo:

function test (options) { options = options || {}; }

Si llama a test sin argumentos, las options se inicializarán con un objeto vacío.

El O lógico || el operador devolverá su segundo operando si el primero es falso .

Los valores de Falsy son: 0 , null , undefined , la cadena vacía ( "" ), NaN y, por supuesto, false .


Sí, eso es exactamente lo que hace.


Sí. La muestra es equivalente a esto:

if (options) { options = options; } else { options = {}; }

El operador OR ( || ) se cortocircuitará y devolverá el primer valor de verdad.