javascript内联if变量赋值,如php
您好,在php中,我可以这样做:javascript内联if变量赋值,如php,javascript,php,ternary-operator,Javascript,Php,Ternary Operator,您好,在php中,我可以这样做: $value = 0; $test = $value === 0 ? 'it is zero!' : 'It is not zero.'; echo $test; 如果不使用经典的if-else if语句,如何在javascript中像在php中那样一行完成这一点?它仍然在javascript中工作 value = 0; var test = (value === 0 ? 'it is zero!' : 'It is not zero.'); console.
$value = 0;
$test = $value === 0 ? 'it is zero!' : 'It is not zero.';
echo $test;
如果不使用经典的
if-else if
语句,如何在javascript中像在php中那样一行完成这一点?它仍然在javascript中工作
value = 0;
var test = (value === 0 ? 'it is zero!' : 'It is not zero.');
console.log(test);
输出
it is zero!
它仍然在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);
顺便说一下,它被称为三元运算符 几乎完全一样
var 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);
输出:
"it is zero!"
除了你的美元变成了var之外,没有什么大的区别 我总是喜欢用三进制表示内联。我个人觉得它更可读
var test =(value===0)?'it is zero!':'It is not zero.';
console.log("test check==="+test)
演示:除了您的美元变为var之外,没有其他重大区别 我总是喜欢用三进制表示内联。我个人觉得它更可读
var test =(value===0)?'it is zero!':'It is not zero.';
console.log("test check==="+test)
演示:Javascript还支持三元运算符
Javascript还支持三元运算符
我可以在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
不存在,这将导致抛出错误(在严格模式下),或创建隐含的全局变量。但是,如果变量
值
已经存在,则所有操作都非常正常,并且行为与您预期的一样:
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
我用iLife测试了这一点:
(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中的代码,当值未定义时,它为零,或为falsy:
(function(value)
{//coerce to numbner
console.log('it is ' + (value === 0 || value === '0' ? '':'not ') + 'zero!');
}());
如果值
是'0'
或0
,则只记录为零。对于像false
,未定义
,null
…这样的值,它不起作用。我可以在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
不存在,这将导致抛出错误(在严格模式下),或创建隐含的全局变量。
但是,如果变量值
已经存在,则所有操作都非常正常,并且行为与您预期的一样:
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
我用iLife测试了这一点:
(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中的代码,当值未定义时,它为零,或为falsy:
(function(value)
{//coerce to numbner
console.log('it is ' + (value === 0 || value === '0' ? '':'not ') + 'zero!');
}());
如果值
是'0'
或0
,则只记录为零。它不适用于false
,undefined
,null
。三元数只是if-else
的缩写,基本上…在web上有很多地方可以看到…三元数只是if-else
的缩写,基本上…在web上有很多地方可以看到…@panagiotisgoreratisas:第二行只会在控制台中给出一个错误,因为它包含一个var
声明。控制台eval的代码以不允许的方式显示。尝试console.log('it is'+((value=0)==0?'':'not')+'zero!')您将看到它工作得很好,就像console.log('it is'+((value=1)==0?'':'not')+'zero!')代码>将记录“它不是零”@Panagiotisgorgeraditsas:什么错误,请指定。。。它对我来说很好(chromium+node.js+firefox)。如果这产生了一个错误,我想知道是哪一个,为什么,这样我就可以纠正我的错误,也许还能学到一两个语法错误:意外标记var@PanagiotisGeorgeRaditsas:你说得对,我没有正确检查,我在node.js上运行的代码没有包含var
关键字。。。我使用了一个IIFE:(函数(值){console.log('It is'+((值=0)==0?''not')+'zero!');}())
@panagiotisgorgeraditsas:第二行只会在控制台中给出一个错误,因为它包含一个var
声明。控制台eval的代码以不允许的方式显示。尝试console.log('it is'+((value=0)==0?'':'not')+'zero!')您将看到它工作得很好,就像console.log('it is'+((value=1)==0?'':'not')+'zero!')代码>将记录“它不是零”@Panagiotisgorgeraditsas:什么错误,请指定。。。它对我来说很好(chromium+node.js+firefox)。如果这产生了一个错误,我想知道是哪一个,为什么,这样我就可以纠正我的错误,也许还能学到一两个语法错误:意外标记var@PanagiotisGeorgeRaditsas:你说得对,我没有正确检查,我在node.js上运行的代码没有包含var
关键字。。。我使用了一个IIFE:(函数(值){console.log('It is'+((值=0)==0?''not')+'zero!');}())
它在fiddle上工作,但第二个变量不需要,并导致错误它在fiddle上工作,但第二个变量不需要,并导致错误