Javascript测试和分配在一行

时间:2012-01-24 09:26:04

标签: javascript

有人可以解释这个JS LINE吗?数据是一个对象。

var list = data == null ? [] : (data.wine instanceof Array ? data.wine : [data.wine]);

5 个答案:

答案 0 :(得分:3)

基本上就是这样;

var list;

if (data == null) {
    list = [];
} else {
    if (data.wine instanceof Array) {
        list = data.wine;
    } else {
        list = [data.wine];
    }
}

它由嵌套的ternary operators组成。三元运算符具有以下形式;

x ? y : z

评估x,如果真实,则返回y,否则返回z

答案 1 :(得分:1)

if (data == null) {
    list = [] 
} else {
    if (data.wine instanceof Array) {
        list = data.wine 
     else {
        list = [data.wine];
     }
}

答案 2 :(得分:1)

这意味着:

If data is null
    assign an empty array to list
else 
    if data.wine is of type Array
        assign data.wine to list
    else
        create an array with data.wine as the only item and assign that array to list
    end
end

答案 3 :(得分:0)

作为if-else声明:

if (data == null)
   list = [];             // list is an empty array now
else if (data.wine instanceof Array)
   list = data.wine;      // data.wine is an array; assign it to list
else
   list = [data.wine];    // make a new array with data.wine as element

答案 4 :(得分:0)

javascript中的条件运算符

条件运算符

JavaScript还包含一个条件运算符,它根据某些条件为变量赋值。 语法

 variablename=(condition)?value1:value2 

    var variablename;
    if(condition true){
    variablename=value1;
    }
    else{
     variablename=value1;
    }

您的代码评估如下:

var list;

if (data == null) {
    list = [];
} else {
    if (data.wine instanceof Array) {
        list = data.wine;
    } else {
        list = [data.wine];
    }
}