变量中的javascript三元运算符

时间:2011-08-04 01:56:01

标签: javascript jquery

好吧我和朋友一起工作,他给我发了一个js文件,里面包含一个包含三元运算符的变量。我无法弄清楚如何将其更改为if..else。你能帮忙吗?

我也注意到“。length”之后没有正常的“()”,有原因吗?

    var nextRadioTab = activeRadioTab.next().length ? activeRadioTab.next() : $('#contentslider div:eq(0)');

2 个答案:

答案 0 :(得分:4)

这有用吗?

if (activeRadioTab.next().length) {
    var nextRadioTab = activeRadioTab.next();
} else {
    var nextRadioTab =  $('#contentslider div:eq(0)');
}

在JavaScript中,对象或多或少只是指向值的名称列表。每个名称 - 值对称为“属性”。

这些值本身可以是任何类型的值,包括函数。如果属性的值是函数,我们称之为“方法”。

假设您希望对象跟踪点的x和y坐标。

var point = { x: 10, y: 20 };

在这种情况下,我们可以使用简单的值,因为我们不需要任何比获取值(alert(point.x))或设置值(point.x = 10)更高级的行为。

jQuery旨在让您的代码在不同的浏览器上运行;不同的浏览器在很多情况下表现不同,所以jQuery不能让你设置

element.text = "hello world"

因为取决于对象element的类型,它需要在不同的浏览器上修改不同的属性。出于这个原因,jQuery使你可以使用这样的方法:

element.text("hello world")

jQuery对象的.length属性很简单;它由jQuery本身控制,不需要在不同的浏览器中做任何特殊的事情。因此,您只需直接使用它。如果他们需要更复杂的行为,他们会使用函数/方法代替:

var myObject = { length: 2 }; // myObject.length
var myObject = { length: function() { return 2; } }; // myObject.length()

答案 1 :(得分:1)

var nextRadioTab;

if (activeRadioTab.next().length)
  nextRadioTab = activeRadioTab.next();
else
  nextRadioTab = $('#contentslider div:eq(0)');

lengthnext()返回的属性,很可能是与activeRadioTab相同类型的对象。