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可以是所有的东西(字符串、布尔值、对象、数组等);此函数仅用于检查对象是否被定义并进行瓦解(我们考虑{}和[] ]为“瓦解”);如有必要,在调用此函数后执行其他类型的检查