<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../unitl/test.js"></script>
<style>
#results li.pass {color:green;}
#results li.fail {color:red;}
</style>
</head>
<body>
<ul id="results"></ul>
</body>
<script> function infiltrate(person) { // 检查person参数的值等于gardener,并作为第一个参数被传入。
assert(person==="gardener",'The person is a gardener');
assert(arguments[0]=== 'gardener','The first argument is a gardener'); //改变argument对象的值也会改变相应的参数。
arguments[0] = 'ninja'
assert(person==='ninja','The person is a ninja now');
assert(arguments[0] === 'ninja','The first argument is a ninja'); person = 'gardener'; //这两种方式下,别名都正常工作了。
assert(person==='gardener','The person is a gardener once more');
assert(arguments[0]==='gardener','The first argument is a gardener again'); } infiltrate("gardener"); </script>
</html>

这里可以说明arguments对象是如何作为函数参数别名的。我们定义了一个函数infiltrate,它只接受了一个参数person,接着我们调用他并传入参数gardener。可以同时通过

函数形参gardener。可以同时通过行数形参person和arguments对象访问到参数值gardener。

      assert(person==='gardener','The person is a gardener');
assert(argements[0]==='gardener','The first argument is a gardener');
 因为arguments对象是函数参数的别名,所以如果改变了arguments对象的值,同时也会影响对应函数参数。
    arguments[0] = 'ninja';

   assert(person==='ninja','The person is a ninja now');
assert(arguments[0]==='ninja',"The first argument is a ninja");

避免使用别名

      将arguments对象作为函数参数的别名使用会影响代码的可读性,因此在javaScript提供的严格模式(strict mode)将无法再使用它。

理解函数调用_arguments对象作为函数参数的别名的更多相关文章

  1. 函数调用过程中,函数参数的入栈顺序,why?

    C语言函数参数入栈顺序为从右至左.具体原因为:C方式参数入栈顺序(从右至左)的好处就是可以动态变化参数个数.通过栈堆分析可知,自左向右的入栈方式,最前面的参数被压在栈底.除非知道参数个数,否则是无法通 ...

  2. C/C++语言中的函数参数传参三种对比

    学了很长时间C/C++有时指针方面还是有点乱. 希望大神发现如果下面有不对的地方请指出.我发现之所以我乱就是因为中文表述不准确的问题,比如 ,地址值和地址 #include <iostream& ...

  3. C++ //拷贝构造函数调用时机//1.使用一个已经创建完毕的对象来初始化一个新对象 //2.值传递的方式给函数参数传值 //3.值方式返回局部对象

    1 //拷贝构造函数调用时机 2 3 4 #include <iostream> 5 using namespace std; 6 7 //1.使用一个已经创建完毕的对象来初始化一个新对象 ...

  4. 深入理解javascript函数参数与闭包(一)

    在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...

  5. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  6. 理解JavaScript函数参数

    前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascri ...

  7. 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)

    获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...

  8. jacascript 函数参数与 arguments 对象

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 调用函数时,实参和形参需要一一对应,但如果参数多了的话,会很苦恼: 我们可以用键值对(字面量对象)的方式传 ...

  9. STL算法设计理念 - 函数对象和函数对象当参数和返回值

    函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过"对象名+(参数列表)&qu ...

  10. JavaScript学习总结(三、函数声明和表达式、this、闭包和引用、arguments对象、函数间传递参数)

    一.函数声明和表达式 函数声明: function test() {}; test();    //运行正常 function test() {}; 函数表达式: var test = functio ...

随机推荐

  1. vue 基础 v-text v-html v-model v-cloak v-bind

    v-text  纯文本绑定 v-html  会解析html标签 <p v-html="rawHtml"></p> var a=new Vue({ el:&q ...

  2. 【27期】Dubbo面试八连问,这些你都能答上来吗?

    1.Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目.致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA ...

  3. 安全测试-WEB安全渗透测试基础知识(三)

    1.3. 域名系统 1.3.1. 域名系统工作原理 DNS解析过程是递归查询的,具体过程如下: 用户要访问域名www.example.com时,先查看本机hosts是否有记录或者本机是否有DNS缓存, ...

  4. GitLab能通过ssh克隆无法通过http克隆,也无法进行流水线,提示port 80: Connection refused

    问题记录:VM-Ubuntu20.04刚开始时使用NAT模式连接,后来改成桥接模式,改完之后原来使用docker启动的gitlab服务无法克隆,一直提示:fatal...没有远程库什么的,没解决后来删 ...

  5. k8s 删除 node节点

    查看现有状态 [root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady control-plan ...

  6. 微服务笔记之Eureka03(服务续约分析)

    服务续约接口分析 com.netflix.eureka.resources.InstanceResource#renewLease public Response renewLease( @Heade ...

  7. getClassLoader

    类加载器(class loader)用来加载 Java 类到 Java 虚拟机中.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编 ...

  8. js复制图片

    ^(* ̄(oo) ̄)^:可以复制到微信和钉钉,文件夹中不可以复制 <!DOCTYPE html> <html lang="en"> <head> ...

  9. 08.JSP技术

    一.什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据.JSP文件的扩展名是.jsp. JSP = htm ...

  10. Android 杂项

    1. String to InputStream new ByteArrayInputStream(str.getBytes());