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?

Était-ce utile?

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.

Documentation

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)

Démo: http://jsfiddle.net/jayeshjain24/eflyf/

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top