Javascript 使用三元运算符设置变量

Javascript 使用三元运算符设置变量,javascript,xml,Javascript,Xml,我试图使用三元运算符检查XML元素的值是否为null。如果是,那么我希望变量是一件事。如果不是,那么我希望它返回元素的值。这就是我目前所拥有的 var rating = data.getElementsByTagName("overall_average")[0].childeNodes[0].length > 0 ? data.getElementsByTagName("overall_average")[0].childeNodes[0].nodeValue : "It is empt

我试图使用三元运算符检查XML元素的值是否为null。如果是,那么我希望变量是一件事。如果不是,那么我希望它返回元素的值。这就是我目前所拥有的

var rating = data.getElementsByTagName("overall_average")[0].childeNodes[0].length > 0 ? data.getElementsByTagName("overall_average")[0].childeNodes[0].nodeValue : "It is empty";
在这里:


请注意,如果
数据中没有一个“总体平均值”元素,此代码将抛出(错误),因此,如果需要,您可能希望防止这种情况……

您的三元操作在我看来很好。我建议(为了可读性和简洁性)将您的
总体平均值
对象定义为一个变量,然后引用它

var overall_average = data.getElementsByTagName("overall_average")[0].childeNodes[0];
var rating = overall_average.length > 0 ? overall_average.nodeValue : "It is empty";
祝你好运

最短路径:

var rating = (data.getElementsByTagName('overall_average')[0].childNodes[0] || {}).nodeValue || 'It is empty';

它继续把NaN作为评级的价值。我不明白为什么它会这样做。我们只是引用一个节点并访问它的
nodeValue
。我建议设置一个断点并检查
节点
是否确实是节点引用…谢谢。我就是这么做的。有一个插件试图对评级变量进行取整。将我的代码移动到一个匿名函数中,这就成功了。不过,作为将来的参考,您知道如何检查一个变量是否是一个数字,并根据结果吐出一些东西吗?我还是希望它是一个三元运算符。@GregWiley您可以使用前缀
+
运算符将值强制为一个数值,然后检查结果是否是一个非
NaN
var result=!isNaN(+值)+数值:0
(这里
0
是回退值)。@mplungjan,在我的示例中,我使用
|
运算符检查null。所以,如果你有这样的东西:
var x=null | |{}
那么x将是一个空的
对象
,而不是
null
。您也可以对属性使用
|
var x={}.someProp | | hello',x将是
“你好”
。谢谢!你能解释一下我接下来如何检查这个变量是否是三元运算符中的数字吗?@Greg Wiley,不幸的是
|
只帮助你检测
空/未定义的对象。在进行数字检测时,需要使用常用的三元运算符:
isNaN('bla-bla')?'不是数字“:“有效数字”
。谢谢。这是有道理的,但有道理,我正在运行一个元素列表,这将是我试图设置的每个变量两行。
var rating = (data.getElementsByTagName('overall_average')[0].childNodes[0] || {}).nodeValue || 'It is empty';