编程语言
首页 > 编程语言> > javascript的.length的时间复杂度

javascript的.length的时间复杂度

作者:互联网

javascript的数组.length的时间复杂度是多少?我认为它会保持不变,因为看起来属性是在所有阵列上自动设置的,你只是在查找它?

解决方法:

I think it would be constant since it seems that property is set automatically on all arrays and you’re just looking it up?

对.大概.它是一个存储(未计算)并根据需要自动更新的属性.

话虽如此,请记住JavaScript引擎可以在封面下自由地执行他们喜欢的操作,前提是您无法忽略规范所说的内容.由于规范没有说明长度的时间复杂性…

还要记住,JavaScript的标准数组在理论上只是objects with special behavior.理论上,JavaScript对象是属性包.因此,在理论上,查找属性包中的属性可能取决于有多少其他属性,如果对象被实现为某种名称 – >值hashmap(并且它们曾经是旧的,回到过去的旧版本中)天).现代引擎优化对象(Chrome的V8着名创建动态类并编译它们),但对这些对象的操作仍然可以改变属性查找性能.例如,添加属性可能会导致V8创建子类.删除属性(实际上使用删除)可能会使V8甩手并退回到“字典模式”,这会大大降低对象的属性访问权限.

换句话说:它可能会有所不同,从引擎到引擎,甚至是对象.但是如果你纯粹使用数组作为数组(不在其上存储其他非数组属性),那么你可能会获得恒定时间查找.

标签:javascript,time-complexity
来源: https://codeday.me/bug/20191002/1842571.html