Ainda funciona em javascript
value = 0;
var test = (value === 0 ? 'it is zero!' : 'It is not zero.');
console.log(test);
Resultado
it is zero!
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?
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!"
O JavaScript também suporta operadores ternários.
https://developer.mozilla.org/en-us/docs/web/javascript/reference/operators/conditional_operator
(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.
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)
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
...