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

项目分享|VibeVoice:微软开源的前沿语音AI

引言 在语音合成&#xff08;TTS&#xff09;技术领域&#xff0c;长篇幅、多说话者、低延迟的自然语音生成一直是行业痛点。传统TTS模型往往受限于生成时长、说话者数量或实时响应速度&#xff0c;难以满足播客制作、智能对话等复杂场景需求。微软开源的VibeVoice框架彻底打破…...

Wan2.1 VAE模型压缩实战:降低显存占用以适配更多GPU设备

Wan2.1 VAE模型压缩实战&#xff1a;降低显存占用以适配更多GPU设备 最近在尝试部署一些图像生成项目时&#xff0c;经常遇到一个头疼的问题&#xff1a;模型太大&#xff0c;显存不够用。特别是像Wan2.1 VAE这类模型&#xff0c;虽然生成效果出色&#xff0c;但动辄几个G的显…...

别再被ToggleGroup坑了!手把手教你写一个不自动选首项的CustomToggleGroup组件(附完整代码)

深度定制Unity ToggleGroup&#xff1a;打造无默认选中行为的智能组件 引言 在Unity UI开发中&#xff0c;ToggleGroup组件是构建选项卡式界面的常见选择&#xff0c;但许多开发者都遇到过这样的困扰&#xff1a;当ToggleGroup激活时&#xff0c;系统总会自动选中第一个Toggle项…...

VSCode里藏着的绘图神器:Live Preview搭配Mermaid插件,边写代码边出图真香了

VSCode绘图革命&#xff1a;用Mermaid实现代码与图表无缝协同 在IDE里切换窗口查看流程图的日子该结束了。作为每天与代码打交道的开发者&#xff0c;我们早已厌倦了在Visio、ProcessOn和代码编辑器之间反复横跳的繁琐操作。Mermaid语法配合VSCode的实时预览功能&#xff0c;正…...

零基础入门esp32开发:用快马平台生成第一个led控制程序详解

最近在学ESP32开发&#xff0c;发现对于新手来说&#xff0c;从零开始写代码还是挺有挑战的。不过我发现了一个超好用的工具——InsCode(快马)平台&#xff0c;它可以根据你的需求直接生成可运行的代码&#xff0c;特别适合像我这样的初学者。 项目需求分析 我想实现一个简单的…...

ArduPilot电机控制逻辑与PWM输出机制剖析

1. ArduPilot电机控制基础概念 当你第一次接触无人机飞控时&#xff0c;最让人困惑的莫过于电机控制逻辑了。想象一下&#xff0c;你手里拿着遥控器&#xff0c;轻轻推动摇杆&#xff0c;无人机就能平稳地上升、下降或者转向。这背后到底发生了什么&#xff1f;让我用最直白的…...

开源编解码工具技术选型与实战指南:跨场景应用的H.264解决方案

开源编解码工具技术选型与实战指南&#xff1a;跨场景应用的H.264解决方案 【免费下载链接】openh264 Open Source H.264 Codec 项目地址: https://gitcode.com/gh_mirrors/op/openh264 一、价值定位&#xff1a;为什么开源编解码工具是技术选型的最优解 在视频技术快…...

OpenClaw环境隔离方案:ollama-QwQ-32B镜像与本地Python虚拟环境整合

OpenClaw环境隔离方案&#xff1a;ollama-QwQ-32B镜像与本地Python虚拟环境整合 1. 为什么需要环境隔离 上周我在尝试将OpenClaw接入本地部署的ollama-QwQ-32B模型时&#xff0c;遇到了一个棘手的问题&#xff1a;我的开发环境突然崩溃了。事后排查发现&#xff0c;是OpenCla…...

std::unique_lock vs std::lock_guard:C++线程锁选择指南(附性能测试)

std::unique_lock vs std::lock_guard&#xff1a;C线程锁的深度抉择与实战优化 在C多线程编程中&#xff0c;锁的选择往往决定了程序的性能表现和稳定性。当我们需要在std::unique_lock和std::lock_guard之间做出选择时&#xff0c;不能简单地认为"功能多就是好"。本…...

深度解析模型调参三剑客:Temperature、Top-k与Top-p的实战应用

1. 理解调参三剑客的核心逻辑 第一次接触大模型参数调整时&#xff0c;我被Temperature、Top-k和Top-p这三个参数搞得晕头转向。直到在电商文案生成项目中踩了坑才明白&#xff1a;这三个参数就像烹饪时的火候控制&#xff0c;用对了能让AI输出事半功倍。 Temperature本质上是个…...