Respuesta
Si x
no está definida (o nula, o cualquier otro valor false
), se convierte en un objeto vacío.
Asigne x
a un nuevo objeto vacío si es null
(undefined, false) o mantenga su valor existente si no es null
.
||
es el OR
lógico.
La expresión
var x = x OR {};
debería ser más obvio entonces.
Si x
tiene un valor Falsy (como null
, undefined
, 0
, ""
), asignamos x
un objeto vacío {}
, de lo contrario sólo mantener el valor actual. La versión larga de esta vería como
var x = x ? x : {};
excelente respuesta. Soy un programador de c y esto no tiene sentido. – jakoh
Si esto no tiene sentido para usted, entonces también debe tener cuidado con '!! value' que devuelve un valor booleano que representa la veracidad de' value', muy útil a veces. –
Su versión larga es incorrecta: considere el caso cuando x ha definido previamente y está establecido en 'nulo'. 'var x = x || {}; 'redefinirá x a un objeto, mientras que' var x = (typeof x! == 'undefined')? x: {}; 'no. El párrafo que lo precede es correcto sin embargo. –
menos que x se define o se le asigna un valor que tomará objeto vacío como valor por defecto ..
que es,
for example
x = 10
var x = x || {};
salida debe ser
10
si x valor no asignado. el valor de salida debe ser,
undefined
si se define var x entonces será ese valor definido. De lo contrario será objeto vacío como [object Object]
Por ejemplo, en el siguiente bloque de código, x será 10
:
var x = 10;
x = x || {}
Sin embargo, si:
var x = x || {};
entonces x
habrá [object Object]
Uno nunca debe escribir "var x = x || {};" per se.
La única circunstancia en la que esto no es idéntico a "var x = {};" es cuando x se inicializó previamente en el mismo ámbito. Eso es inmoral Nota:
function() {
x = {foo:"bar"};
var x = x || {};
}
es el mismo que, meramente más confuso que,
function() {
var x = {foo:"bar"};
x = x || {};
}
En ninguno de los casos se hace referencia alguna al valor del símbolo "x" en el ámbito global.
Esta expresión es una variante confusa de la legítima expresión idiomática inicialización perezosa propiedad:
function(foo) {
foo.x = foo.x || {};
foo.x.y = "something";
}
- 1. ¿Qué significa exactamente var x: * en actionscript?
- 2. ¿Qué pasa con var x = new Array();
- 3. isset ($ var) vs. @ $ var
- 4. var o no usar var
- 5. ¿Cuál es la diferencia entre 'var $ x' y 'var x' en javascript?
- 6. ¿Qué significa var {u, v, w} = x; significa en Javascript?
- 7. ¿Deberían usarse `! Var` o` var == NULL`?
- 8. qmake variables, diferencia de $$ VAR y $$ {VAR}
- 9. Desventajas del "patrón var var" Javascript
- 10. ¿Qué significa "var" en C#?
- 11. var undefined = true;
- 12. diferencia entre la palabra clave var y sin var
- 13. ¿Es mejor escribir: var arr = []; que var arr = new Array() ;?
- 14. ¿Qué es "var _gaq = _gaq || [];" para?
- 15. colocador Anulación de var
- 16. C - ¿Diferencia entre "char var []" y "char * var"?
- 17. ¿Cuándo uso var?
- 18. PHP empty var == 0?
- 19. ios boolean var declaration
- 20. "var variable" devuelve indefinido?
- 21. foreach my $ var (@list) - $ var es una referencia?
- 22. Es if (var == true) más rápido que if (var! = False)?
- 23. bash condicionales: ¿cómo "y" expresiones? (si [! -z $ VAR && -e $ VAR])
- 24. ¿Es necesario var var las variables de bucle en CFScript?
- 25. Php: ¿cuál es la diferencia entre $ var y & $ var?
- 26. var vs declaración explícita
- 27. Propósito de /var/resource_config.json
- 28. ¿Qué significa hacer "$ var = * $ self -> {class_var};"
- 29. ¿Cómo saber qué tipo es una var?
- 30. ¿Qué significa la palabra clave PHP 'var'?
Esta pregunta es el más viejo, el otro es un duplicado. –
Las expresiones lógicas en JavaScript se evalúan de izquierda a derecha y se prueban para una posible evaluación de "cortocircuito" utilizando las siguientes reglas: false && (cualquier cosa) se evalúa en cortocircuito como falsa. verdadero || (cualquier cosa) es un cortocircuito evaluado como verdadero. En el ejemplo anterior, si x es verdadero, x se convierte en el valor asignado. Si x es falso o indefinido, el segundo operando se convierte en la asignación que es {}. – tony