简写if / else语句Javascript

时间:2012-03-25 22:24:31

标签: javascript shorthand

我想知道是否有更短的方式来写这个:

var x = 1;
if(y != undefined) x = y;

我最初尝试x = y || 1,但这不起作用。什么是正确的方法?

7 个答案:

答案 0 :(得分:85)

var x = y !== undefined ? y : 1;

请注意,var x = y || 1;会为1是假的情况(例如yfalse0)分配"",可能是为什么它“对你不起作用”。此外,如果y是全局变量,如果它确实未定义,则可能会遇到错误,除非您将其作为window.y访问。


正如vol7ron在评论中建议的那样,您也可以使用typeof来避免将全局变量引用为window.<name>

var x = typeof y != "undefined" ? y : 1;

答案 1 :(得分:18)

另一种写短语的方法

bePlanVar = !!((bePlanVar == false));

// is equivalent to

bePlanVar = (bePlanVar == false) ? true : false;

// and 

if (bePlanVar == false) {
    bePlanVar = true;
} else {
    bePlanVar = false;
}

答案 2 :(得分:3)

y = (y != undefined) ? y : x;

括号不是必需的,我只是添加它们因为我认为这样更容易阅读。

答案 3 :(得分:2)

其他方式是使用短路:

x = (typeof y !== 'undefined') && y || 1

虽然我自己认为三元更具可读性。

答案 4 :(得分:0)

这是一种有效的方法,但可能不是任何语言的最佳实践:

var x,y;
x='something';
y=1;
undefined === y || (x = y);

替代地

undefined !== y && (x = y);

答案 5 :(得分:0)

似乎您将“ y”默认设置为1:箭头功能在2020年很有用:

let x = (y = 1) => //insert operation with y here

让'x'是一个函数,其中'y'是一个参数,如果它是一些null或未定义的值,则将其默认设置为'1',然后返回带有y的某些操作。

答案 6 :(得分:0)

您可以尝试是否使用其他速记方法:

// Syntax
if condition || else condition

// Example
let oldStr = "";
let newStr = oldStr || "Updated Value";
console.log(newStr); // Updated Value

// Example 2
let num1 = 2;
let num2 = num1 || 3;
console.log(num2);  // 2  cause num1 is a truthy