如果将params或一个充满属性的对象传递给函数,检查未定义的params并为未定义的值提供默认值是很有用的。
如果不使用jQuery范围之类的库函数,那么执行这种赋值默认值的代码最短是什么?
这是我能想到的最短的:
var test;
var output = (typeof test != "undefined") ? test : "Default";
在有人建议之前:
var test;
var output = test || "Default";
这不适用于false,0或“”
答案 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";
如果您知道永远不会将0
,false
或""
作为有效参数传递,则可以将其简化为:
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;
操作员和令牌之间不需要空格。