美文网首页
函数中arguments的坑

函数中arguments的坑

作者: newway_001 | 来源:发表于2019-05-31 16:23 被阅读0次

    arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性。例如,它没有 pop,shfit等方法。但是它可以被转换为一个真正的Array

    转换成数组的办法:

    1:
    var args = Array.prototype.slice.call(arguments);
    
    2:
    var args = [].slice.call(arguments);
    
    // ES2015
    3:
    
    const args = Array.from(arguments);
    4:
    const args = [...arguments];
    

    讲一个关于函数好玩的例子:

    > function myConcat(separator) {
    ... return separator
    ... }
    undefined
    > myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
    '; '
    //对,你没有看错,她只返回第一个。。。。。
    //也就是如果你使用函数的形参,而不是使用arguments的话。。
    //它会默认返给你类数组对象的第一个值;
    
    function myConcat(separator) {
      var args = Array.prototype.slice.call(arguments, 2);
    //这里slice()函数只传入一个参数2,意味着,slice(2,end)
    //args为['lion,'cheetah']转为数组格式
      return args.join(separator);
    //args.join(separator);相当于args.join(',');
    //return 的结果为字符串类型:'lion,cheetah'
    
    }
    
    myConcat(", ", "red", "orange", "blue");
    
    
    
    
    

    相关文章

      网友评论

          本文标题:函数中arguments的坑

          本文链接:https://www.haomeiwen.com/subject/bdzwtctx.html