关键词:
【中文标题】类型未定义。哪个更快更好? [复制]【英文标题】:typeof undefined. Which is faster and better? [duplicate] 【发布时间】:2014-01-28 22:58:30 【问题描述】:这里
var a =
什么时候
if(typeof a.b == "undefined")
console.log("undefined");
if (!a.b)
console.log("undefined");
两者都返回"undefined"
以及何时
if(typeof c.b == "undefined")
console.log("undefined");
if (!c.b)
console.log("undefined");
两者都引发错误c is not defined
上面的 2 个 if-else
语句看起来是一样的。那么哪种方式更好呢?
【问题讨论】:
【参考方案1】:如果您正在寻找一种方法来检查成员是否存在,您应该使用in
运算符
if ("b" in a)
...
引发了错误c is not defined
,因为c
没有在程序的任何地方定义。
typeof a.b
将返回的是存储在a.b
中的数据类型。如果b
确实存在并且它实际上拥有undefined
的值怎么办? typeof a.b
和 !a.b
都将评估为真值。因此,它们不应该用于成员存在检查。
请查看this answer 了解为什么in
应该是会员存在的首选。
【讨论】:
昨天同样的问题xD @EdgarVillegasAlvarado 是的:P Dup 投票。【参考方案2】:我会使用in
运算符
if ('b' in a)
...
我会使用它,因为它完全用于检查对象中是否存在属性,并且因为它比其他属性更具可读性 (IMO)。
但是,哪个更快并不重要,因为您会进行微优化(除非您进行数百万或数十亿次操作)。
干杯
PS:c is not defined
发生是因为使用 c.b
您试图访问未定义变量 (c
) 的 b
成员
【讨论】:
【参考方案3】:我不确定您要达到什么目的,但有两个问题。第一部分是检查对象中定义的属性。第一个 if 是检查属性的类型是否已定义,但它可能是故意“未定义”。
用于检查对象是否具有属性。
if(b.hasOwnProperty("c"))
如果您想“查找”整个原型链中的属性,请使用in
:
if ("c" in b)
否则检查 b.c 是“未定义”意味着“b.c”返回的值是“未定义”类型。这并不意味着 b 具有或不具有属性“c”。
第二个块失败了,因为“c”没有在全局范围内定义。您无法访问将导致错误的未定义对象的属性。
注意
如果您没有原型链,hasOwnProperty 在大多数情况下应该更快。
【讨论】:
请记住,这会为对象原型中的属性返回 false。 我已经编辑了答案。Vector 与 ArrayList 哪个更好? [复制]
...:可能重复:WhyisJavaVectorclassconsideredobsoleteordeprecated?哪种类型更好用以及如何选择合适的类型(内存使用、执行...)?【问题讨论】:【参考方案1】:您通常应该使用Arr 查看详情
使用数组或 List<> 哪个更好? [复制]
...发布时间】:2011-02-2720:38:00【问题描述】:我想知道哪种类型的性能更好,您认为应该使用哪种类型。例如,我有一个字符串列表,不知道我需要多少项,因此使用.Add(String)函数非常方便。我可以随时轻松地将新字符串添加到列... 查看详情
2dsphere vs 2d index:哪个“更好”/更快?
】2dspherevs2dindex:哪个“更好”/更快?【英文标题】:2dspherevs2dindex:whichis"better"/faster?【发布时间】:2014-01-3000:39:08【问题描述】:我有一个数据库,我的文档只有Points。我考虑添加一个地理空间索引。所以我可以从2dsphe... 查看详情
NSPredicate 与 NSString:查找超字符串哪个更好/更快?
】NSPredicate与NSString:查找超字符串哪个更好/更快?【英文标题】:NSPredicateversusNSString:Whichisbetter/fasterforfindingsuperstrings?【发布时间】:2011-06-0102:06:13【问题描述】:我正在搜索大量字符串以查看给定的子字符串是否存在。似乎... 查看详情
PHP,单引号或双引号中哪个更快? [复制]
】PHP,单引号或双引号中哪个更快?[复制]【英文标题】:WhatisfasterinPHP,singleordoublequotes?[duplicate]【发布时间】:2011-06-1918:07:19【问题描述】:可能重复:Isthereaperformancebenefitsinglequotevsdoublequoteinphp?单引号或双引号哪个更快,为什... 查看详情
哪种方法更好/更快的性能 - createElement 或 innerHTML? [复制]
】哪种方法更好/更快的性能-createElement或innerHTML?[复制]【英文标题】:Whichmethodisbetter/fasterforperformance-createElementorinnerHTML?[duplicate]【发布时间】:2017-06-2709:21:24【问题描述】:我正在制作带有几个子元素的div,如下所示:<divc... 查看详情
ArrayList 还是 LinkedList 哪个运行得更快? [复制]
】ArrayList还是LinkedList哪个运行得更快?[复制]【英文标题】:Whichonerunsfaster,ArrayListorLinkedList?[duplicate]【发布时间】:2013-09-1502:16:43【问题描述】:Listli=newLinkedList();for(inti=0;i<100;i++)li.add(i);longstart1=System.nanoTime();li.ge 查看详情
有没有更好更快的方法来使用推力从 CPU 内存复制到 GPU?
】有没有更好更快的方法来使用推力从CPU内存复制到GPU?【英文标题】:isthereabetterandafasterwaytocopyfromCPUmemorytoGPUusingthrust?【发布时间】:2012-03-1112:30:28【问题描述】:最近我一直在使用推力。我注意到,为了使用推力,必须始终... 查看详情
「sap技术」如何看z移动类型是复制哪个标准移动类型而创建的?
【SAP技术】SAPMM如何看一个自定义移动类型是复制哪个标准移动类型而创建的? 比如项目上有一个自定义移动类型Z59,是复制551移动类型而定义的。OMJJ配置界面里,是有一个Ref字段。如下图示,字段值显示为551。但是这... 查看详情
MySQL:在 1:N 关系中哪个更快?加入还是两个查询? [复制]
】MySQL:在1:N关系中哪个更快?加入还是两个查询?[复制]【英文标题】:MySQL:Whichoneisfasterin1:Nrelationships?Joinortwoqueries?[duplicate]【发布时间】:2013-12-3103:48:12【问题描述】:考虑由main_table_id链接的两个表:http://www.zigdigital.com.br/do... 查看详情
哪个更快,array_key_exists 或 array_search? [复制]
】哪个更快,array_key_exists或array_search?[复制]【英文标题】:whichisfaster,array_key_existsorarray_search?[duplicate]【发布时间】:2012-01-1402:52:03【问题描述】:可能重复:What’squickerandbettertodetermineifanarraykeyexistsinPHP?假设我想将我的好友... 查看详情
在性能 Lambda 或简单循环方面哪个更好? [复制]
】在性能Lambda或简单循环方面哪个更好?[复制]【英文标题】:WhichwouldbebetterintermsofperformanceLambdaorsimpleloop?[duplicate]【发布时间】:2015-10-1822:48:55【问题描述】:我已经快速阅读了OracleLambdaExpression文档。不过,这种例子帮助我更... 查看详情
PHP Sessions 或 cookie,哪个更好? [复制]
】PHPSessions或cookie,哪个更好?[复制]【英文标题】:PHPSessionsorcookies,whichisbetter?[duplicate]【发布时间】:2017-05-0316:28:51【问题描述】:我正在阅读有关php中的会话和cookie的信息,但我不知道哪个更好用谁能解释其中的区别?在此... 查看详情
javavspython:哪个未来发展更好?
...用程序开发在许多领域的绝佳选择。 Python是一种动态类型的编程语言,无需声明变量。而Java是一种统计类型的编程语言,其中必须明确声明变量。 即使未列出某些Java“类外壳”,Python代码也太小,这可能是python... 查看详情
性能方面哪个更好:对象原型还是构造函数本机函数? [复制]
】性能方面哪个更好:对象原型还是构造函数本机函数?[复制]【英文标题】:Performancewisewhichisbetter:Anobjectprotypeoranconstructorsnativefunction?[duplicate]【发布时间】:2016-05-1722:45:13【问题描述】:在性能方面什么是更好的做法:创建... 查看详情
数据映射器与数据访问对象。区别。哪个更好? [复制]
】数据映射器与数据访问对象。区别。哪个更好?[复制]【英文标题】:DataMappervsDataaccessobject.Difference.Whichoneisthebetterone?[duplicate]【发布时间】:2012-08-2911:38:42【问题描述】:可能重复:ORM/DAO/DataMapper/ActiveRecord/TableGatewaydifferences?... 查看详情
哪个sql查询更快?
】哪个sql查询更快?【英文标题】:Whichsqlqueryisfaster?【发布时间】:2014-12-2511:29:56【问题描述】:我正在使用postgresql数据库并希望改进查询(第一个)。我将其重写为第二个。但是我读了一篇文章,上面说“NOTIN”是非常缓慢... 查看详情
谁能告诉我强类型和弱类型是啥意思,哪个更好?
】谁能告诉我强类型和弱类型是啥意思,哪个更好?【英文标题】:CansomeonetellmewhatStrongtypingandweaktypingmeansandwhichoneisbetter?谁能告诉我强类型和弱类型是什么意思,哪个更好?【发布时间】:2010-09-2407:29:15【问题描述】:谁能告... 查看详情