如果沒有規定的方法參數的方法將返回tickSizeInner
當前值。或者,如果提供參數,它將設置tickSizeInner
和tickSizeOuter
變量。
return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;
這是一款採用了ternary operator這是此的簡便方法:
if(arguments.length) {
tickSizeInner = tickSizeOuter = +_; return axis
}
else {
return tickSizeInner;
}
參見this question, King's answer或this doc關於與三元逗號
這是在這一行做了操作。
這裏的功能邏輯的一個精簡版:
function tick(_) {
return arguments.length ? _ : 6;
};
console.log(tick())
console.log(tick(4))
在這種方法的優點是你的getter和setter方法是同一個。
注意,在JavaScript零falsey,看看下面的線(未定義也是falsey,作爲對比,看also this):
if(0) { console.log("true"); }
else { console.log("false"); }
if(1) { console.log("true"); }
else { console.log("false"); }
if(undefined){ console.log("true"); }
else { console.log("false"); }
所以,如果沒有參數傳遞,然後返回當前刻度大小。如果傳遞一個參數(下劃線是一個有效的變量名,見this question),那麼它被強制爲一個數字(+_
)並設置爲等於勾號大小(請參閱this question將字符串轉換爲數字的最佳答案)。
這裏的強制變量爲整數的例子:
var a = "1";
var b = "2";
console.log(a+b);
a = +a;
b = +b;
console.log(a+b);
最後,你可以在代碼中顯示的方式賦值多個變量。例如:
var a = 0;
var b = 0;
a = b = 5;
console.log(a);
console.log(b);