Pergunta

Olá no PHP, posso fazer isso:

$value = 0;
$test = $value === 0 ? 'it is zero!' : 'It is not zero.';
echo $test;

Como isso pode ser feito em JavaScript em 1 linha como no PHP sem usar o clássico if - else if declaração?

Foi útil?

Solução

Ainda funciona em javascript

value = 0;
var test = (value === 0 ? 'it is zero!' : 'It is not zero.');
console.log(test);

Resultado

it is zero!

Outras dicas

Isso deve funcionar:

var value = 0;
var test = (value === 0) ? 'It is zero' : 'It is not zero!';
console.log(test);

A propósito, é chamado de operador ternário. Muitos idiomas os apoiam.

Quase exatamente o mesmo.

var value = 0;
var test = (value === 0) ? 'it is zero!' : 'it is not zero';
console.log(test);

Resultado:

"it is zero!"
(value == 0)?alert('it is zero!'):alert('It is not zero.');

Não existe uma diferença tão grande, exceto que seu $ se torna var.

documentação

Eu sempre prefiro ternário para inline. Eu pessoalmente acho mais legível.

var test =(value===0)?'it is zero!':'It is not zero.';
console.log("test check==="+test)

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

Eu posso fazer você melhor em JS:

var value = 0;
console.log(value === 0 ? 'It is zero!' : 'it is not zero');

Ou ainda mais curto:

console.log('it is ' + ((value = 0) === 0 ? '':'not ') + 'zero!');

Bang, uma linha para suas 3 linhas de PHP. Observe que isso vai resultar em um erro sendo lançado (no modo rigoroso) ou em uma variável global implícita sendo criada, se value não existe.
No entanto, se a variável value Já existe, tudo funciona perfeitamente bem, e o comportamento é como você esperaria que seja:

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

Eu testei isso usando um IIFE:

(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 o código de loggin it is zero Quando o valor é indefinido ou falsamente:

(function(value)
{//coerce to numbner
    console.log('it is ' + (value === 0 || value === '0' ? '':'not ') + 'zero!');
}());

Isso só vai registrar it is zero E se value é também '0' ou 0. Não vai para valores como false, undefined, null...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top