错题解析

在js函数中,我们对于函数的理解并不深刻,在我个人做的一些题目中,归结以下错题,做个总结

例题一:

6、下面代码输出的结果为?
var func = function(m, n) {
   	 arguments[0] = 3;
    	 n = 2;
   	 return m + n;
}
console.log(func(1));
 	A.2   B. 5   	C.编译报错,arguments数组未定义 		D.7

解析:
形参:函数定义的参数
实参:函数调用时实际传递的参数
参数的匹配从左向右进行匹配,如果实参个数少于形参,后面的参数对应赋值undefined
实参的个数如果多余形参的个数,可以通过 arguments访问。
—————————————————————————————————————————————
我们了解这个题目就必须理解arguments这个对象在javascript的一些功能:

其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。

arguments.length为函数实参个数,arguments.callee引用函数自身

我们用立即执行函数来演示一下:
在这里插入图片描述运行结果:
在这里插入图片描述从而得到arguments.callee与形参是一一映射

arguments特点:

  1. arguments对象和Function是分不开的。
  2. 因为arguments这个对象不能显式创建。
  3. arguments对象只有函数开始时才可用。

————————————————————————————————————————————
我们了解了arguments的作用以后再来分析这个题目:
第一步:先将函数调用的实参传递给函数的形参得到

m = 1  
n = undefined

第二步:在运行函数内部的内容
arguments[0] = 3;
arguments的0下标为3,传递给函数的形参m
所以m的值现在为3
在运行到:n = 2;
全局变量 n赋值为2
所以 m + n 最后的结果为5
正确答案为:B

例题二:

10、以下表达式输出是什么?
parseInt(13,8);parseInt(3,2);parseInt(3,-1);
    A. 3 3 3 				B.3 3 NaN
    C.3 NaN NaN     D.以上都是不对

这题我们就得了解parseInt第二个参数的作用:

表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

举例说明:

parseInt(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值