有人可以解釋這個JS LINE嗎?數據是一個對象。Javascript測試和分配在一行
var list = data == null ? [] : (data.wine instanceof Array ? data.wine : [data.wine]);
有人可以解釋這個JS LINE嗎?數據是一個對象。Javascript測試和分配在一行
var list = data == null ? [] : (data.wine instanceof Array ? data.wine : [data.wine]);
它基本上是這樣;
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
如果是truthy,否則返回z
。
作爲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
if (data == null) {
list = []
} else {
if (data.wine instanceof Array) {
list = data.wine
else {
list = [data.wine];
}
}
其條件運算符在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];
}
}
這意味着:
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
謝謝大家。因爲第二個如果其他人感到困惑 – user900276