JavaScript - arguments object

The arguments object is an Array-like object corresponding to the arguments passed to a function.

function func1(a, b, c) {
  console.log(arguments[0]);
  // expected output: 1

  console.log(arguments[1]);
  // expected output: 2

  console.log(arguments[2]);
  // expected output: 3
}

func1(1, 2, 3);

arguments对象是所有(非箭头)函数中可用的局部变量。 您可以使用arguments对象在函数内引用函数的参数。 此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。

arguments对象不是Array。 它类似于Array,但除了length之外没有任何Array属性。 例如,它没有pop方法。 但是它可以转换为真正的数组:

var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);

// ES2015
const args = Array.from(arguments);

Example:

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);
  return args.join(separator);
}

// returns "red, orange, blue"
myConcat(', ', 'red', 'orange', 'blue');

// returns "elephant; giraffe; lion; cheetah"
myConcat('; ', 'elephant', 'giraffe', 'lion', 'cheetah');

// returns "sage. basil. oregano. pepper. parsley"
myConcat('. ', 'sage', 'basil', 'oregano', 'pepper', 'parsley');
function list(type) {
  var result = '<' + type + 'l><li>';
  var args = Array.prototype.slice.call(arguments, 1);
  result += args.join('</li><li>');
  result += '</li></' + type + 'l>'; // end list

  return result;
}

var listHTML = list('u', 'One', 'Two', 'Three');

/* listHTML is:

"<ul><li>One</li><li>Two</li><li>Three</li></ul>"

*/
function foo(...args) {
  return args;
}
foo(1, 2, 3); // [1,2,3]

 

posted @ 2018-08-21 17:37  sufei  阅读(192)  评论(0编辑  收藏  举报