JavaScript 之函数表达式 arguments 详解

发布于 2024-11-02 02:38:35 字数 2406 浏览 27 评论 0

  • Thisarguments
  • 当一个函数运行的时候 函数内部能引用的变量有这么几种
  • AO
  • arguments
  • this
  • 对于 argumentsthis 函数都有自己的 argumentsthis 且不进行链式查找
  • arguments 是什么?
    • 答: arguments 是收到的实参的副本 在词法分析中
    • 首先形参形成 AO 属性 值为 undefined
    • 当实参传来时 再修改 AO 的相应属性
    • 并把收到的实参收集起来放到一个 arguments 对象里面 t(a,b,c){} 为例:调用 时 t(1,2,3,4,5) 个参数 此时 AO 属性只有 a,b,c 三个属性 但是 arguments1,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){
alert(3.14*arguments[0]*arguments[0]);
}else if(arguments.length ==2){
alert(arguments[0]*arguments[1]);
}else if(arguments.length ==3){
alert(arguments[0]+arguments[1]+arguments[2]);
}else{
return null;
}
}
area(10,20,30);
function  t(){
var age = 22;//age 在链的 AO 上
alert(arguments[0]); // 1
alert(arguments[1]); // 2

function d(){
alert(arguments[0]); // a
alert(arguments[1]); // undefined 此时这个 argument 不会找到上面的 arguments[1]去 只有 Ao 才会按照链来查找 argument 不会按照链查找

}
d('a');
}
t(1,2);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

温柔嚣张

暂无简介

文章
评论
24 人气
更多

推荐作者

屌丝范

文章 0 评论 0

lcx_

文章 0 评论 0

予囚

文章 0 评论 0

朦胧时间

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文