2013-11-07 18 views
1

Привет В PHP я могу это сделать:Javascript рядного, если значение переменного правопреемника как PHP

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

Как это может быть сделано в JavaScript в 1 строку, как в PHP без использования классического if - else if заявления?

+0

Тройная является просто коротким для 'если - else', в основном ... –

+0

Есть несколько мест в Интернете, где вы можете увидеть [ большой список операторов Javascript] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators) ... – nnnnnn

ответ

4

Он по-прежнему работает в JavaScript

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

Выходной

it is zero! 
1

Это должно работать:

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

Кстати, это называется троичный оператор. Many languages support them.

1

Практически точно такие же.

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

Выход:

"it is zero!" 
1

Там нет такого основного различия кроме того, что ваш $ становится варом.

documentation

Я всегда предпочитаю тройной для inline.I лично считаю его более читаемым.

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

DEMO: http://jsfiddle.net/jayeshjain24/efLYf/

+0

Он работает на скрипке, но второй var не нужен и вызывает ошибку – Syd

+0

corrected..check –

0

Я могу сделать вас 1 лучше в JS:

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

Или еще короче:

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

взрыва, одну линию для ваших 3 PHP строк. Обратите внимание, что этот будет результатом либо в случае ошибки (в строгом режиме), либо в результате создания неявной глобальной переменной, если value не существует.
Однако, если переменная value уже существует, все работает прекрасно, и поведение, как и следовало ожидать, что это будет:

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 

Я проверил это с помощью 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)); 

Чтобы избежать код из it is zero, когда Вход для реселлеров значение не определено, или falsy:

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

Это будет регистрировать только it is zero, если value либо '0', либо 0. Это не будет для таких ценностей, как false, undefined, null ...

+0

дает сообщение об ошибке:/ – Syd

+0

@PanagiotisGeorgeRaditsas: вторая строка даст ошибку только в консоли, потому что она содержит объявление 'var'. Код консоли eval таким образом, что это недопустимо. try 'console.log ('it is' + ((value = 0) === 0? ':' not ') +' zero! ');' и вы увидите, что это работает отлично, так же как ' console.log ('it is' + ((value = 1) === 0? '': 'not') + 'zero!'); 'log_" не равно нулю _ _ –

+0

Хорошо спасибо:) – Syd

Смежные вопросы