这个停止标准(for-loop)是如何工作的?

时间:2018-04-11 11:46:59

标签: javascript

我一直在寻找一种方法,将我的HTML表单输入到我的javascript代码而不需要服务器,并在Stackoverflow上发现这篇文章: How to use HTML forms without a server

在那里,第一个答案包括以下链接到js.fiddle上的代码示例: http://jsfiddle.net/wG8K4/1/



function updateBackgroundColor(color) {
  document.body.style.backgroundColor = color;
}

function displayFormContents(someForm) {
 var out = '';
    for (var i=0, el; el = someForm.elements[i]; i++) {
        if (el.name) {
            out += el.name + ' = ' + el.value + '\n';
        }
    }
 alert(out);
}

<form>
 <select name='gender' onchange='updateBackgroundColor(this.value);return false;'>
 <option value=''>Select A Gender</option>
 <option value='blue'>Male</option>
 <option value='pink'>Female</option>
 </select><br/>
 type your nickname: <input type='text' name='nickname' /><br />
 <input type='button' value='Display Form Contents' onclick='displayFormContents(this.form);return false;' />
 </form>
&#13;
&#13;
&#13;

我已经在我自己的代码中试用了这种方法,但它确实有效。但是,我不明白这个停止标准是如何工作的

&#13;
&#13;
el = someForm.elements[i]
&#13;
&#13;
&#13;

当索引到达一个没有相应数组元素的值时,这会停止标准吗(数组因此可能会返回undefined / false之类的内容)?我想是的,因为我还可以观察到循环只迭代2次(索引0和1)。但是,我无法验证这个假设,这就是我想在这里问的原因。

1 个答案:

答案 0 :(得分:0)

el = undefinedundefined,这是一个停止循环的 falsy 值。

这意味着只要i大于或等于someForm.elements.length(当someForm.elements[i]undefined时),循环就会停止。