当前位置: 首页 > news >正文

JavaScript 函数参数

JavaScript 函数对参数的值(arguments)没有进行任何的检查。

JavaScript 函数参数与大多数其他语言的函数参数的区别在于:它不会关注有多少个参数被传递,不关注传递的参数的数据类型。


函数显式参数与隐藏参数(arguments)

在先前的教程中,我们已经学习了函数的显式参数:

functionName(parameter1, parameter2, parameter3) {

code to be executed

}

函数显式参数在函数定义时列出。

函数隐藏参数(arguments)在函数调用时传递给函数真正的值。


参数规则

JavaScript 函数定义时参数没有指定数据类型。

JavaScript 函数对隐藏参数(arguments)没有进行检测。

JavaScript 函数对隐藏参数(arguments)的个数没有进行检测。


默认参数

如果函数在调用时缺少参数,参数会默认设置为: undefined

有时这是可以接受的,但是建议最好为参数设置一个默认值:

实例

function myFunction(x, y) {

if (y === undefined) {

y = 0;

}

}

尝试一下 »

或者,更简单的方式:

实例

function myFunction(x, y) {

y = y || 0;

}

尝试一下 »

如果y已经定义 , y || 0返回 y, 因为 y 是 true, 否则返回 0, 因为 undefined 为 false。

如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名。 只能使用 arguments 对象来调用。


Arguments 对象

JavaScript 函数有个内置的对象 arguments 对象.

argument 对象包含了函数调用的参数数组。

通过这种方式你可以很方便的找到最后一个参数的值:

实例

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {

var i, max = arguments[0];

if(arguments.length < 2)return max;

for (i = 0; i < arguments.length; i++) {

if (arguments[i] > max) {

max = arguments[i];

}

}

return max;

}

尝试一下 »

或者创建一个函数用来统计所有数值的和:

实例

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {

var i, sum = 0;

for (i = 0; i < arguments.length; i++) {

sum += arguments[i];

}

return sum;

}

尝试一下 »


通过值传递参数

在函数中调用的参数是函数的参数。

如果函数修改参数的值,将不会修改参数的初始值(在函数外定义)。

总结:JavaScript函数传值只是将参数的值传入函数,函数会另外配置内存保存参数值,所以并不会改变原参数的值。

实例

var x = 1;
// 通过值传递参数functionmyFunction(x) {x++; //修改参数x的值,将不会修改在函数外定义的变量 xconsole.log(x);
}
myFunction(x); // 2console.log(x); // 1

通过对象传递参数

在JavaScript中,可以引用对象的值。

因此我们在函数内部修改对象的属性就会修改其初始的值。

修改对象属性可作用于函数外部(全局变量)。

实例

var obj = {x:1};
// 通过对象传递参数functionmyFunction(obj) {obj.x++; //修改参数对象obj.x的值,函数外定义的obj也将会被修改console.log(obj.x);
}
myFunction(obj); // 2console.log(obj.x); // 2

相关文章:

JavaScript 函数参数

JavaScript 函数对参数的值(arguments)没有进行任何的检查。JavaScript 函数参数与大多数其他语言的函数参数的区别在于&#xff1a;它不会关注有多少个参数被传递&#xff0c;不关注传递的参数的数据类型。函数显式参数与隐藏参数(arguments)在先前的教程中&#xff0c;我们已…...

【C】标准IO库函数

fopen/fclose #include <stdio.h>FILE *fopen(const char *path, const char *mode); 返回值&#xff1a;成功返回文件指针&#xff0c;出错返回NULL并设置errnoint fclose(FILE *fp); 返回值&#xff1a;成功返回0&#xff0c;出错返回EOF并设置errnomode参数是一个字符…...

http客户端Feign

Feign替代RestTemplate RestTemplate方式调用存在的缺陷 String url"http://userservice/user/"order.getUserId();User user restTemplate.getForObject(url, User.class); 代码可读性差&#xff0c;变成体验不统一&#xff1b; 参数复杂的时候URL难以维护。 &l…...

如何在Java中使用枚举类:从入门到进阶

枚举类是Java中一种特殊的数据类型&#xff0c;它允许我们将一组有限的值作为一组常量来使用&#xff0c;这些常量在代码中具有固定的名称和类型。在Java中&#xff0c;枚举类通常用于代表状态、选项和类别等具有离散值的变量。本篇博客将深入探讨Java中的枚举类&#xff0c;包…...

操作系统(1.2)--引论

目录 一、操作系统的基本特性 1.并发性 1.1 并行与并发 1.2 引入进程 2.共享性 2.1 互斥共享方式 2.3 同时访问方式 3.虚拟 3.1 时分复用技术 4. 异 步 二、操作系统的主要功能 1.处理机管理功能 1.1 进程控制 1.2 进程同步 1.3 进程通信 1.4 调度 2. 内…...

【Linux】 shell if的[]和[[]]区别

文章目录[]和test[]和[[]]区别总结参考[]和test Shell中的 test 命令用于检查某个条件是否成立&#xff0c;它可以进行数值、字符和文件三个方面的测试 test常用于 if &#xff0c;作为判断条件&#xff0c;if test等价于 if [ ]&#xff0c;因此&#xff0c;test和[] 内的内…...

利用flask解析海康摄像头视频

利用flask解析海康摄像头视频利用flask解析海康摄像头和大华摄像头的视频一、安装依赖包二、获取海康摄像头视频流三、将视频流输出到Web页面四、 创建HTML模板文件利用flask解析海康摄像头和大华摄像头的视频 作为AI智能的一种应用场景&#xff0c;视频监控系统已经在各个行业…...

./docker-compose.yml‘ is invalid

文章目录前言提示原因版本太低解决方法更新删除原来不能执行的/usr/local/bin/docker-compose下载安装docker-compose添加权限前言 安装ctfd过程中的一些报错 rootubuntu:/CTFd# docker-compose up -d ERROR: The Compose file ./docker-compose.yml is invalid because: net…...

Java 流程控制

条件/选择结构 if if(条件表达式){// 表达式为 true 时&#xff0c;执行该代码块 }if(true) {System.out.println("hello"); }if else if(条件表达式){// 表达式为 true 时&#xff0c;执行该代码块 } else {// 表达式为 false 时&#xff0c;执行该代码块 }if(1 …...

边界无限入选首届“网络安全高成长性企业”并荣获“勇创之星”

近日&#xff0c;由工业和信息化部、四川省人民政府主办的“2023年中国网络和数据安全产业高峰论坛网络安全产融合作分论坛”在成都举行&#xff0c;论坛上公布了“2022年度网络安全高成长性企业”名单。云原生安全、应用安全“灵动智御”理念创领者北京边界无限科技有限公司&a…...

SpringBoot项目的快速创建方式(包含第一个程序的运行)

目录 一、IDEA所用的版本以及插件 二、操作步骤 一、IDEA所用的版本以及插件 idea的版本&#xff1a; idea2022版本下载安装配置与卸载详细步骤&#xff08;包含运行第一个java程序教程&#xff09;_idea2022下载_云边的快乐猫的博客-CSDN博客 如果英文看不懂就点击&#x1…...

linux下设置定期执行需要root权限的sh文件

1、准备好一个shell文件 比如我这个叫clean.sh&#xff0c;位于/home/admin/gdhysthj/clean.sh 2、首先将shell文件赋权为可执行文件 chmod 777 clean.sh 3、切换为超级管理员 su 4、设置定时器 crontab -u root -e 5、回车后&#xff0c;进入一个类似vim的界面&#xff0c…...

认识异或运算

1.什么是异或运算 异或运算是位运算的一种&#xff0c;符号为&#xff1a;^ 运算规则为&#xff1a;相同为0&#xff0c;不同为1 例如 性质&#xff1a; N ^ 0 N N ^ N 0 A ^ B B ^ A (A ^ B) ^ C A ^ (B ^ C)N ^ 0 N public class XorOperation {public static void …...

内容提供者的简单使用

内容提供者的简单使用 最近在复习ContentProvider时遇到了一些问题&#xff0c;几经波折&#xff0c;终于解决了&#xff0c;故写下这篇博客&#xff0c;希望能帮到有相同问题的兄弟。 何时使用 当我们想要一个应用的数据向外部公开时&#xff0c;ContentProvider是一个不错…...

Modelsim 操作结构和流程

用到的命令一般都写到.do文件中&#xff0c;使用脚本语言进行批量处理。Step 1: Map librariesStep 2: Compile the designStep 3: Optimize the design (OPTIONAL)Step 4: Load the design into the simulatorStep 5: Run the simulationStep 6: Debug the design Note: Desig…...

vue和react有什么不同

vue上手难度低&#xff0c;不过react社区活跃度更多一些&#xff0c;一般数据比较多的大型项目会倾向于使用react。在react官网中&#xff0c;官方也建议我们使用React来构建快速响应的大型 Web 应用程序。vue2.0是面向对象编程&#xff08;{data: {}, methods: {}, created() …...

js求解《初级算法》28. 找出字符串中第一个匹配项的下标

一、题目描述 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 输入&#xff1a;haystack "sadb…...

VAE--part1

Variational Auto-Encoder, VAE__part1分布变换VAE慢谈VAE 初现分布标准化重参数技巧VAE的本质是什么&#xff1f;VAE的本质结构正态分布&#xff1f;变分在哪里参考博客仅做学习记录&#xff0c;侵删分布变换 VAE和GAN都是生成式模型&#xff0c;它们俩的目标基本一致&#x…...

备战四级!!!

目录 一、替换词 二、作文常见句型 &#xff08;1&#xff09;常见开头 &#xff08;2&#xff09;阐述观点 &#xff08;3&#xff09;结束语 &#xff08;4&#xff09;提出建议 &#xff08;5&#xff09;表示论证 &#xff08;6&#xff09;给出原因 &#xff08;…...

sizeof与strlen练习

前言 本篇仅仅是为了更加了解sizeof操作符和strlen函数练习. 对于多条sizeof操作符和strlen函数出现,可能很容易造成头脑不清晰,做题时容易混乱. 目录前言一维数组字符数组情况1:情况2情况3二维数组练习之前请牢记下面这段话.这将是头脑清晰地关键. 提示: sizeof(数组名)&#…...

3个步骤解锁QQ音乐加密文件:QMCDecode让音乐重获自由

3个步骤解锁QQ音乐加密文件&#xff1a;QMCDecode让音乐重获自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转…...

微内核架构与事件驱动架构的区别与联系详细对比

1. 微内核架构 (Microkernel Architecture)1.1 核心概念微内核架构将系统核心功能最小化&#xff0c;将大部分服务&#xff08;文件系统、设备驱动、网络协议等&#xff09;移出内核&#xff0c;作为独立的用户态进程运行。内核仅保留最基本的功能&#xff1a;进程间通信&#…...

Z-Image-Turbo-rinaiqiao-huiyewunv 可视化流程设计:使用Visio绘制模型服务架构与数据流图

Z-Image-Turbo-rinaiqiao-huiyewunv 可视化流程设计&#xff1a;使用Visio绘制模型服务架构与数据流图 作为一名技术架构师&#xff0c;我经常需要向团队、客户或管理层解释一个复杂的系统是如何工作的。光靠文字描述&#xff0c;往往事倍功半。一张清晰的架构图或数据流图&am…...

在AutoDL上从零部署YOLO训练环境:新手避坑指南

1. 为什么选择AutoDL部署YOLO训练环境 第一次接触目标检测任务时&#xff0c;我和大多数新手一样被各种环境配置问题折磨得够呛。本地显卡跑不动YOLOv5&#xff0c;租用云服务器又担心操作复杂&#xff0c;直到发现了AutoDL这个宝藏平台。它最大的优势就是把复杂的GPU实例管理简…...

【STM32实战】步进电机S型曲线算法优化与误差补偿策略

1. 为什么需要S型曲线算法 我第一次用步进电机做项目时&#xff0c;直接给电机发固定频率的脉冲让它转起来。结果电机启动瞬间发出"咔咔"的异响&#xff0c;运行起来也一顿一顿的。后来才知道&#xff0c;步进电机最怕的就是突然加速或急停&#xff0c;这会导致丢步、…...

Zotero终极指南:高效文献管理的开源解决方案

Zotero终极指南&#xff1a;高效文献管理的开源解决方案 【免费下载链接】zotero Zotero is a free, easy-to-use tool to help you collect, organize, annotate, cite, and share your research sources. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero Zotero是…...

一本计算机专业,准大一,有什么忠告?

你现在大概处于一种很特别的状态。高考刚结束不久&#xff0c;录取通知书拿到了&#xff0c;专业是计算机。可能是你自己选的&#xff0c;也可能是家里建议的&#xff0c;也可能是分数刚好够就填了。不管哪种&#xff0c;你现在对”计算机专业到底学什么”的理解大概率是模糊的…...

PdfiumAndroid完全指南:从集成到高级应用

PdfiumAndroid完全指南&#xff1a;从集成到高级应用 【免费下载链接】PdfiumAndroid 项目地址: https://gitcode.com/gh_mirrors/pd/PdfiumAndroid PdfiumAndroid是一款专为Android开发打造的PDF渲染库&#xff0c;基于Pdfium原生库提供API级别14及以上设备的PDF文件处…...

Easy-Scraper:Rust 构建的现代化网页数据采集解决方案

Easy-Scraper&#xff1a;Rust 构建的现代化网页数据采集解决方案 【免费下载链接】easy-scraper Easy scraping library 项目地址: https://gitcode.com/gh_mirrors/ea/easy-scraper 在数据驱动决策的时代&#xff0c;网页数据采集已成为企业获取市场情报、研究人员收集…...

SparkFun ICM-20948 Arduino库:DMP硬件协处理器深度实践指南

1. 项目概述SparkFun ICM-20948 Arduino Library 是面向 TDK InvenSense ICM-20948 九轴惯性测量单元&#xff08;9DoF IMU&#xff09;的官方 Arduino 封装库&#xff0c;专为 SparkFun 9DoF IMU Breakout - ICM-20948&#xff08;Qwiic 接口版本&#xff0c;型号 SEN-15335&a…...