每日一道面试题 --- js 中的 arguments

本文介绍了JavaScript中的arguments对象,它用于获取函数调用时的实参数量和值。通过示例展示了如何利用arguments进行参数求和,并解释了arguments与Array的区别。同时,文章还提及了可以修改arguments中的实参值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

arguments 对象

定义一个函数,如果不确定用户是否传入了参数,或者不知道用户传入的参数有几个,无法进行计算。但如果已知参数的个数和值,就可以使用 arguments 。
arguments 对象,获取函数调用时传入了几个参数。取得是实参。

第一题

function foo(a) {
    alert(arguments.length);
}
foo(1, 2, 3);
  • 1
  • 2
  • 3
  • undefined

答案: 3

解析:arguments 取的是实参的个数,而foo.length取的是形参个数。

  • arguments 对象是所有(非箭头函数)函数中可以用的局部变量。
  • arguments 对象不是一个 Array 。它类似于 Array ,但是出了 length 属性和索引元素之外并没有任何 Array 的属性。
  • 对 arguments 对象 使用 typeof ,返回的是 “object”。但是对arguments[0] 使用 typeof 得到的是单个参数的类型。

例子

遍历参数求和

function add() {
    var sum =0,
        len = arguments.length;
    for(var i=0; i<len; i++){
        sum += arguments[i];
    }
    return sum;
}
add()                           // 0
add(1)                          // 1
add(1,2,3,4);                   // 10

使用函数创建 HTML

function list(type) {
  var html = '<' + type + 'l><li>';
  var args = Array.prototype.slice.call(arguments, 1);
  html += args.join('</li><li>');
  html += '</li></' + type + 'l>'; // end list 
  return html; 
}

let listHTML = list("u",'One', 'Two', 'Three')

console.log(listHTML) 
// <ul><li>One</li><li>Two</li><li>Three</li></ul>

第三题

function foo(a) {
    arguments[0] = 2;
    alert(a);
}
foo(1);
  • 1
  • 2
  • undefined

答案:2,实参可以直接从 arguments 数组中进行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值