前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

JavaScript之函数表达式&arguments详解

首页2016-07-27 11:40:43Front-End
JavaScript
  • 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){
			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);
@前端进阶之旅: 代码已经复制到剪贴板
fe

← JavaScript之IE,火狐兼容事件对象JavaScript之定时器 →