JS中arguments.callee用法及属性

JavaScript arguments对象详解 在JavaScript中,arguments对象是一个特殊的对象,它在函数内部自动创建,并且包含了函数被调用时传递的所有参数。在上面的例子中,sum函数接受两个参数a和b,通过arguments.length可以获取到传递给函数的参数个数,arguments[0]和arguments[1]分别表示第一个和第二个参数的值。arguments对象不是一个真正的数组,它只是类似数组的对象。arguments对象是与函数参数相关联的,当修改函数参数的值时,arguments对象的值也会相应地改变。 阅读详情

//—————-arguments基本使用————————//

-- -- -- -- --

``
function argTest(a, b, c, d) {
这里写代码片`
var numargs = arguments.length; // 实参个数
var expargs = argTest.length; // 形参个数。
alert(“实参数目为:” + numargs);
alert(“形数数目为:” + expargs);
alert(“arguments[0]=” + arguments[0]); //这个在IE和火狐下都支持
alert(“argTest[0]=” + argTest[0]); //IE8.0-undefined,Mozilla/5.0 支持。
alert(typeof(arguments)); //arguments是对象
}
argTest(1, 2)

//一句话,arguments.length就是实参个数,函数名.length就是形参个数//


//----------------caller基本使用------------------------//  
function callerDemo() {
    if(callerDemo.caller) {
        alert(typeof(callerDemo.caller)); //返回定义式类型(function)
        alert(callerDemo.caller); //返回上级函数的引用
        var a = callerDemo.caller.arguments[0];
        alert(a);
    } else {
        alert("this is a top function");
        alert(callerDemo.caller);
        alert(typeof(callerDemo.caller)); //typeof(null)返回object
    }
}

function handleCaller() {
    callerDemo();
}
callerDemo();
handleCaller("参数1", "参数2");

function calleeDemo() {
    alert(arguments.callee); //正被执行的 function 对象引用
}

//----------------这到底怎么了???-----------------------//
function Sing() {
    with(arguments.callee)
    alert(arguments.callee);
    alert(author + ":" + poem);
};
Sing.author = "李白";
Sing.poem = "汉家秦地月,流影照明妃。一上玉关道,天涯去不归";
Sing();
Sing.author = "李战";
Sing.poem = "日出汉家天,月落阴山前。女儿琵琶怨,已唱三千年";
Sing();
//这个只输出一个弹出框,应该共有六个呀?
//原因如下:alert(arguments.callee)执行后当前引用(arguments.callee)变成了alert函数引用,这个引用中没有author和poem属性。
//----------------还是谨慎调用arguments.callee-----------------------//


//----------------caller与匿名定义式基本使用------------------------//
//匿名定义式调用;
(function(arg0, arg1) {
    alert(arguments.callee);
    alert("参数个数为:" + arguments.callee.length); //这里到底是形参个数还是实参个数?看如下分析。
})();

function anonymousFnCall() {
    alert("Hello world");
    this.a = "第一个属性";
    //一个匿名定义式
    this.show = function(arg0, arg1) {
        alert(this.a);
        alert("参数个数为:" + arguments.callee.length)
    };
    this.sayHello = function() {
        return function() { alert("hello"); };
    };
}
var ano = new anonymousFnCall();
ano.show('1'); //已经表明arguments.callee.length是形参个数了,因为arguments.callee相当于 函数名.length
ano.sayHello()(); //对定义式的调用不要忘记();
//一句话,函数名.callee是对上一级函数的引用,arguments.callee是对正在运行的函数引用//
//-----------------apply与call---------------------//
function ObjectA() {
    this.getMsg = function(msg) { alert(msg) }
}

function ObjectB() {
    //ObjectA.call(this);
    ObjectA.apply(this, arguments);
    getMsg('Object参数');
}
ObjectB('参数0');
//-----------------apply与call调用差别---------------------//
function act() {
    for(var i = 0; i < arguments.length; i++) {
        document.write(this.t[i] + ": " + arguments[i] + "<br/>");
    }
}

function actby() {
    this.t = ["参数1是:", "参数2是:"];
}
//call(obj,arg1,arg2...);
act.call(new actby(), "参数1调用来自call", "参数2调用来自call");
//apply(obj,[arg1,arg2...]);
act.apply(new actby(), ["参数1调用来自apply", "参数2调用来自apply"]);
//--apply与call都是将属性或是定义式绑定到另外一个对象上去运行--//
js的隐含参数(arguments,callee,caller)使用方法 在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数function:选项。当前正在执行的 Function 对象的名字。 n :选项。要传递给 Function 对象的从0开始的参数值索引。说明Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长 立即下载

相关推荐

从TCGA官网获取新版count数据并精准转换为TPM的实战指南

本文详细介绍了从TCGA官网获取新版count数据并精准转换为TPM的实战指南。通过TCGAbiolinks工具下载原始count数据,结合GENCODE v36注释文件计算基因有效长度,最终实现count到TPM的标准化转换,确保数据完整性和分析可靠性。文章包含完整代码示例和常见问题解决方案,特别适合生物信息学研究人员参考。

weixin_27310417的博客 284

arguments.callee[JS]

  argument代表当前函数的参数数组   arguments.callee表示引用当前正在执行的函数,或者说是调用arguments.callee的函数对象的引用,它给匿名函数提供了一种自我引用的方式。通过如下例子,可以更好的理解概念。   var func = function() { alert(func === arguments.callee);}func();     ...

技术造就人生 251

Android应用隐私合规自动化检测:Frida与Camille实战指南

在移动应用安全与隐私合规领域,动态代码插桩技术已成为核心检测手段。其原理是通过运行时注入,实时监控和修改应用行为,从而绕过传统静态分析的局限。这项技术的核心价值在于能够精准捕获应用在运行时的敏感数据调用与网络传输行为,为隐私合规审计、安全测试提供直接证据。在实际应用场景中,它尤其适用于自动化检测违规收集个人信息、追踪数据流向等任务。本文聚焦于利用Frida这一动态插桩框架,结合Camille隐私合规检测工具集,构建自动化监控环境。通过注入JavaScript代码,实现对Android敏感API(如获取设备标

weixin_34254464的博客 388

JavaScript递归函数 之 arguments.callee

递归函数之arguments.callee的学习,方便复习

leixu4466的博客 467

嵌入式常用通信协议 #概述

嵌入式通信协议

AFK3060的博客 2117

UE5Could not be compiled. Try rebuilding from source manually.

UE5Could not be compiled. Try rebuilding from source manually.

weixin_45417260的博客 2771

js 函数内部属性arguments.callee

函数的参数是一个叫arguments的数组,保存数组参数,arguments有一个叫callee的属性,是一个指针,指向拥有该arguments对象的函数,例如阶乘函数: function factorial(num){ if (num &lt;=1) { return 1; } else { return num * factorial(num-1) } } 为消除该函数的内容与函数名之间...

ynd_sg的博客 483

石油化工软件:ProII二次开发_(9).案例研究:ProII二次开发实例

我们将上述三个步骤整合到一个完整的案例中,展示如何从头到尾实现一个ProII二次开发项目。这个项目包括自动化流程模拟、数据处理与分析以及动态工艺参数调整。

kkchenjj的博客 919

javascript中caller与callee的作用以及用法

这两个关键字在平时编码中几乎难以用到,但它们既然存在于javascript语言体系中,那么还是有必要了解下。 caller是javascript函数类型的一个属性,它引用调用当前函数的函数 function func() { alert(func.caller); } function func1() { func(); } func1(); 比如上面的代码, 因为func函数是杯func1函数调用的, 所以func函数中对caller的引用就是func1函数。如果func函.

qq_52317104的博客 763

基于51单片机的电子记分牌的设计

基于51单片机的电子记分牌的设计 电子记分牌基于51单片机的电子记分牌的设计摘要1 引言2 总体设计方案2.1 设计思路(1)设计要求(2)设计思路(3)设计方案2.3综合设计方框图(1)硬件设计框图(2)软件设计3 设计原理分析3.1 电源、复位、下载电路的设计(见图1、2、3)3.2 时钟电路的设计3.3 矩阵键盘电路的设计3.4 数码管显示电路设计4程序代码 摘要 本设计为电子记分牌设计,是以STC89C52芯片为核心,辅以必要电路设计进行的。用4位LED七段数码管显示比赛两方的分数(每方分数用2位

行走的皮卡丘 2037

使用Python的OpenCV库进行三维重建点云

通过这些步骤,我们可以使用Python的OpenCV库进行三维重建,并生成对应的点云。当然,这只是一个简单的示例,实际的三维重建可能涉及更多的图像处理和计算步骤。在计算机视觉领域,三维重建是一项重要的任务,它可以将多个二维图像或视频序列转换为三维场景模型。在本文中,我们将介绍如何使用Python的OpenCV库进行三维重建,并生成相应的点云。以上是使用Python的OpenCV库进行三维重建点云的简要介绍和示例代码。最后,我们可以将计算得到的三维点云可视化。安装完成后,我们可以开始编写代码。

AuSwift的博客 1646

javaScript中递归和arguments.callee

什么时候该用arguments.callee,什么时候不该用arguments.callee呢?为什么如今不推荐使用arguments.callee呢?

一只苟延残喘的卑微蝼蚁 607

【从零到一】Jetson Nano上YOLOv5部署完全攻略:零基础小白也能玩转边缘AI推理

文章摘要: 本文详细介绍了在Jetson Nano边缘设备上部署YOLOv5目标检测模型的完整流程。从硬件准备、系统镜像烧录、基础环境配置,到CUDA/cuDNN验证、Python虚拟环境搭建及PyTorch安装,逐步指导开发者完成部署准备。教程兼顾理论原理与实践操作,提供Python和C++两种实现方案,并涵盖TensorRT优化、实时检测等生产级应用场景,帮助零基础开发者快速掌握边缘AI推理技术,实现高性能目标检测应用。

LXY_LOVE36的博客 369

JS Arguments对象详解

arguments是一个对应传递给函数参数的类数组对象; 使用场景:针对同一个方法被多处调用,但是参数数量不确定的情况下,可以更具arguments索引进行判断。 例如: function func1(a, b, c) { console.log(arguments[0]); // 1 console.log(arguments[1]); // 2 console.log(arguments[2]); // 3 } func1(1, 2, 3); 1、arg.

qq_34691738的博客 5969

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JavaScript arguments callee caller 学习笔记

arguments假设定义了一个函数a,函数a的实际参数只有一个x,如果调用这个函数a的时候传入两个实参,第一个实参可以根据参数名x来获得,也可以通过类数组对象arguments[0]来获取,而第二个实参就只能通过arguments[1]来得到,跟js真正的数组一样,arguments对象也包含一个length属性,用来记录和标识该对象所包含的元素的个数,所以,如果调用函数a传入了两个参数,leng

Zain的博客 938

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

js中arguments理解

什么是arguments? 它是JS的一个内置对象 .函数内部的类数组对象。因为在js函数对象中传递的形参 可以传也可以不传,若方法里没有写参数却传入了参数,该如何拿到参数呢,答案就是arguments了 js语法不支持重载!但可用arguments对象模拟重载效果。 arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象。 arguments[i]: 获得传入的下标为i的参数值 ar...

前端小99的博客 3969

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

js中arguments的用法

本文导读:Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中国每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。arguments.length为函数实参个数,arguments.callee引用函数自身。 arguments特性 argu

Zoe_Wang_ing的专栏 1053

浅谈arguments.callee

但是现在已经不推荐使用arguments.callee了,访问arguments对象是非常昂贵的操作,它是一个很大的对象,每次递归调用访问它的时候都会重新创建,影响现代浏览器的性能,还会影响闭包。接受参数n=5,不用for循环输出数组【1,2,3,4,5】,这就会想到递归。arguments.callee一般用于递归算法,如果函数有名字,而且名字以后不会变的情况下直接递归调用函数即可。,但这个对象还有一个名叫callee的属性,该属性是个指针,,其中,arguments主要用于保存。

weixin_46990364的博客 403

js中arguments参数

描述 arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。例如,如果一个函数传递了三个参数,你可以以如下方式引用他们: arguments[0] arguments[1] arguments[2] 参数也可以被设置: arguments[1] = ‘new value’; /...

编程之路 1530

区分callee和caller

callee和caller是对象的两个属性,今天就来区分一下这两个: callee是arguments对象的一个属性,指向 arguments 对象的函数,即当前函数。 caller是函数对象的一个属性,指向调用当前函数的函数体引用。 用处 1、递归 我们可能用到一些函数调用自身,即递归。平时我们计算阶乘是用下述方法: function factorial(x) { ret...

兔子juan的博客 1283

全面理解javascript的caller,callee,call,apply概念

(注:在看到大家如此关注JS里头的这几个对象,我试着把原文再修改一下,力求能再详细的阐明个中意义  2007-05-21)在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments   Arguments   该对象代表正在执行的函数和调用它的函数的参数。   [function.]arguments[n]   参数 function:选项。当前正...

w330685946的专栏 228

JavaScript 之arguments、caller 和 callee 介绍

1.前言 arguments, caller ,   callee 是什么? 在javascript 中有什么样的作用?本篇会对于此做一些基本介绍。 2. arguments arguments:  在函数调用时, 会自动在该函数内部生成一个名为 arguments的隐藏对象。 该对象类似于数组, 但又不是数组。可以使用[]操作符获取函数调用时传递的实参

hellochenlu的博客 357

js中的arguments对象用法用途

定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。这就是arguments对象的由来。(个人理解为调用时可以传入任意数量的参数而不是定义时的参数个数,所以需要arguments) 虽然arguments对象并不是一个数组,但是访问单个参数的方式与访问数组元素的方式相同,arguments对象包含了函数运行时的所有参数,arguments[0...

saber的博客 759

js arguments.callee 和 fn.caller的用法

arguments.callee  等于这个函数的引用。特别是在不方便表示函数引用的时候可以使用,例如立即执行函数var demo = (function (n){ if (n == 1){ return 1; } return n*arguments.callee(n-1) }(10))上面的 arguments.callee 就相当于这个函数,解决了我们在没有函数名...

weixin_41436338的博客 511

【JS】 理解arguments

1.每个函数里面都隐式存在这arguments,也就是我们常用的实参列表,这也是我们能在函数体中调用其的原因。同时只有函数被调用时,arguments对象才会创建,未调用时其值为null。 function sum(){ // arguments [1,2,3] var result =0; for(var i = 0;i &lt; arguments.length;i...

TimCope的博客 532

JavaScript之arguments

argumentsarguments[n] arguments是个类似数组但不是数组的对象,能够由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表。用Array.prototype.slice.call()可将arguements对象转变为数组function add(n){

Jancy的博客 388
上一篇: JS函数多个返回值
下一篇: JS如何判断一个对象是否为空
Alecor
博客等级 码龄11年 25粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值