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

js:函数

函数

函数:实现抽取+封装,执行特定任务的代码块,方便复用

声明

函数命名规范

尽量小驼峰

前缀应该为动词,如getName、hasName

函数的调用

函数体是函数的构成部分

函数传参

参数列表里的参数叫形参,实际上写的数据叫实参

形参可以看作变量,如果变量不给值,默认为未定义(undefined)

例如一个两数求和的函数,如果用户在使用的时候不传入实参,两个未定义(undefined+undefined)的结果是什么?

NaN

为了防止出现异常的NaN,我们可以在用户不输入参数的时候提供默认参数(形参默认值),可以默认为0

形参默认值写在函数里形参声明的地方

 function getArrSum(arr=[]) {//保证程序不报错let sum=0for (let i = 0; i < arr.length;i++){sum+=arr[i]}console.log(sum);}let arr=[]for(let i=0;i<10;i++){arr[i]=+prompt('请输入数字:')}getArrSum(arr)

除了这种写法还有

逻辑中断

猜猜这段代码的打印结果?

let age=18console.log(false&&age++)console.log(age)

答案是false和18,age没有变;因为&&左边为false,所以不执行右边的表达式

关于Boolean的转换

‘’ 、0、undefined、null、false、NaN 转换为布尔值后都是false, 其余则为 true
一些其他隐式转换:
' '+1='1'
' '-2='-2'
null经过数字转换为0,null+3=0+3=3
undefined经过数字转换为NaN(除了字符串拼接其余都为NaN),undefined+3=NaN
 let n = undefinedconsole.log(n + 'sss');

函数返回值

把函数处理完的结果返回给调用者

用return关键字

函数体内使用return关键字能返回函数体执行的结果交给外部使用

return后面的代码不执行

return函数没有return的时候,函数默认返回undefined

返回多个数据

  function getArr(arr = []) {for (let i = 0; i < 5; i++) {arr[i] = +prompt('请输入数字:')}}function getMax(arr = []) {let min = arr[0]let max = arr[0]for (let i = 0; i < 5; i++) {if (arr[i] > max) max = arr[i]if (arr[i] < min) min = arr[i]}return [max, min]//新数组}let arr = []getArr(arr)console.log(arr)console.log(getMax(arr))

断点调试进入函数内部f11(步入),不进入函数内部f10(步过)

js没有函数重载,只要函数名一样,写在后面的函数会覆盖前面的函数

js里传递的实参个数可以少于形参的个数,会自动填为undefined;如果实参多余形参,多余的实参会被忽略

break结束循环和switch,return结束函数

作用域

限定数据的可用性代码范围就叫作用域,作用域提高了程序逻辑的局部性、增强了可靠性、减少了名字冲突

相应的,变量有局部变量和全局变量之分

如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐

但是有一种情况,函数内部的形参可以看做是局部变量

变量访问原则

只要是代码,就至少有一个作用域

写在函数内部的局部作用域

如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域

在能访问的情况下,先局部,局部没有再全局

采取就近原则查找变量的最终值

匿名函数

第一种写法

函数表达式:将匿名函数赋值给一个变量,并且通过变量名进行调用

和go像

具名函数(有名字的函数)的调用可以放在任何位置

函数表达式必须先声明再调用

后面学api会用

第二种写法

立即执行函数

括号的位置不同,在声明的时候执行

多个立即执行的时候一定要在后面加分号(分号也可以写前面)

好处是防止变量污染

函数调用练习

 let num = prompt('用户输入秒数')function getTime(t) {let day = parseInt(t / 3600 / 24)let h = parseInt(t / 3600 % 24)let m = parseInt(t / 60 % 60)let s = parseInt(t % 60)day < 10 ? '0' + day : dayh = h < 10 ? '0' + h : hm = m < 10 ? '0' + m : ms = s < 10 ? '0' + s : sreturn `${t}转换为${day}天${h}小时${m}分钟${s}秒`}let str = getTime(num)document.write(str)

函数里不声明直接赋值外部可以访问,会有风险

相关文章:

js:函数

函数 函数&#xff1a;实现抽取封装&#xff0c;执行特定任务的代码块&#xff0c;方便复用 声明 函数命名规范 尽量小驼峰 前缀应该为动词&#xff0c;如getName、hasName 函数的调用 函数体是函数的构成部分 函数传参 参数列表里的参数叫形参&#xff0c;实际上写的数据叫实…...

低代码平台审批流程设计

审批流程设计 在此界面设置审批单从发起、到审批、再到结束的流转步骤。 6.1 添加节点 点击两个节点间连线的 图标可添加 审批人、抄送人、办理人、条件分支。 6.2 节点类型 提交节点 点击提交节点&#xff0c;可在右侧弹窗中设置提交节点的抄送人&#xff0c;实现审批在发…...

OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从校准图案的多个视图中找到相机的内参和外参参数. cv::calibrateCamera 是 OpenCV 中用于相机标定的一个非常重要的函数。它通过一系列已知的世…...

Linux信号量的编程

一&#xff0c;用信号量来实现是父进程先进行&#xff0c;还是子进程先进性 信号量的没有P&#xff0c;V操作之前&#xff0c;我们不知道如何控制&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>…...

“Yaker,你可以全局配置插件环境变量!“

周四周四&#xff0c;Vme50(bushi 大家好&#xff0c;这里是疯狂超级牛&#xff08;功能上新版&#xff09; 经常有用户问 “牛牛如何为不同插件配置相同的变量值呢&#xff1f;” “能有一个一波搞定插件变量的方式就好了” 超级牛听到了广大用户的声音&#xff0c;默默地拿起…...

SAAS美容美发系统架构解析

随着技术的不断发展&#xff0c;SAAS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;模式在各个行业的应用逐渐深化&#xff0c;美容美发行业也不例外。传统的美容美发店面通常依赖纸质记录、手动操作和复杂的管理流程&#xff0c;而随着SAAS平台的出现&…...

如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间

如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间 一、引言二、检查当前磁盘和分区状态1. 使用 `df` 命令检查磁盘使用情况2. 使用 `lsblk` 命令查看分区结构3. 使用 `fdisk` 或 `parted` 命令查看详细的分区信息三、扩展逻辑卷(如果使用 LVM)1. 检查 LVM …...

vscode远程连接ssh

一. 使用vscode里的ssh查件连不上远程的解决方法 删除Windows上的known_host文件&#xff0c;该文件会在连接之后自动生成&#xff0c;用于验证远程服务器的身份。 konwn_host和id_rsa&#xff0c;id_rsa.pub的关系 &#xff08;1&#xff09;konwn_host用于客户端验证远程服务…...

智慧防汛平台在城市生命线安全建设中的应用

随着城市化进程的加快&#xff0c;城市基础设施的复杂性和互联性不断增强&#xff0c;城市生命线的安全管理面临前所未有的挑战。智慧防汛平台作为城市生命线安全建设的重要组成部分&#xff0c;通过现代信息技术提升城市防汛应急管理的智能化水平&#xff0c;保障城市安全。 …...

python实现TCP Socket控制测试仪器

python实现TCP Socket控制测试仪器 说明前提条件代码 说明 本例是用python实现TCP Socket&#xff0c;最终目的是为了控制LCR电容测试仪器。 前提条件 测试仪器 配备了以太网接口&#xff0c;支持TCP/IP协议栈 用户可以通过IP地址和端口号连接到仪器&#xff0c;建立TCP通信…...

51c自动驾驶~合集38

我自己的原文哦~ https://blog.51cto.com/whaosoft/12358456 #GaussianPretrain 万能3D高斯预训练表示&#xff01;爆拉3D检测、Occ、高精地图等四大任务&#xff01; 受Tesla的技术的推动&#xff0c;越来越多的厂商开始走"纯视觉"的路线&#xff0c;多数方案还…...

电脑显示器拔插DVI线后副屏不显示

问题&#xff1a;台式机副屏显示器插拔DVI线后副屏无法检测到&#xff0c;不显示 其他现象&#xff1a;电脑设备管理器“显示适配器”中只有独显&#xff0c;未显示集显。 尝试方法&#xff1a; 1、 重新插拔并拧紧DVI线、更换DVI线、将DVI线替换为VGA线、调换DVI线及VGA线两…...

Bash脚本常用命令

1.Bash常用快捷键 2.通配符 3.Bash其他特殊符号 4.位置参数 5.预定义变量 6.常用变量比较 7.基础正则表达式 8.文件类型判断 9.文件权限判断 10.整数比较命令 11.字符串判断 其他常用参考&#xff1a; https://zhuanlan.zhihu.com/p/748857250...

《Unity Shader 入门精要》高级纹理

立方体纹理 图形学中&#xff0c;立方体纹理&#xff08;Cubemap&#xff09;是环境映射&#xff08;Environment Mapping&#xff09;的一种实现方法。环境映射可以模拟物体周围的环境&#xff0c;而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…...

vue3实现自定义导航菜单

一、创建项目 1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称&#xff1a;vue3demo 选择项目存放目录&#xff1a;D:/HBuilderProjects 一定要注意vue的版本&#xff0c;当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图…...

[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))

方法一&#xff08;string&#xff09;&#xff1a; #include <iostream> #include <string> using namespace std;// 检查是否为回文数 bool isPalindrome(int n) {string str to_string(n);int left 0, right str.size() - 1;while (left < right) {if (s…...

EDA软件研发的DevOps平台

1&#xff1a;什么是DevOps DevOps是十几年前&#xff0c;在互联网比较火的词&#xff0c;实际上就是ci/cd平台的另外一种说法&#xff0c;核心是说打破研发&#xff0c;测试&#xff0c;运维的边界&#xff0c;能够将整个产品开发的流程快速循环起来&#xff0c;随时可发版&a…...

从单机缓存到分布式缓存那些事

作者&#xff1a;秦怀 1 缓存前世今生 1.1 故事从硬件开始 Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义&#xff0c;用于电脑工程领域。当时没有 Cache&#xff0c;CPU 和内存都很慢&#xff0c;CPU 直接访…...

[Ubuntu20] Gym入门,Mujoco

OpenAI Gym是 OpenAI 出的研究强化学习算法的 toolkit&#xff0c;对于强化学习算法来说&#xff0c;大部分的论文环境都已经被 OpenAI 的 gym 环境集成&#xff0c;我们可以很便利的使用该工程来测试自己的强化学习算法&#xff0c;与他人的算法做一个对比。 Gym 官网 Github…...

Linux(ubuntu)系统的一些基本操作和命令(持续更新)

操作&#xff1a; Ctrl Alt T&#xff08;打开命令终端&#xff09; Ctrl Shift &#xff08;放大命令终端窗口&#xff09; Ctrl c&#xff08;退出当前在终端运行的程序&#xff09; 在命令终端窗口按Tab键可以补全要写的命令 命令&#xff1a; pwd&#xff08;查…...

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化&#xff1f; 重要性&#xff1a;★★ NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…...

android 安全sdk相关

前述 在网上有看到许多android安全sdk相关的内容&#xff0c;有重复的也有比较新鲜的内容&#xff0c;这里做一个整体的合集&#xff0c;以及后续又看到一些比较新的东西会一起放在这里。 android内sdk目前可以分为以下几个部分&#xff08;有一些部分可能会存在一些重合&#…...

NVR监测软件EasyNVR多个NVR同时管理:录播主机的5条常见问题与解决办法

视频监控广泛应用于城市治安、交通管理、商业安保及家庭监控等领域。在使用EasyNVR平台管理多个NVR设备时&#xff0c;尤其是涉及到海康录播主机的场景中&#xff0c;使用者可能会遇到一些常见问题。本文将探讨海康录播主机的五个常见问题及其解决办法。 1、海康录播主机的5条常…...

Z2400027基于Java+SpringBoot+Mysql+thymeleaf引擎的图书馆管理系统的设计与实现 代码 论文

图书馆管理系统的设计与实现 一、项目背景与简介二、系统总体功能三、运行环境与技术选型四、系统架构与模块划分五、系统界面截图六、源码获取 一、项目背景与简介 项目背景&#xff1a; 随着信息技术的不断发展和图书资源的日益丰富&#xff0c;图书馆作为知识传播和学习的重…...

完美解决Docker pull时报错:https://registry-1.docker.io/v2/

1、错误描述 rootubuntu-database:/opt/dify/docker# docker compose up -d [] Running 9/9✘ api Error context canceled …...

A051-基于Spring Boot的网络海鲜市场系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…...

【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 树结构 封装为组件使用

【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 树结构 【组件】前端ElementUi 下拉Tree树形组件 带模糊 https://live.csdn.net/v/436057 单独使用 <template><div><el-popoverstyle"overflow-y: auto; "placement"bottom…...

Blender 运行python脚本

Blender 运行python脚本 步骤 1&#xff1a;打开 Blender 首先&#xff0c;打开 Blender 软件。你可以从官方网站 [blender.org]( 下载最新的 Blender 版本&#xff0c;并按照安装向导进行安装。 步骤 2&#xff1a;打开“文本编辑器”面板 在 Blender 的默认布局中&#xff…...

递归:求fib数列的第n项,前几项是1,1,2,3,5,每一项都等于前面两项的和:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 求fib数列的第n项&#xff0c;前几项是1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5,每一项都等于前面两项的和 输入描述: 输入一个整数n&#xff0c;n<46 输出描述: 输出一个…...

三分钟快速掌握——Linux【vim】的使用及操作方法

一、vim的使用 vim是一个文本编辑器 非常小巧轻便 1.1如何进入vim编辑器 方法一&#xff1a; 首先使用touch 1.c 创建一个源文件 然后使用vim 1.c进入 方法二&#xff1a; 直接使用指令 vim 2.c 会直接创建一个2.c的源文件 退出时记得保存&#xff08;使用wq或者x&am…...

一万元做网站/免费seo优化

级数 01 求级数的和函数 调用格式为&#xff1a; fn为级数的通项&#xff0c;k为级数项数&#xff0c;k0与kn为级数的开始项和终止项。 &#xff08;fn需要以符号表达式给出&#xff0c;若fn只有一个自变量&#xff0c;则k可以省略。&#xff09;Ssymsum(fn,k,k0,kn)实践 求…...

网站开发技术三大件/优化seo方案

nginx访问日志 查看nginx.conf文件 vim /usr/local/nginx/conf/nginx.conf 中间有一行是定义log的格式 log_format combined_realip $remote_addr $http_x_forwarded_for [$time_local] $host "$request_uri" $status "$http_referer" "$http_user_ag…...

设计小程序多少钱/seo推广小分享

Activity之间传数据时&#xff0c;为了避免麻烦&#xff0c;往往会将一些值封装成对象&#xff0c;然后将整个对象传递过去。传对象的时候有两种情况&#xff0c;一种是实现Parcelable接口&#xff0c;一种是实现Serializable接口。0、解释两种接口&#xff1a;1&#xff09;实…...

广州高端品牌网站建设/网站建设怎么弄

第1 章 Hello Unity 3D 11.1 Unity 3D 游戏引擎进化史 11.2 Unity 3D 编辑器初印象 51.2.1 Project 视图 51.2.2 Inspector 视图 81.2.3 Hierarchy 视图 91.2.4 Game 视图 101.2.5 Scene 视图 121.2.6 绘图模式 141.2.7 渲染模式 161.2.8 场景视图控制 171.2.9 Effects 菜单和G…...

阿里网站年费续费怎么做分录/百度广告一级代理

txt中数据格式如下&#xff1a;期号 红球 蓝球 开奖时间 开奖公告2012041 08 11 15 20 24 32 02 2012-04-10 开奖公告2012040 03 08 09 22 25 31 10 2012-04-08 开奖公告2012039 01 02 05 13 22 29 08 2012-04-05 开奖公告2012038 09 10 11 15 19 33 16 2012-04-03 开奖公告201…...

如何选择邯郸网站制作/重庆seo排名公司

题目&#xff1a;题目描述连接 解答&#xff1a; select firstName,lastName,city,state from Person left join Address on Person.PersonId Address.PersonId;讲解&#xff1a; 多表连接 多表的联结又分为以下几种类型&#xff1a; 1&#xff09;左联结&#xff08;left …...