forEach 以及 IE兼容
Posted DreamSeeker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了forEach 以及 IE兼容相关的知识,希望对你有一定的参考价值。
语法
array.forEach(function(currentValue, index, arr), thisValue)
参数
参数 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
function(currentValue, index, arr) | 必需。 数组中每个元素需要调用的函数。 函数参数:
|
||||||||
thisValue | 可选。传递给函数的值一般用 "this" 值。 如果这个参数为空, "undefined" 会传递给 "this" 值 |
实例
计算数组所有元素相加的总和:
<buttononclick="numbers.forEach(myFunction)">点我</button><p>数组元素总和:<spanid="demo"></span></p><script> var sum = 0; var numbers = [65, 44, 12, 4]; function myFunction(item) { sum += item; demo.innerhtml = sum; } </script>
来源: http://www.runoob.com/jsref/jsref-foreach.html
实例
将数组中的所有值乘以特定数字:
<p>乘以: <inputtype="number"id="multiplyWith"value="10"></p><buttononclick="numbers.forEach(myFunction)">点我</button><p>计算后的值: <spanid="demo"></span></p><script> var numbers = [65, 44, 12, 4]; function myFunction(item,index,arr) { arr[index] = item * document.getElementById("multiplyWith").value; demo.innerHTML = numbers; } </script> 来源: http://www.runoob.com/jsref/jsref-foreach.html
值得注意的是 数组执行forEach之后,会改变了原数组的值,并且第三个参数即代表数组
forEach 只有在IE9以上才可以使用,为了更好的使用这个方法,有专门做了一个IE8的兼容
if ( !Array.prototype.forEach ) { Array.prototype.forEach = function forEach( callback, thisArg ) { var T, k; if ( this == null ) { throw new TypeError( "this is null or not defined" ); } var O = Object(this); var len = O.length >>> 0; if ( typeof callback !== "function" ) { throw new TypeError( callback + " is not a function" ); } if ( arguments.length > 1 ) { T = thisArg; } k = 0; while( k < len ) { var kValue; if ( k in O ) { kValue = O[ k ]; callback.call( T, kValue, k, O ); } k++; } }; }
以上是关于forEach 以及 IE兼容的主要内容,如果未能解决你的问题,请参考以下文章