Javascript最短可能检查undefined,如果它是指定默认值

时间:2012-12-14 17:21:03

标签: javascript

如果将params或一个充满属性的对象传递给函数,检查未定义的params并为未定义的值提供默认值是很有用的。

如果不使用jQuery范围之类的库函数,那么执行这种赋值默认值的代码最短是什么?

这是我能想到的最短的:

var test;
var output = (typeof test != "undefined") ? test : "Default";

在有人建议之前:

var test;
var output = test || "Default";

这不适用于false,0或“”

5 个答案:

答案 0 :(得分:3)

试试这个:

var output = test != null ? test : "Default";

I.g:

null == undefined // true
null == null // true
null == 0 // false
null == "" //false
null == false // false

答案 1 :(得分:1)

在 ES2021 中,现在可以使用 Nullish coalescing operator

用法:

const str = null ?? 'default string';
console.log(str);
// expected output: "default string"

const num = 0 ?? 42;
console.log(num);
// expected output: 0

const bool = false ?? true;
console.log(bool)
// expected output: false

答案 2 :(得分:0)

你可以试试这个:

var output = if(test === undefined) ? test: "Default";

如果您知道永远不会将0false""作为有效参数传递,则可以将其简化为:

var output = if(test) ? test : "Default";

然而,这进入了JavaScript的神秘“truthy falsey”部分。通过让===进行类型比较的等式检查。

希望这有帮助。

答案 3 :(得分:0)

好的,所以如果“undefined”它是类型的最长值,检查对象存在的最短方法是

!(typeof console).charAt(8)

其中“console”是我们的检查对象。 .charAt(8)将返回空字符串“”如果对象不是“undefined”,则等于 false 这是旧IE支持的安全方式。但如果您只需要现代浏览器支持,则可以使用

if(!(typeof console)[8]) { doWork(); }

检查对象是否已定义。

答案 4 :(得分:0)

https://github.com/jed/140bytes/wiki/Byte-saving-techniques是你的朋友:

var output = test===[]._ ? "Default" : test;

更短的:

var output=test===[]._?"Default":test;

操作员和令牌之间不需要空格。