当前位置: 首页 > 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;查…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...