函数参数浅析-读书笔记

本文深入探讨了ECMAScript中函数参数的处理方式,包括使用arguments对象来访问所有传入参数的方法,以及如何根据参数数量调整函数行为。此外,还介绍了在严格模式下使用arguments对象的限制。

ECMAScript函数不介意传递的参数个数,因为在其内部是用一个数组进行表示的。在函数体内可以通过arguments对象来访问这个参数数组,就像我们正常访问数组一样处理。

arguments对象只是与数组类似,并不是array的实例。我们可以通过方括号语法访问arguments的每一个元素(arguments[0],arguments[1]。。。。),可以用length属性确定传递进来的参数个数。

function sayHi() {
  alert("Hello " + arguments[0] + "," + arguments[1]);
}

function sayHi(name, message) {
  alert("Hello " + name + "," + message);
}

第一种写法是重写第二种表达方式的,为了突出ECMAScript的一个重要特点:命名的参数只提供便利,但不是必需的

可以通过访问arguments对象的length属性获取有多少个参数传递给了函数。

function howManyArgs() {
  alert(arguments.length);
}
howManyArgs("string", 45); //2
howManyArgs(); //0
howManyArgs(12); //1

我们也可以让函数能够接收任意个参数实现适当的功能,例如:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 10);
  } else if (arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}
doAdd(10); //20
doAdd(30, 20); //50

另外一个重点是:arguments对象可以与命名参数一起使用,例如:

function doAdd(num1, num2) {
  if(arguments.length == 1) {
    alert(num1 + 10);
  } else if (arguments.length == 2) {
    alert(arguments[0] + num2);
  }
}

在上面这个重写的函数中,num1与arguments[0]相同,num2与arguments[1]相同,因此他们可以互换。

还有一个有趣的点,arguments对象的值永远与对应命名参数的值保持同步。

function doAdd(num1, num2) {
  arguments[1] = 10;
  alert(arguments[0] + num2);
}

doAdd(10, 20);//20

加了'use strict'

function doAdd(num1, num2) {

  'use strict';

  arguments[1] = 10;
  alert(arguments[0] + num2);
}
doAdd(10, 20);//30

严格模式对如何使用arguments 对象做出了一些限制。首先,像前面例子中那样的赋值会变得无效。

 

参考资料

《javascript高级程序设计(第3版)》第3章 基本概念 

转载于:https://www.cnblogs.com/winteronlyme/p/6697798.html

标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值