Javascript 三元比较中的函数返回
简单的代码,但找不到答案(可能我没有深入研究,因为我的主要语言不是英语..) 如果Javascript 三元比较中的函数返回,javascript,ternary,Javascript,Ternary,简单的代码,但找不到答案(可能我没有深入研究,因为我的主要语言不是英语..) 如果getDeviceInfo返回的不是0(即它==true),我希望返回值是displayDevice调用中的参数 有没有办法,或者我需要写一个“定期”比较? 谢谢您可以执行以下操作,但需要使用var来避免全局变量。因此,它不是一个真正的直截了当的表达 var info; (info = getDeviceInfos(deviceIP)) ? displayDevice(info) : (dead.push = de
getDeviceInfo
返回的不是0
(即它==true
),我希望返回值是displayDevice
调用中的参数
有没有办法,或者我需要写一个“定期”比较?谢谢您可以执行以下操作,但需要使用var来避免全局变量。因此,它不是一个真正的直截了当的表达
var info;
(info = getDeviceInfos(deviceIP)) ? displayDevice(info) : (dead.push = deviceIP);
虽然这不是您的问题,但您可以(或许应该)通过使用标准的if
-else
语句缓存结果来做类似的事情,无论是在var info
时,还是在if
本身中:
var info;
if (info = getDeviceInfos(deviceIP)) {
displayDevice(info);
} else {
dead.push = deviceIP;
}
如果您不使用三元表达式生成的值,我建议使用后一种方法以提高可读性。您可以执行以下操作,但需要使用var来避免全局变量。因此,它不是一个真正的直截了当的表达
var info;
(info = getDeviceInfos(deviceIP)) ? displayDevice(info) : (dead.push = deviceIP);
虽然这不是您的问题,但您可以(或许应该)通过使用标准的if
-else
语句缓存结果来做类似的事情,无论是在var info
时,还是在if
本身中:
var info;
if (info = getDeviceInfos(deviceIP)) {
displayDevice(info);
} else {
dead.push = deviceIP;
}
如果您不使用三元表达式生成的值,我建议使用后一种方法以提高可读性。首先创建一个变量,然后执行赋值并进行类似的比较-
var a; // <-- A variable.
(a = getDeviceInfos(deviceIP)) ? displayDevice(a) : dead.push = deviceIP;
var a;// 首先创建一个变量,然后执行赋值并进行类似的比较-
var a; // <-- A variable.
(a = getDeviceInfos(deviceIP)) ? displayDevice(a) : dead.push = deviceIP;
var a;// 根据您在评论部分的更新(并且为了可读性起见),我建议进行两步检查:
var deviceInfo = getDeviceInfos(deviceIP);
(deviceInfo !== 0) ? displayDevice(deviceInfo) : dead.push=deviceIP;
这是一个更准确的条件检查,更容易阅读。根据您在评论部分的更新(为了可读性起见),我建议将其分为两步检查:
var deviceInfo = getDeviceInfos(deviceIP);
(deviceInfo !== 0) ? displayDevice(deviceInfo) : dead.push=deviceIP;
这是一种更准确的状态检查,更易于阅读。
也可以进行多个三元计算(注意:条件运算符是右关联的)
也可以进行多个三元计算(注意:条件运算符是右关联的)
我知道严格来说这并不是回答你的问题,但我强烈建议你永远不要使用三元语法。在编写代码时,始终要在最容易阅读和维护的内容与紧凑、高效和酷的内容之间取得平衡
实际上,三元语法并没有比if语句快多少,所以使用它通常没有“效率”依据
比较:
var info;
(info = getDeviceInfos(deviceIP)) ? displayDevice(info) : (dead.push = deviceIP);
与
var info = getDeviceInfos(deviceIP);
if (info) {
displayDevice(info);
} else {
dead.push = deviceIP;
}
当然,if-then样式不那么紧凑,但是它更易于理解、调试和扩展
简而言之,几乎没有理由使用三元语法:它通常对代码质量有害。避免。我知道严格来说这并不是回答你的问题,但我强烈建议你永远不要使用三元语法。在编写代码时,始终要在最容易阅读和维护的内容与紧凑、高效和酷的内容之间取得平衡
实际上,三元语法并没有比if语句快多少,所以使用它通常没有“效率”依据
比较:
var info;
(info = getDeviceInfos(deviceIP)) ? displayDevice(info) : (dead.push = deviceIP);
与
var info = getDeviceInfos(deviceIP);
if (info) {
displayDevice(info);
} else {
dead.push = deviceIP;
}
当然,if-then样式不那么紧凑,但是它更易于理解、调试和扩展
简而言之,几乎没有理由使用三元语法:它通常对代码质量有害。避免。我将其移动到函数本身中
function getDeviceInfos(pIp)
{
//code
result ? displayDevice(result) : dead[dead.length]=pIp
}
我把它移到函数本身
function getDeviceInfos(pIp)
{
//code
result ? displayDevice(result) : dead[dead.length]=pIp
}
你的问题是什么?很难说你想在这里做什么。你能用经典语句写出来吗?如果syntaxIf GetDeviceInfo返回的不是0(然后是true),我希望返回值也是displayDevice Call中的参数,您是否打算将duad
的push
属性设置为deviceIP
,或者duad
是一个数组,并且要将deviceIP
添加到该数组中?只需使用常规的if…else
构造即可。在我看来,把所有的东西都塞进一行什么也得不到。你的问题是什么?很难说你想在这里做什么。你能用经典语句写出来吗?如果syntaxIf GetDeviceInfo返回的不是0(然后是true),我希望返回值也是displayDevice Call中的参数,您是否打算将duad
的push
属性设置为deviceIP
,或者duad
是一个数组,并且要将deviceIP
添加到该数组中?只需使用常规的if…else
构造即可。在我看来,把所有东西塞进一行并没有任何好处。是的,你们可以,我想说你们应该使用标准的if-then语法!是的,你可以,我会说你应该使用标准的if-then语法!“通常对代码质量有害”是一个相当大胆的说法。LOL“通常对代码质量有害”是一个相当大胆的说法。英雄联盟