你好,在 php 中我可以这样做:
$value = 0;
$test = $value === 0 ? 'it is zero!' : 'It is not zero.';
echo $test;
如何在不使用经典if - else if
语句的情况下,像在 php 中一样在 javascript 中以 1 行完成此操作?
它仍然可以在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!"
Javascript也支持三元运算符。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator
(value == 0)?alert('it is zero!'):alert('It is not zero.');
除了你的 $ 变成 var 之外,没有这样的重大区别。
文档
我总是更喜欢内联的三元。我个人觉得它更具可读性。
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));
要避免代码在值未定义或伪造时it is zero
登录,请执行以下操作:
(function(value)
{//coerce to numbner
console.log('it is ' + (value === 0 || value === '0' ? '':'not ') + 'zero!');
}());
仅当value
'0'
或0
时,这才会记录it is zero
。它不适用于像false
、undefined
、null
这样的值......