您好,在PHP中,我可以做到这一点:

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

如何在javascript中以1行(例如php中的1行)完成,而无需使用经典 if - else if 陈述?

有帮助吗?

解决方案

它仍然在JavaScript中起作用

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

输出

it is zero!

其他提示

这应该有效:

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

顺便说一句,它被称为三元操作员。 许多语言支持他们.

几乎完全一样。

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

输出:

"it is zero!"
(value == 0)?alert('it is zero!'):alert('It is not zero.');

除了您的$变为var之外,没有这样的主要区别。

文档

我总是更喜欢inline。我个人认为它更可读。

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

演示: http://jsfiddle.net/jayeshjain24/eflyf/

我可以在JS中更好地做1:

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));

为了避免从loggin出发代码 it is zero 当值不确定或虚假时:

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

这只会记录 it is zero 如果 value 或者是 '0' 或者 0. 。它不会像这样的价值 false, undefined, null...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top