写道
本文转自:http://blog.csdn.net/mevicky/article/details/47903457
如果转载,请写明出处
如果转载,请写明出处
本文介绍arguments属性。 每一个函数在定义的时候都会有一个内置的arguments属性,这个arguments属性类似数组但又不是数组。它具有数组的访问方式和length属性,却又有caller,callee等属性。 我们来举一个arguments的使用例子: var func = function(a,b){ document.write(a+' '+b+' '+"<br>"); document.write(arguments[0]+' '+arguments[1]+' '+arguments[2]+' '+"<br>"); } func(1,2,3); 结果为: 1 2 1 2 3 可以看到,我们可以通过arguments来访问函数中的参数。但是可以发现一点,即使形参中只定义了两个,而实参出现三个,arguments也可以访问到。这是怎么回事呢?这里我们就需要介绍一下arguments的属性了。 caller 对于函数来说,caller 属性只有在函数执行时才有定义。假如函数是由顶层调用的,那么 caller 包含的就是 null 。假如在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 相同,也就是说,显示的是函数的反编译文本。但是由于caller在后续版本会被弃用,这里就不详细介绍了。 callee callee 属性是 arguments 对象的一个成员,他表示对函数对象本身的引用,这有利于匿名函数的递归或确保函数的封装性。callee拥有length属性,这个属性有时候用于验证还是比较好的。arguments.length是实参度,arguments.callee.length是形参长度,由此能够判断调用时形参长度是否和实参长度一致。 看下面实例: function func(a,b){ document.write(a+' '+b+' '+"<br>"); document.write(arguments[0]+' '+arguments[1]+' '+arguments[2]+' '+"<br>"); document.write(arguments.length+"<br>");//实参个数 document.write(arguments.callee.length+"<br>")//形参个数 } func(1,2,3); 结果为: 1 2 1 2 3 3 2 callee还有一个作用就是用来调用函数自身,用法如下: function commonParentNode(oNode1, oNode2) { if(oNode1.contains(oNode2)){ return oNode1; }else if(oNode2.contains(oNode1)){ return oNode2; }else { return arguments.callee(oNode1.parentNode,oNode2);//递归调用 } } 通过arguments.callee实现递归。
布瑞泽的童话-博客 写道
http://blog.csdn.net/mevicky/article/details/47903457
相关推荐
理解Javascript函数形式参数与arguments 在JavaScript中,函数的形式参数和arguments之间存在着微妙的关系。为了深入理解这方面的知识,我们需要首先了解形式参数和实际参数的概念。形式参数指的是定义方法时所明确...
JavaScript是一种在浏览器和服务器端广泛使用的编程语言,它支持面向对象、命令式、...理解变量对象的工作原理,有助于深入理解JavaScript的作用域、变量提升和闭包等高级特性,对于编写出可维护和高效的代码非常重要。
深入理解JavaScript中的arguments对象对于编写灵活的函数代码非常有帮助,尤其是在处理可变参数函数和递归函数时。尽管arguments对象不是数组,但通过上述方法可以将其转换成数组进行操作,且它提供的caller和callee...
首先,让我们深入了解一下`arguments`对象。`arguments`是JavaScript函数内部的一个特殊变量,它是一个类数组对象,包含了函数调用时传入的所有参数。`arguments`不仅有`length`属性,表明传入参数的数量,还有`...
了解和掌握这些概念,对于深入理解JavaScript函数执行过程以及编写更加灵活、强大的函数代码都是非常有帮助的。当然,随着JavaScript语言的发展,新的函数特性比如箭头函数等可能会影响到arguments、caller和 callee...
### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...
总的来说,《JavaScript权威指南(第5版)》是一本全面而深入的JavaScript教程,涵盖了从基础到高级的各个方面,对于想要深入理解和精通JavaScript的开发者来说,是一份不可多得的学习资料。通过阅读这本书,读者...
在JavaScript中,`arguments` 和 `arguments.callee` 是两个非常重要的概念,它们在处理函数参数和...尽管 `arguments.callee` 在现代JavaScript中不建议使用,但理解这两个特性对于掌握JavaScript的高级用法至关重要。
总之,深入理解JavaScript中的this关键字是提高编程技能不可或缺的一部分。通过掌握this在不同上下文中的行为和如何正确地控制this的绑定,开发者可以更有效地使用JavaScript编写出更加结构化和可重用的代码。
JavaScript函数参数的理解是每个JavaScript开发者必须掌握的基础知识。在JavaScript中,函数参数具有以下几个关键特点: 1. **无类型检查**:JavaScript函数不关心传递的参数类型,这意味着你可以将任何类型的值...
首先,让我们深入理解`arguments`对象的用途。当函数被调用时,即使没有声明足够多的形参来接收所有的实参,`arguments`对象也会自动创建并存储所有的实参。例如,在以下示例中,`box`函数没有声明任何参数,但仍然...
Javascript作为一门动态语言,提供了高度灵活的编程模式。在日常开发过程中,我们经常需要根据实际情况动态地调用方法并修改参数。...通过本文的介绍,希望大家能够更加深入地理解Javascript在这方面的高级特性。
4. **函数**:深入理解函数表达式、函数声明、闭包和立即执行函数(IIFE),这些都是JavaScript中的重要概念。了解如何使用arguments对象,以及如何利用rest参数和默认参数来优化函数签名。 5. **异步编程**:...
在JavaScript编程语言中,`arguments`对象是一个非常特殊且实用的特性,它允许开发者访问函数内部接收到的所有参数,无论这些参数是否已经被...理解这些特性对于深入掌握JavaScript函数的动态特性和灵活性至关重要。
在讨论arguments对象的作用之前,我们先简单理解JavaScript中的函数。JavaScript中的函数是一种特殊的对象类型。当我们定义一个函数时,实际上是在创建一个新的函数对象,并且函数名仅仅是这个函数对象的一个引用...
《JavaScript权威指南(第5版)中文版(下)》这部分内容将帮助开发者深入理解JavaScript的高级特性,提高编程能力,为构建复杂的Web应用打下坚实基础。通过学习和实践,开发者可以更好地应对现代JavaScript开发中的挑战...
总的来说,这个主题涵盖了JavaScript的高级特性和面向对象编程的核心概念,对于深入理解和应用JavaScript是至关重要的。通过学习和理解 `this.initialize.apply(this, arguments)` 这样的代码,开发者可以更好地掌握...