什么是Swift的JavaScript等价物?操作者

时间:2016-06-26 05:48:05

标签: javascript swift

在swift中,x = y ?? z表示x等于y,除非y为null / nil,在这种情况下,x等于z。什么是JavaScript等价物?

2 个答案:

答案 0 :(得分:9)

x = y || z; //x is y unless y is null, undefined, "", '', or 0.

如果您想从0值中排除falsey,那么

x = ( ( y === 0 || y ) ? y : z ); //x is y unless y is null, undefined, "", '', or 0.

或者,如果您想从false值中排除falsey,那么

x = ((y === 0 || y === false || y) ? y : z);

<强>样本

var testCases = [
  [0, 2],
  [false, 2],
  [null, 2],
  [undefined, 2],
  ["", 2],
  ['', 2],
]

for (var counter = 0; counter < testCases.length - 1; counter++) {
  var y = testCases[counter][0],
    z = testCases[counter][1],
    x = ((y === 0 || y === false || y) ? y : z);
  console.log("when y = " + y + " \t and z = " + z + " \t then x is " + x);
}

答案 1 :(得分:3)

ternary operator将获得类似的结果

x = (y ? y : z)

严格来说,为避免implicit typeconversion,您可能需要类似

的内容
x = (null !== y ? y : z)

x = x || y这样的短路分配感觉就像是对||运算符的误用,这可能导致混乱。但是我认为这是一个使用的味道问题。