Javascript 检查对象是否已完全定义的最佳方法是什么?
以下函数用于检查对象是否已定义和定值:Javascript 检查对象是否已完全定义的最佳方法是什么?,javascript,string,object,Javascript,String,Object,以下函数用于检查对象是否已定义和定值: isFullDefined(obj) => { return angular.isDefined(obj) && obj !== null && ("" + obj).trim() !== ""; } 就目前情况而言,它是有效的,但我认为它可以改进 例如,我认为 ("" + obj).trim() !== "" 可以用 String
isFullDefined(obj) => {
return angular.isDefined(obj) && obj !== null && ("" + obj).trim() !== "";
}
就目前情况而言,它是有效的,但我认为它可以改进
例如,我认为
("" + obj).trim() !== ""
可以用
String(obj).trim().length
但我不知道在绩效水平上哪些变化更好;我的想法是
("" + obj)
可能比
String(obj)
mystring !== ""
那
mystring.length
比
String(obj)
mystring !== ""
“我不知道在性能级别上哪些更改更好”通常意味着“编写一个快速的基准测试并找出答案”。运行足够多的迭代,完成它们需要>10秒以减少统计噪音。不要只对每个运行进行一次基准测试。
typeof(obj)='string'&&obj.length
在这里太简单了吗?您可能还应该使用obj!=空
而不是==
也可以捕获未定义的。你可以去掉angular.isDefined。我真的不明白为什么要使用所有这些字符串比较,{}
在您的案例中是有效的对象吗?是否为0
和false
?那“
或”
呢?你到底只是在检查字符串吗?还要注意,这整段代码在性能方面可能完全不相关。您很可能会遇到其他瓶颈,减少一些纳秒级的瓶颈对我来说似乎是过早的优化。@nrausch感谢您的建议。为了回答您的问题,obj可以是所有的东西(字符串、布尔值、对象、数组等);此函数仅用于检查对象是否被定义并进行瓦解(我们考虑{}和[] ]为“瓦解”);如有必要,在调用此函数后执行其他类型的检查