Todavía funciona en JavaScript
value = 0;
var test = (value === 0 ? 'it is zero!' : 'It is not zero.');
console.log(test);
Producción
it is zero!
Pregunta
Hola en php puedo hacer esto:
$value = 0;
$test = $value === 0 ? 'it is zero!' : 'It is not zero.';
echo $test;
¿Cómo se puede hacer esto en JavaScript en 1 línea como en PHP sin usar el clásico if - else if
¿declaración?
Solución
Todavía funciona en JavaScript
value = 0;
var test = (value === 0 ? 'it is zero!' : 'It is not zero.');
console.log(test);
Producción
it is zero!
Otros consejos
Esto debería funcionar:
var value = 0;
var test = (value === 0) ? 'It is zero' : 'It is not zero!';
console.log(test);
Por cierto, se llama operador ternario. Muchos idiomas los apoyan.
Casi exactamente lo mismo.
var value = 0;
var test = (value === 0) ? 'it is zero!' : 'it is not zero';
console.log(test);
Producción:
"it is zero!"
JavaScript también admite operadores ternarios.
https://developer.mozilla.org/en-us/docs/web/javascript/reference/operators/condicional_operator
(value == 0)?alert('it is zero!'):alert('It is not zero.');
No existe una diferencia tan importante, excepto que su $ se convierte en var.
Siempre prefiero ternary para en línea. Personalmente lo encuentro más legible.
var test =(value===0)?'it is zero!':'It is not zero.';
console.log("test check==="+test)
Puedo hacerte 1 mejor en JS:
var value = 0;
console.log(value === 0 ? 'It is zero!' : 'it is not zero');
O incluso más corto:
console.log('it is ' + ((value = 0) === 0 ? '':'not ') + 'zero!');
Bang, una línea para sus 3 líneas PHP. Tenga en cuenta que esto voluntad resultado en un error que se lanza (en modo estricto) o una variable global implícita que se está creando, si value
no existe.
Sin embargo, si la variable value
Ya existe, todo funciona perfectamente bien, y el comportamiento es como era de esperar que sea:
var value = 0;
console.log('it is ' + ((value = value || 0) === 0 ? '':'not ') + 'zero!');
//logs it is zero
value = 123;
console.log('it is ' + ((value = value || 0) === 0 ? '':'not ') + 'zero!');
//logs it is not zero
Probé esto usando una IFE:
(function(value)
{//logs it is zero
console.log('it is ' + ((value = value || 0) === 0 ? '':'not ') + 'zero!');
}());
(function(value)
{//logs it is not zero
console.log('it is ' + ((value = value || 0) === 0 ? '':'not ') + 'zero!');
}(123));
(function(value)
{//logs it is zero
console.log('it is ' + ((value = value || 0) === 0 ? '':'not ') + 'zero!');
}(0));
Para evitar el código de loggin it is zero
Cuando el valor está indefinido, o falsa:
(function(value)
{//coerce to numbner
console.log('it is ' + (value === 0 || value === '0' ? '':'not ') + 'zero!');
}());
Esto solo registrará it is zero
si value
es cualquiera '0'
o 0
. No lo hará para valores como false
, undefined
, null
...