zoukankan      html  css  js  c++  java
  • forEach 以及 IE兼容

     

    语法

    array.forEach(function(currentValue, index, arr), thisValue)

    参数

    参数描述
    function(currentValue, index, arr) 必需。 数组中每个元素需要调用的函数。
    函数参数:
    参数描述
    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++;
            }
        };
    }
    

      



    还有分享一个技术群,474471759,跟随里面的大佬一起成长,进群之后里面的JimY就是我。

    如果我的博客解决了你的问题,那请你给个关注吧!
  • 相关阅读:
    vue的特点 关键字
    小程序技术实现
    SpringCloud简历模板
    SpringBoot简历模板
    SpringCloud+Eureka快速搭建微服架构
    Docker 面试题
    说说mysql的存储引擎,有什么区别?索引的介绍
    mysql语句
    fail-fast 与 fail-save 机制的区别
    动态规划总结
  • 原文地址:https://www.cnblogs.com/DreamSeeker/p/7207293.html
Copyright © 2011-2022 走看看