- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在各种语言中(我将在这里使用 JavaScript,但我已经在 PHP 和 C++ 中以及可能在其他地方看到过它),似乎有几种构造简单 for 循环的方法。版本 1 如下:
var top = document.getElementsByTagName("p");
for (var i = 0; i < top.length; i++) {
...do something
}
而在其他地方,我看到人们构建 for 循环,例如:
for (var i = 0, ii = top.length; i < ii; i++)
似乎人们这样做没有押韵或理由 - 同一个程序员会在同一个脚本中完成这两项工作。有什么理由只做其中一项而不做另一项吗?
干杯
最佳答案
在某些语言中,获取数组或字符串的长度可能是一项昂贵的操作。由于它在循环期间不会改变,因此每次测试迭代变量是否已到达末尾时都这样做是浪费的。因此,获取一次长度并将其保存在变量中会更有效。
一个示例是在 C 语言中迭代字符串。在 C 语言中,strlen()
是一个 O(n) 操作,因为它必须搜索 char 数组以查找终止 0 元素。如果您写道:
for (i = 0; i < strlen(string); i++)
你的循环时间复杂度为 O(n2)。
在像 Javascript 这样的语言中,获取长度的成本并不高,但程序员仍坚持他们的旧习惯。而那些从未使用过其他语言的程序员会向使用过其他语言的人学习习惯用法,因此他们在不知道原因的情况下使用了这种编码风格。
请观看此 YouTube 视频,了解此类事件如何在社区中发生:
关于javascript - 指定 for 循环的终点有哪些优点和缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25460123/
我需要用一些数据计算弧长: 起始点坐标(Xs、Ys、Zs) 结束点及坐标(Xe、Ye、Ze) 中心点及坐标(Xc、Yc、Zc) Axis 向量,包含分量(Xa、Ya、Za) Arc 从 Start 点
通常 UICollectionView 在滚动超过它的 contentSize 时开始反弹,即当 contentOffset contentSize.width用于水平方向。 是否可以更改此行为,以
我的要求是,当表格宽度大于当前视口(viewport)时,必须添加左右两个按钮。当用户单击左侧按钮时,表格必须向左移动,同样向右移动。 所以我决定使用 jQuery 动画方法来完成要求。我的挑战是,我
我有一堆坡道,我想知道它们的起点和终点(如果有多个起点/终点,我想知道它们是如何连接的)。我目前将这些作为 List ret = new List(); FilteredElementCollecto
我使用了以下代码,仅输入start_point和end_point: import matplotlib.pyplot as plt from matplotlib.path import Path
我正在尝试从 mapr fs origin 进行简单的数据移动到 mapr fs destination (这不是我的用例,只是为了测试目的做这个简单的 Action )。尝试 validate 时这
我是一名优秀的程序员,十分优秀!