理解函数调用_arguments对象作为函数参数的别名
<!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对象作为函数参数的别名的更多相关文章
- 函数调用过程中,函数参数的入栈顺序,why?
C语言函数参数入栈顺序为从右至左.具体原因为:C方式参数入栈顺序(从右至左)的好处就是可以动态变化参数个数.通过栈堆分析可知,自左向右的入栈方式,最前面的参数被压在栈底.除非知道参数个数,否则是无法通 ...
- C/C++语言中的函数参数传参三种对比
学了很长时间C/C++有时指针方面还是有点乱. 希望大神发现如果下面有不对的地方请指出.我发现之所以我乱就是因为中文表述不准确的问题,比如 ,地址值和地址 #include <iostream& ...
- C++ //拷贝构造函数调用时机//1.使用一个已经创建完毕的对象来初始化一个新对象 //2.值传递的方式给函数参数传值 //3.值方式返回局部对象
1 //拷贝构造函数调用时机 2 3 4 #include <iostream> 5 using namespace std; 6 7 //1.使用一个已经创建完毕的对象来初始化一个新对象 ...
- 深入理解javascript函数参数与闭包(一)
在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...
- 深入理解javascript函数系列第二篇——函数参数
× 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...
- 理解JavaScript函数参数
前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascri ...
- 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)
获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...
- jacascript 函数参数与 arguments 对象
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 调用函数时,实参和形参需要一一对应,但如果参数多了的话,会很苦恼: 我们可以用键值对(字面量对象)的方式传 ...
- STL算法设计理念 - 函数对象和函数对象当参数和返回值
函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过"对象名+(参数列表)&qu ...
- JavaScript学习总结(三、函数声明和表达式、this、闭包和引用、arguments对象、函数间传递参数)
一.函数声明和表达式 函数声明: function test() {}; test(); //运行正常 function test() {}; 函数表达式: var test = functio ...
随机推荐
- CSS主要整理
css主要整理 // 右侧悬浮导航 /* 侧栏开始 */ #home { position: relative } // 悬浮 #home .xf { width: 67.6923076923077p ...
- MNIST数据集output with shape [1, 28, 28] doesn't match the broadcast shape [3, 28, 28]
transform = transforms.Compose([ transforms.ToTensor(), transforms.Lambda(lambda x: x.repeat(3,1,1)) ...
- 【Linux命令】在Linux服务器上与windows通过SCP命令互传文件时出现的问题排查过程
1,在linux 执行 scp 1.txt adminitrator@10.10.10.10:/d:/后,报连接超时 原因:windows不支持ssh,可以安装支持SSH服务的工具,如:winsshd ...
- kubeSphere v3.3.0+kubernetes v1.22.10 集群部署
概述 KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地.很多用户都在使用 KubeSphere 运行工作负载.对于在 Linux 上的安装,KubeSphere ...
- Linux 在miniconda和anaconda同时安装时,卸载miniconda
1. 找到miniconda目录,删除. rm -rf miniconda3/ 2. 编辑bashrc sudo vim .bashrc setup路径改回anaconda3的,注释掉"&g ...
- java泛型元组
package generics;class Amphibian{};class Vehicle{};public class TupleTest { static TwoTuple<Strin ...
- Python-numpy基本用法
import numpy as np import numpy as np #导入numpy库 _version_显示版本号 show_config() 显示配置文件 print(np.__versi ...
- jekins 入门
环境安装 gitlab 安装 使用 docker 安装 gitlab docker run -d --name gitlab --restart always --hostname gitlab.zd ...
- 【服务器数据恢复】HP EVA存储多块硬盘离线的数据恢复案例
服务器故障&检测&分析:某品牌EVA存储设备中的RAID5磁盘有两块硬盘掉线,lun丢失.硬件工程师对故障服务器进行物理故障检测,发现掉线硬盘能够正常读取,无物理故障,也没有发现坏道. ...
- 如何下载zoom上别人录制的视频?
参考知乎作者"Oops chocoholic"的方法 https://www.zhihu.com/question/432030457/answer/1681898684 临时关闭 ...