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?

¿Fue útil?

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!"
(value == 0)?alert('it is zero!'):alert('It is not zero.');

No existe una diferencia tan importante, excepto que su $ se convierte en var.

documentación

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)

Demo: http://jsfiddle.net/jayeshjain24/eflyf/

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...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top