JS一步一步之Arguments

1、arguments[]数组只在函数体内定义。在函数体内,arguments引用该函数的Arguments对象,该对象有带有编号的属性,并作为一个存放传递给函数的所有参数的数组。标识符arguments本质是一个局部变量,在每个函数中都会被自动声明并被初始化。它只在函数体中才能引用Arguments对象,在全局代码中没有定义。

function arg(a,b){
    if(arguments[0]){
        alert(arguments[0]);
    }
    if(arguments[1]){
        alert(arguments[1]);
    }
}

2、Arguments对象只在函数体中定义。虽然技术上说,它不是数组,但Arguments对象有带编号的属性,这些属性可以作为数组元素,而且他有length属性,该属性声明了数组元素的个数。它的元素是作为参数传递给函数的值。元素0是第一个参数,所有作为参数传递的值都会成为Arguments对象的数组元素,无论函数声明中是否有这些参数。

3、arguments.callee属性引用当前正在运行的函数(无论函数是否命名,都可以使函数引用自身)。该属性只有在函数体内被定义。

var fac=function(a){
    if(a<2)
        return 1;
    else
        return a*arguments.callee(a-1);
}

var y=fac(5);

4、arguments.length属性 传递给当前函数的个数。这个属性声明的是实际传递给函数的参数个数

function check(args){
    var actual=args.length;
    var expected=args.callee.length;
    if(actual != expected){
        throw new Error("Wrong number of arguments:extected: "+expected +"; actually passed: "+actual);
    }
}

function f(x,y,z){
    check(arguments);
    return x+y+z;
}

参照:JavaScript权威指南

时间: 2024-08-02 18:36:04

JS一步一步之Arguments的相关文章

一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 项目地址:https://github.com/jrainlau/wechat-subscriptor 下载&运行 git clone git@github.com:jrainlau/wechat-subscriptor.git cd wechat-subscriptor && np

一步一步搭建客服系统 (4) 客户列表 - JS($.ajax)调用WCF 遇到的各种坑

阅读目录 1 创建WCF服务 2 调用WCF 3 配置 4 遇到的各种坑 本文以一个生成.获取"客户列表"的demo来介绍如何用js调用wcf,以及遇到的各种问题. 回到顶部 1 创建WCF服务 1.1 定义接口 创建一个接口,指定用json的格式: [ServiceContract] interface IQueue { [OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBo

一步一步实现基于Task的Promise库(二)all和any方法的设计和实现

在上一篇中我们已经初步完成了Task类,如果仅仅是这些,那么没有多大意义,因为网上这类js库有很多,现在我们来些更复杂的使用场景. 如果我们现在有这样一个需求:我们要先读取aa.txt的内容,然后去后台解析,同时bb.txt也要读取解析,然后当两个文件都解析完了,我们还要合并两部分内容存到cc.txt中,最后发个通知说ok了..需求很变态,但是我还是想问有没有好的办法呢?按照最原始的嵌套回调的写法好像不是那么容易了,因为你没法知道aa.txt和bb.txt两个文件的读取解析谁先完成,所以你除了要

一步一步学习Vue(十一)

本篇继续学习vuex,还是以实例为主:我们以一步一步学Vue(四)中讲述的例子为基础,对其改造,基于vuex重构一遍,这是原始的代码: todolist.js ; (function () { var list = []; var Todo = (function () { var id = 1; return function (title, desc) { this.title = title; this.desc = desc; this.id = id++; } })(); /** *

一步一步写jQuery插件

转载自:http://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jquery的插件机制,jquery有着成千上万的第三方插件,有时我们写好了一个独立的功能,也想将其与jquery结合起来,可以用jquery链式调用,这就要扩展jquery,写成插件形式了,如下

大流量网站性能优化:一步一步打造一个适合自己的BigRender插件(转)

BigRender 当一个网站越来越庞大,加载速度越来越慢的时候,开发者们不得不对其进行优化,谁愿意访问一个需要等待 10 秒,20 秒才能出现的网页呢? 常见的也是相对简单易行的一个优化方案是 图片的延迟加载.一个庞大的页面,有时我们并不会滚动去看下面的内容,这样就浪费了非首屏部分的渲染,而这些无用的渲染,不仅包括图片,还包括其他的 DOM 元素,甚至一些 js/css(某些js/css 是根据模块请求的,比如一些 ajax),理论上,每增加一个 DOM,都会增加渲染的时间.有没有办法能使得

一步一步学习SignalR进行实时通信_8_案例2

原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建立DrawingHub 页面 javascript 实现效果 结束语 参考文献 前言 这讲分析一个案例,在一个画板上画画实时在其他客户端上显示. 配置Hub 在Startup中进行配置: public void Configuration(IAppBuilder app) { app.MapSign

一步一步学Vue(十二)

为了提升代码的逼格,之后代码改为Vue文件组件,之前代码虽然读起来容易理解,而且适合在小的项目中使用,但是有如下缺点: 全局定义(Global definitions) 强制要求每个 component 中的命名不得重复 字符串模板(String templates) 缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 不支持CSS(No CSS support) 意味着当 HTML 和 JavaScript 组件化时,CSS 明显被遗漏 没有构建步骤(No build step) 限

一步一步学Vue(五)

本篇是是vue路由的开篇,会以一个简单的demo对vue-router进行一个介绍,主要覆盖以下几个常用场景: 1.路由跳转 2.嵌套路由 3.路由参数 1.Vue-Router 一般来说,路由定义就是定义地址访问规则,然后由路由引擎根据这些定义的规则去查找对应的页面,并转发请求给页面进行处理:对于后端来说就是这么一个模式,但前端不同,前端路由变化也只是页面内的导航比如angular中的模版切换,比如vue和react中的component切换,这种方式都是基于浏览器hash模拟url跳转. v

值得我们深入研究和学习:从零开始一步一步搭建坚不可摧的Web系统主流架构

本文标签: Web系统主流架构 搭建Web系统架构 缓存服务器 数据库架构   技术型初创公司  互联网杂谈 主题简介: 1.网站系统架构当前现状 2.Web系统主流架构解析 3.互联网技术团队初期组建经验分享 本文主要结合我之前在海尔电商平台和现在公司的一些实际架构经验,综合实际情况和个人的理解,跟大家分享一下搭建Web系统的一些常用的技术架构和应用技巧. 首先要跟大家探讨一个问题,就是当前传统IT企业或是传统企业的IT系统目前的系统架构是怎样的呢? 就我所经历的NEC软件.海尔集团.青岛航空