Cela fonctionne toujours en javascript
value = 0;
var test = (value === 0 ? 'it is zero!' : 'It is not zero.');
console.log(test);
Production
it is zero!
Question
Bonjour en php, je peux faire ceci:
$value = 0;
$test = $value === 0 ? 'it is zero!' : 'It is not zero.';
echo $test;
Comment cela peut-il être fait en javascript en 1 ligne comme en php sans utiliser le classique if - else if
déclaration?
La solution
Cela fonctionne toujours en javascript
value = 0;
var test = (value === 0 ? 'it is zero!' : 'It is not zero.');
console.log(test);
Production
it is zero!
Autres conseils
Cela devrait fonctionner:
var value = 0;
var test = (value === 0) ? 'It is zero' : 'It is not zero!';
console.log(test);
Soit dit en passant, il est appelé un opérateur ternaire. De nombreuses langues les soutiennent.
Presque exactement la même.
var value = 0;
var test = (value === 0) ? 'it is zero!' : 'it is not zero';
console.log(test);
Production:
"it is zero!"
JavaScript prend également en charge les opérateurs ternaires.
https://developer.mozilla.org/en-us/docs/web/javascript/reference/Operators/Conditional_Operator
(value == 0)?alert('it is zero!'):alert('It is not zero.');
Il n'y a pas une telle différence majeure, sauf que votre $ devient var.
Je préfère toujours Ternary pour en ligne. Je le trouve personnellement plus lisible.
var test =(value===0)?'it is zero!':'It is not zero.';
console.log("test check==="+test)
Je peux te faire mieux dans JS:
var value = 0;
console.log(value === 0 ? 'It is zero!' : 'it is not zero');
Ou même plus court:
console.log('it is ' + ((value = 0) === 0 ? '':'not ') + 'zero!');
Bang, une ligne pour vos 3 lignes PHP. Notez que, ceci sera entraîner soit une erreur lancée (en mode strict), soit une variable globale implicite en cours de création, si value
n'existe pas.
Cependant, si la variable value
existe déjà, tout fonctionne parfaitement et le comportement est comme vous vous y attendez:
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
J'ai testé cela en utilisant un 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));
Pour éviter le code de Loggin it is zero
Lorsque la valeur n'est pas définie ou falsive:
(function(value)
{//coerce to numbner
console.log('it is ' + (value === 0 || value === '0' ? '':'not ') + 'zero!');
}());
Cela ne journalisera que it is zero
si value
est soit '0'
ou 0
. Ce ne sera pas de valeurs comme false
, undefined
, null
...