学习javascript的函数

1.什么是函数?

可以重复被使用的代码块

作用:函数可以把具有相同或者相似逻辑的代码“包裹起来”,有利于代码的复用。

2.函数的基本使用

1.定义函数

利用关键字Function 定义函数(声明函数)

function 函数名(){函数体
}

函数命名与变量名一致,采用小驼峰命名,函数的 名字常常采用动词。

2.调用函数

定义一个函数不会自动执行,需要去调用它。

函数名();

函数可以多次调用,每次调用都会重新执行函数体里面的代码。

<script>function getSum(){let num1 =10;let num2 =15;console.log(num1+num2);}getSum();</script>

3.参数

语法:

function 函数名(参数1,参数2,....){return 结果;
}

说明:

函数参数,如果可以有多个则用逗号分隔,用于接受传递过来的数据。

return 关键字可以把结果返回调用者。

<script>function getSum(a, b) {return a + b;}console.log(getSum(11,22));
</script>

4.demo:计算两个数之间的和

 <script>function getFromTo(a, b) {let sum = 0;for (let i = a; i <= b; i++) {sum += i;}return sum;}let num1 = +prompt('请输入第一个数');let num2 = +prompt('请输入第二个数');let num = getFromTo(num1, num2);document.write(`${num1}到${num2}之间的和为${num}`);</script>

5.形参与实参

形参:声明函数时小括号里面的叫做形参(形式上的参数)

实参:调用函数时小括号里面的叫做实参(实际上的参数)

执行过程:会把实参里面的参数传递给形参,从而提供给函数内部使用,我们可以把形参理解为变量。

在JavaScript中,实参的个数和形参的个数可以不一致

如果形参过多,会自动填充undefined

如果实参过多,那么多余的实参就会被忽略

所以:在开发中实参的个数和形参的个数保持一致

6.逻辑中断

存在于逻辑运算符&&和||中,左边如果满足一定条件会中断代码执行,也被称为逻辑短路

解读:

false%%anything //逻辑与 左边false则中断,如果左边为true,则返回右边代码的值
true||anything //逻辑或,左边true则中断,如果左边是false,则返回右边代码的值

<script>//逻辑与中断,左侧为真则返回右侧,左侧为假则返回左侧let num1 = 1;let num2 = 2;console.log(num1 && num2);//2let num3 = 0;let num4 = 1;console.log(num3 && num4);//0//逻辑或中断左侧为真则返回左侧,左侧为假则返回右侧let num5 = 1;let num6 = 2;console.log(num5 || num6);//1let num7 = 0;let num8 = 5;console.log(num7 || num8);//5</script>

主要是用来解决函数的参数

 function getSum(a, b) {a = a || 0b = b || 0console.log(a + b);}
getSum(1, 10);

7.函数的默认参数

可以给形参设置默认值。

function sum(x=0,y=0){return x + y;
}

说明:这个默认值只会在缺少实参传递或者实参是undefined才会被执行。

默认参数和逻辑中断使用场景区别:

默认参数主要处理函数形参(处理参数要比逻辑中断更简单)

逻辑中断除了参数还可以处理更多的需求

8.demo求数组的和

需求:用户可以给不同数组(里面是数字型数据),求数组和并且返回。

<script>//创建函数,接收一个数组作为参数function getArrSum(arr = []) {let sum = 0;for (let i = 0; i < arr.length; i++) {sum += arr[i]}return sum;}//函数调用,传递一个数组console.log(getArrSum([1, 2, 3, 4, 5]));//函数内部处理数组的和,返回这个结果</script>

9.函数返回值return

返回值:把处理结果返回给调用者

作用:

结束函数:return会立即结束当前函数,所以后面的代码不会被执行。

不要换行:在return关键字和被返回的表达式之间不允许使用换行符,否则内部执行相当于会自动补充分号。

默认返回:函数可以没有return ,这种情况函数默认返回值为undefined

10.demo 判断数组中是否存在某个元素,如果有则返回true,没有则返回false

 <script>function getArrOne(item =0 ,arr =[]){for(let i=0;i<arr.length;i++){if(arr[i]===item){return true;}else {return false;}}}console.log(getArrOne(1,[0,5,6,9,4,25,11]));</script>

11.demo 查找索引

 <script>function findIndex(item, arr = []) {//定义一个初始值用来保存索引let index = -1;//遍历元素,查找符合条件的for (let i = 0; i < arr.length; i++) {//查找符合条件if (item === arr[i]) {//修改索引index = i;}}return index;}console.log(findIndex(1, [1, 5, 2, 5, 4, 8, 5, 3, 6]));</script>

12.作用域

变量或者值在代码中的可用性范围。

作用:提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字的冲突。

全局作用域:(全局有效)作用于所有代码执行的环境(整个script标签内部)或者一个独立的js文件。

局部作用域:(局部有效)函数作用域。作用于函数内的代码环境。块级作用域、{}大括号内部。

13.函数表达式

具名函数:带有名字的函数

匿名函数:没有名字的函数,function(){};

btn.onclick=function(){alert('弹出');
}

将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们将这个称为函数表达式。

let fun =function(){}

区别:函数声明可以在任意位置调用,函数表达式不能在表达式之前调用。

立即执行函数:IIFE

无需调用,立即执行,其实本质已经调用了。

多个立即执行函数之间用分号隔开。

好处:避免全局变量之间的污染。

立即执行函数前后要有分号

语法:

//1.方式一
(匿名函数)();
//2.方式二
(匿名函数());
<script>(function (){console.log('立即执行函数写法一');})();(function(){console.log('立即执行函数写法er');}());</script>

14.转换时间案例

需求:用户输入秒数,可以自动转换为时分秒

<script>//1.用户输入总秒数let second = +prompt('请输入一个秒数');//2.创建函数 用函数来格式化时间 hh:mm:ssfunction gettime(time) {let h = parseInt(time / 60 / 60 % 24);let m = parseInt(time / 60 % 60);let s = parseInt(time % 60);//补零h = h < 10 ? '0' + h : h;m = m < 10 ? '0' + m : m;s = s < 10 ? '0' + s : s;document.write(h + "小时", m + "分", s + "秒")}gettime(second);</script>

15.总结

本文章是笔者的学习笔记,如果您在浏览此文章发现了错误,还请您在评论区留言,笔者看到后会在第一时间解决,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4、xss-labs之level4、lecel5

一、level4 1、测试分析 level4跟之前的3一样的思路&#xff0c;闭合value的值&#xff0c;但是通过双引号闭合&#xff0c;然后使用onclick的属性弹窗绕过 输入3的payload&#xff1a; 2、所以构造payload payload&#xff1a;"οnclickalert(1)// 二、level5 1、测…

uniapp高校二手书交易商城回收系统 微信小程序python+java+node.js+php

每年因为有大量的学生在接受教育&#xff0c;每到大学毕业季的时候&#xff0c;所使用的大量书籍对他们自己来说&#xff0c;很多是没有用&#xff0c;同时由于书籍多和不方便携带&#xff0c;导致很多大学生在毕业时将教材直接丢弃是在校大学生处理已用教材的一种主要方式。然…

数据结构-二叉树系统性学习(四万字精讲拿捏)

前言 这里我会从二叉树的概念开始讲解&#xff0c;其次涉及到概念结构&#xff0c;以及堆的实现和堆排序。 目的是&#xff0c;堆比二叉树简单&#xff0c;同时堆本质上是二叉树的其中一种情况&#xff0c;堆属于二叉树顺序结构的实现 最后完善二叉树的讲解&#xff0c;也就是…

Java与Gradle 的版本兼容性矩阵验证

1.下面这个表格显示了java和gradle的版本兼容性情况 2.根据上面这份表格理解&#xff0c;是不是java17就需要gradle 7.3之后来支持。用android studio 来试验一下: jdk选择: build成功: 说明JDK17并不是一定需要Gradle 7.3之后版本 3.使用JDK1.8、JDK11验证一下Grade 7.2是否可…

四款开源电子表格组件,轻松集成到你的项目

hello&#xff0c;大家好&#xff0c;我是徐小夕。之前和大家分享了很多可视化&#xff0c;零代码和前端工程化的最佳实践&#xff0c;最近在研究在线电子表格的技术实现&#xff0c;发现了几个优质的开源电子表格项目&#xff0c;这里和大家一起分享一下。 同时我也把其中一款…

太速科技-基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡)

基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡) 1、板卡概述   板卡采用xilinx Spartan6系列芯片&#xff0c;支持 PCI Express Base Specification 1.1 x1。内含丰富的逻辑资源和存储单元&#xff0c;板卡FPGA外接双片32M*16bit DDR2缓存器&#xff0c;支持乒乓操作。…

超好用的AI插件—Fitten code【IDEA 和 VScode 安装】

Fitten code安装 Fitten code是什么IDEA从磁盘安装Fitten codeVScode安装Fitten code Fitten code是什么 这是Fitten code官网&#xff0c;功能还是很多的&#xff0c;包括代码自动补全、自动添加注释、智能bug查找等等&#xff1a; Fitten Code是由非十大模型驱动的AI编程助手…

视频号小店应该怎么操作呢?不了解的小伙伴快来看!

大家好&#xff0c;我是电商小V 普通人想利用视频号小店赚钱&#xff0c;奈何自己不会直播&#xff0c;不会拍视频&#xff0c;那么普通人应该怎么在视频号中赚钱呢&#xff1f;今天咱们就来详细的说一下&#xff0c; 其实不直播&#xff0c;不拍视频也是可以在视频号上面卖货赚…

Microsoft Remote Desktop for Mac:你的跨平台远程连接利器

Microsoft Remote Desktop for Mac是一款专为Mac用户设计的远程桌面连接工具&#xff0c;它凭借卓越的性能和多项实用功能&#xff0c;成为了跨平台远程协作的首选工具。 多平台支持&#xff1a;Microsoft Remote Desktop for Mac不仅支持与其他Mac设备进行连接&#xff0c;还…

Linux入侵应急响应与排查

入侵者在入侵成功后&#xff0c;往往会留下后门以便再次访问被入侵的系统&#xff0c; 而创建系统账号是一种比较常见的后门方式。 查询特权用户特权用户(uid 为0) awk -F: $30{print $1} /etc/passwd 查找远程可以登录的账户 awk /\$1|\$5|\$6/{print $1} /etc/shadow $1&a…

Less语言

Less是一门预编译语言&#xff0c;它扩展了CSS语言&#xff0c;增加了变量、Mixin、函数等特性&#xff0c;使CSS更易维护和扩展 Less也扩充了CSS语言&#xff0c;增加了诸如变量、混合运算、函数等功能。Less既可以运行在服务端(Node.js和Rhino平台)也可以运行在客户端(浏览器…

前端面试项目细节重难点(已工作|做分享)

面试官提问&#xff1a;需求场景&#xff1a;页面上有一个单选框&#xff0c;有是否两个选项&#xff1a;当用户选择是&#xff0c;出现一个输入框&#xff0c;用户可以输入内容&#xff0c;给后端的保存接口传入参数radio和content这两个字段&#xff0c;值分别是用户选项和输…

数据集005:螺丝螺母目标检测数据集(含数据集下载链接)

数据集简介 背景干净的目标检测数据集。 里面仅仅包含螺丝和螺母两种类别的目标&#xff0c;背景为干净的培养皿。图片数量约420张&#xff0c;train.txt 文件描述每个图片中的目标&#xff0c;label_list 文件描述类别 另附一个验证集合&#xff0c;有10张图片&#xff0c;e…

【二分查找 位运算】3145. 大数组元素的乘积

本文涉及知识点 二分查找算法合集 位运算、状态压缩、枚举子集汇总 LeetCode3145. 大数组元素的乘积 一个整数 x 的 强数组 指的是满足和为 x 的二的幂的最短有序数组。比方说&#xff0c;11 的强数组为 [1, 2, 8] 。 我们将每一个正整数 i &#xff08;即1&#xff0c;2&am…

Lookin高效调试iOS App的UI

Lookin是一款iOS开发时常用的调试软件&#xff0c;由腾讯微信读书团队QMUI开发。 它可以查看和修改iOS App里的UI对象的软件&#xff0c;展示App UI图层&#xff0c;类似于Xcode自带的UI Inspector工具&#xff0c;或另一款叫做Reveal的软件。 此外&#xff0c;虽然Lookin主体…

内存泄漏案例分享4-异步任务流内存泄漏

案例4——异步任务内存泄漏 异步任务&#xff0c;代指起子线程异步完成一些数据操作、网络接口请求等&#xff0c;通常会使用以下API&#xff1a; Runnbale&#xff0c;Thread,线程池RxJavaHandlerThread 而这些异步任务很有可能操作内存泄漏&#xff0c;下面我们以Rxjava为…

【实战JVM】-基础篇-02-类的声明周期-加载器

【实战JVM】-基础篇-02-类的声明周期-加载器 3 类的生命周期3.1 生命周期的概述3.2 加载阶段3.2.1 查看内存中的对象 3.3 连接阶段3.3.1 验证阶段3.3.1.1 验证是否符合jvm规范3.3.1.2 元信息验证3.3.1.3 验证语义3.3.1.4 符号引用验证 3.3.2 准备阶段3.3.3 解析阶段 3.4 初始化…

使用OpenCV计算滑块缺口(2)

上一篇 openCV 计算滑块缺口&#xff0c;执行可能出现问题&#xff0c;这一篇文章&#xff0c;是上一版本的补充&#xff08;https://blog.csdn.net/weixin_42883164/article/details/137604965&#xff09; 实现计算滑块缺口的步骤&#xff1a; 接口部分参照上述文章&#xf…

创新营销之路:探索订单排队模式的无限可能

随着市场竞争的日益激烈&#xff0c;企业家们都在寻找新的营销策略来脱颖而出。在这里&#xff0c;我想向大家介绍一种充满活力和创新性的营销新模式——订单排队模式。它不仅能够有效提升用户黏性&#xff0c;还能为企业带来持续的增长动力。 一、订单排队模式的魅力 订单排队…

为什么建议大家加快拥抱Kotlin,说点不一样的

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 Kotlin自2017年起被Google正式宣布为Android的编程语言之一&#xff0c;随后在2019年进一步宣布Kotlin为Android的首选语言&#xff0c;普及速度…