2017-03-09 6 views
0

J'ai utilisé l'opérateur ternaire en php $foo = get_field('foo') ?: null; mais je cherche un équivalent en javascript. Jusqu'à présent, j'ai essayé le var foo = <?php echo $foo; ?> || null;. Mais puisque <?php echo $foo; ?> dans ce cas est null/vide la console me donne l'erreur Uncaught SyntaxError: Unexpected token || puisque la variable est var foo = || null;.Opérateur ternaire en javascript lorsque la variable est vide

Existe-t-il une autre façon d'utiliser les opérateurs ternaires en javascript?

+0

'var foo = ('')? ' ': null; 'n'a pas fonctionné? – smarber

+0

Vous JS devrait fonctionner, juste sortir une valeur "falsifiée" de PHP quand '$ foo' est' null'. – evolutionxbox

+0

@smarber le problème semble être que le code PHP ne sort rien, donc le JS va toujours erreur. – evolutionxbox

Répondre

2

Votre problème n'a rien à voir avec l'opérateur ternaire, mais avec la sortie PHP en javascript. La voie est la plus sûre:

var foo = <?php echo json_encode($foo); ?> || null ; 

La fonction json_encode() veille à ce que la variable est reprise sous une forme qui comprend JS.

1

Vous devez renvoyer une valeur falsifiée de php. Votre code était presque correct. Il manquait seulement les citations autour d'elle.

var foo = '<?php echo $foo; ?>' || null; 
console.log('foo', foo); // null 

En effet, lorsque $ foo est vide, il sera var foo = '' || null; et depuis '' est falsy en Javascript, il retournera null.