当前位置: 首页 > 编程日记 > 正文

JavaScript arguments对象

1、在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可)。

复制代码
1 Array.prototype.testArg = "test";
2 function funcArg() {
3     alert(funcArg.arguments.testArg);  
4     alert(funcArg.arguments[0]);
5 }
6 
7 alert(new Array().testArg); // result: "test"
8 funcArg(10);                // result: "undefined"  "10"
复制代码

2、arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。如下代码可以得以验证。

复制代码
 1 function f(a, b, c){2     alert(arguments.length);   // result: "2"3     a = 100;4     alert(arguments[0]);       // result: "100"5     arguments[0] = "qqyumidi";6     alert(a);                  // result: "qqyumidi"7     alert(c);                  // result: "undefined"8     c = 2012;9     alert(arguments[2]);       // result: "undefined"
10 }
11 
12 f(1, 2);
复制代码

3、由JavaScript中函数的声明和调用特性,可以看出JavaScript中函数是不能重载的。

根据其他语言中重载的依据:"函数返回值不同或形参个数不同",我们可以得出上述结论:

第一:Javascript函数的声明是没有返回值类型这一说法的;

第二:JavaScript中形参的个数严格意义上来讲只是为了方便在函数中的变量操作,实际上实参已经存储在arguments对象中了。

另外,从JavaScript函数本身深入理解为什么JavaScript中函数是不能重载的:在JavaScript中,函数其实也是对象,函数名是关于函数的引用,或者说函数名本身就是变量。对于如下所示的函数声明与函数表达式,其实含义上是一样的(在不考虑函数声明与函数表达式区别的前提下),非常有利于我们理解JavaScript中函数是不能重载的这一特性。

复制代码
 1 function f(a){2     return a + 10;3 }4 5 function f(a){6     return a - 10;7 }8 9 // 在不考虑函数声明与函数表达式区别的前提下,其等价于如下
10 
11 var f = function(a){
12     return a + 10;
13 }
14 
15 var f = function(a){
16     return a - 10;
17 }
复制代码

4、arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

如下:

复制代码
1 function count(a){
2     if(a==1){
3         return 1;
4     } 
5     return a + arguments.callee(--a);
6 }
7 
8 var mm = count(10);
9 alert(mm);
复制代码
---------------------------------------------------------------------------------

转载自http://www.cnblogs.com/lwbqqyumidi/

转载于:https://www.cnblogs.com/ztoz/p/5510293.html

相关文章:

iOS开发之 - 好玩的富文本

周末闲着没事,就想着不如把那些容易遗忘的知识点整理一下,一来可以让有需要的朋友少走弯路,二来自己以后再忘记的时候也可以回头看看......但 iOS 中小冷易忘的知识点实在太多了,不知道该从哪里开始整理,“百无聊赖”逛…

sharepoint自带JS函数获取URL参数

GetUrlKeyValue 转载于:https://www.cnblogs.com/bmib/p/3139749.html

ESXi6.5环境搭建(四:虚拟机操作系统安装及配置)

实验目的及要求 完成VMware workstations安装,会应用相关操作;完成虚拟机中ESXI6.5平台的安装及网络环境配置;完成VMware vSphere Client 6.0软件在PC端的安装及配置;完成使用浏览器或者VMware vSphere Client 6.0中对ESXI6.5的操…

iOS 生成带 logo 的二维码,区域截屏保存至相册(小功能二连发 (一))

原文链接:http://www.jianshu.com/p/36e9f012ef39生成带 logo 的二维码 区域截屏相关 —— 由3033分享开篇 最近项目需要搞了几个相对独立的小功能,今天有空总结一下他们的实现思路和方法,并总结一点项目中帮同事解决的问题,在此立…

JavaScript-学习一全局变量

因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。 局部变量在函数开始执行时创建,函数执行完后局部变量会自动销 不限制位置的 JavaScript 变量生命周期在它声明时初始化。 局部变量在函数执行完毕后销毁。 全局变量在页面关闭后销毁…

Android 4.2真坑爹

艹~~~,Android4.2真坑爹,4.1以前的方法都不能使用了。 操蛋呢。。。转载于:https://www.cnblogs.com/liushuibufu/p/3253611.html

ESXi6.5环境搭建(五:常见问题及解决方案实验总结)

实验目的及要求 完成VMware workstations安装,会应用相关操作;完成虚拟机中ESXI6.5平台的安装及网络环境配置;完成VMware vSphere Client 6.0软件在PC端的安装及配置;完成使用浏览器或者VMware vSphere Client 6.0中对ESXI6.5的操…

《Linux4.0设备驱动开发详解》笔记--第十二章:Linux设备驱动的软件架构思想

待补充转载于:https://www.cnblogs.com/zcjboke/p/5513130.html

iOS_Development~ 添加 / 隐藏 UITabBar 右上角的小红点

原文链接:http://www.jianshu.com/p/de72118a49ad添加 / 隐藏 UITabBar 右上角的小红点 —— 由anticipate_91分享添加/隐藏UITabBar右上角的小红点 话不多说,直接上代码吧! 1.添加tabBar的小红点 /** 添加tabBar的小红点* index&#xff1…

解决ubuntu上opengl的问题

装完ubuntu之后,对于opengl的程序总是出现问题,先将解决方案列出如下: http://www.linuxforums.org/forum/ubuntu-linux/175490-graphics-driver-problem.html http://superuser.com/questions/484991/nvidia-graphics-driver-in-ubuntu-12-0…

OpenStack环境搭建(一:Virtual Box 5.1 环境的安装及配置)

实验要求: 完成Virtual box平台安装,会应用相关操作;在virtual box虚拟平台上部署Fuel Master节点;在virtual box虚拟平台上部署计算节点Computer;在virtual box虚拟平台上部署控制节点Controller;在web控…

[转载]SSH框架搭建详细图文教程

什么是SSH? SSH对应 struts spring hibernatestruts 采用MVC模式,主要是作用于用户交互spring 采用IOC和AOP~作用比较抽象,是用于项目的松耦合hibernate 是对象持久化框架,其实就是实体类和数据库表建立关系,操作类就会触发相应的…

iOS 开发之 pdf 文档的加载与浏览的 4 种方式

原文链接:http://www.jianshu.com/p/1d4305a02ea5在我们的开发中,有些像电子书类型的 app 的开发会涉及到 pdf 文档的加载与展示。由于笔者项目中正好涉及到这块,于是将 pdf 常用的几种加载方式做个总结。以供后面可能用到的同学做个参考。 —…

利用三个点(trsf)来实现各种规则图形的实现

在Val3,是使用trsf(x,y,z,rx,ry,rz)来实现三维空间点的位置与方向。其中第一点和第二点位置很重要,第三点是用来确定方向。根据这三个点先确定一个用户坐标系。在这个坐标系中,实现圆,三角形,矩形,腰圆,正五…

OpenStack环境搭建(二:Fuel Master的安装及配置)

实验要求: 完成Virtual box平台安装,会应用相关操作;在virtual box虚拟平台上部署Fuel Master节点;在virtual box虚拟平台上部署计算节点Computer;在virtual box虚拟平台上部署控制节点Controller;在web控…

ScratchCardView:刮刮卡视图组件

原文链接:https://github.com/pgorzelany/ScratchCardViewScratchCardView:刮刮卡视图组件。# 为开源点赞# —— 由SwiftLanguage分享Example To run the example project, clone the repo, and run pod install from the Example directory first. Inst…

getaddrinfo()函数详解

1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的&…

OpenStack环境搭建(三:Computer与Controller节点的安装及配置)

实验要求: 完成Virtual box平台安装,会应用相关操作;在virtual box虚拟平台上部署Fuel Master节点;在virtual box虚拟平台上部署计算节点Computer;在virtual box虚拟平台上部署控制节点Controller;在web控…

iOS - 支持水平 / 垂直显示自动滚动的跑马灯控件 --- SKAutoScrollLabel 的使用和实现

原文链接:http://www.jianshu.com/p/7221bc08f26aSKAutoScrollLabel 是一个同时支持水平 / 垂直两种类型的 “跑马灯” 效果的自动滚动 UILabel。在滚动的边缘使用了梯度褪色来解决滚动边缘生硬的效果问题,总体效果呈现出混然天成的感觉,并且…

Git简明手册

文/AbnerKang(简书作者)原 文链接:http://www.jianshu.com/p/d7a7ba4f2341?utm_campaignmaleskine& utm_contentnote&utm_mediumreader_share&utm_sourceweixin&fromtimeline&isappinstalled0著作权归作者所…

今天是2013年06月21日,博客之路开始了!

RT,从今天开始,准备养成写博客的习惯。 一是对学习的成果进行总结  二是检验自己是否真的弄懂某一个问题  三是分享出来与大家共勉。从此开启我的程序人生之路吧!转载于:https://www.cnblogs.com/penghongwei/p/3147999.html

OpenStack环境搭建(四:web控制端各节点的部署及配置)

实验要求: 完成Virtual box平台安装,会应用相关操作;在virtual box虚拟平台上部署Fuel Master节点;在virtual box虚拟平台上部署计算节点Computer;在virtual box虚拟平台上部署控制节点Controller;在web控…

Spring+SpringMVC+shiro+mysql(一)

SpringSpringMVCshiromysql(一) 最近要做个后台管理系统,就会设计到权限的管理控制,于是就想到 shiro ,下面是自己对Springshiro的一点点理解,记录下来,一起多探讨: 项目结构 1. pom…

【iOS】Socket/TCP 通信 发送 NSString 字符串格式数据

Socket/TCP 原理这里就不阐述了,网上一搜一大堆,直接上关键代码。 【注】iOS 目前有非常著名的第三方库 CocoaAsyncSocket 可以使用,但是我们项目当时做大数据上报要求直接发送 NSString 格式数据,所以自己写了一个简易版 TCP 连接…

[Win]进程间通信——邮槽Mailslot

进程间通信 进程的地址空间是私有的。出于安全性的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的,也无法知道内存中保存的数据的意义。但是在一些具体的应用情况下需要多个进行相互配合,有时计算机用户也…

OpenStack环境搭建(五:附加项虚拟机文件备份使用)

实验要求: 完成Virtual box平台安装,会应用相关操作;在virtual box虚拟平台上部署Fuel Master节点;在virtual box虚拟平台上部署计算节点Computer;在virtual box虚拟平台上部署控制节点Controller;在web控…

IOS入门-TargetAction

创建一个UIButton 并用Target - Action来监听它的点击事件 Target -- self控制器 Action -- 具体动作,self控制器中的某个方法 forControlEvents:UIControlEventTouchUpInside -- 表示监听的事件 1 - (void)btnclick:(id)sender2 {3 NSLog("点击%" ,…

【iOS_Development】文件操作

原文链接:http://www.jianshu.com/p/c5820ab6836biOS 文件操作 —— 由anticipate_91分享NSFileManager:是用来管理文件系统的,它可以用来进行常见的文件\文件夹操作获取NSFileManager示例[NSFileManager defaultManager] 增删改查 1. 创建文…

仿人智能控制器的参数简化(已发表于《计算机测量与控制》2013年第4期)

转载于:https://www.cnblogs.com/snake-hand/p/3153313.html

OpenStack环境搭建(六:常见问题及解决方案总结)

实验要求: 完成Virtual box平台安装,会应用相关操作;在virtual box虚拟平台上部署Fuel Master节点;在virtual box虚拟平台上部署计算节点Computer;在virtual box虚拟平台上部署控制节点Controller;在web控…