JavaScript之函数表达式&arguments详解
This与arguments
-
当一个函数运行的时候 函数内部能引用的变量有这么几种
-
AO -
arguments -
this -
对于
arguments和this函数都有自己的arguments和this且不进行链式查找 -
arguments是什么?- 答:
arguments是收到的实参的副本 在词法分析中 - 首先形参形成
AO属性 值为undefined - 当实参传来时 再修改
AO的相应属性 - 并把收到的实参收集起来放到一个
arguments对象里面t(a,b,c){}为例:调用 时t(1,2,3,4,5)个参数 此时AO属性只有a,b,c三个属性 但是arguments有1,2,3,4,5所有的值
- 答:
-
对于超出形参个数的实参可以通过argument来获得
argument的索引从0 1 2..递增 与实参一一对应argument.length属性代表实参个数
-
arguments一定不是数组,但是长得像数组的一个对象而已 虽然也有length属性 -
arguments每个函数都有 因此只会在内部找自身的argument无法引用到外部的arguments
function t(a,b,c){//参数实际来AO的属性 有几个形参 就形成几个AO属性 arguments就代表这个函数的额参数
console.log(a);//1
console.log(b);//2
console.log(c);//3
console.log(arguments[0]);//1
console.log(arguments[1]);//2
console.log(arguments[2]);//3
a = 90;
console.log(a);//90
console.log(arguments[0]);//90 互为副本 arguments有一个好处 它接收的实际是你传过来的参数 arguments接收的是所有的实参
console.log(arguments[0]);
console.log(arguments[3]);//4
console.log(arguments[4]);//5
}
t(1,2,3,4,5);
@前端进阶之旅: 代码已经复制到剪贴板
//利用 argument的特点完成其他语言的函数重载
//求圆形面积 矩形面积 三角形面积
function area(){
if(arguments.length ==1){
ale