学习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);//2

        let num3 = 0;
        let num4 = 1;
        console.log(num3 && num4);//0

        //逻辑或中断左侧为真则返回左侧,左侧为假则返回右侧

        let num5 = 1;
        let num6 = 2;
        console.log(num5 || num6);//1

        let num7 = 0;
        let num8 = 5;
        console.log(num7 || num8);//5
    </script>

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

 function getSum(a, b) {
            a = a || 0
            b = b || 0
            console.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:ss
        function 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.总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《TCP/IP网络编程》(第十一章)进程间通信

进程间通信意味着两个不同的进程间可以交换数据&#xff0c;它使得不同的进程能够协同工作&#xff0c;实现复杂的系统功能。 1.通过管道实现进程间通信 下图是基于 管道&#xff08;PIPE&#xff09; 的进程间通信结构模型 管道不属于进程的资源&#xff0c;属于操作系统的资…

Python | Leetcode Python题解之第104题二叉树的最大深度

题目&#xff1a; 题解&#xff1a; class Solution:def maxDepth(self, root: TreeNode) -> int:if not root: return 0queue, res [root], 0while queue:tmp []for node in queue:if node.left: tmp.append(node.left)if node.right: tmp.append(node.right)queue tmp…

基于Vue+SpirngBoot的博客管理平台的设计与实现(论文+源码)_kaic

摘 要 随着当下社会的发展&#xff0c;互联网已经成为时代的主流&#xff0c;从此进入了互联网时代&#xff0c;对大部分人来说&#xff0c;互联网在日常生活中的应用是越来越频繁&#xff0c;大家都在互联网当中互相交流、学习、娱乐。博客正是扮演这样一个角色。博客已成为当…

《我的阿勒泰》最经典的6句话

这是首部散文影视化改编的作品&#xff0c;剧集里的每一帧画面&#xff0c;都堪比电影大作。 阿勒泰壮丽广阔的风光&#xff0c;如同一幅幅动人的画卷展现在我们面前&#xff0c;让人沉醉其中。李文秀平淡朴实的生活&#xff0c;却溢出了蓬勃的生命力&#xff0c;直击心灵。只…

git将某次提交合并到另一个分支

一、需求背景 将分支b中的某一次提交单独合并到分支a 二、实现方案 需求&#xff1a;将分支b中的某一次提交单独合并到分支a 1.在git上查看指定某次提交的id&#xff0c;如下图所示&#xff1a; 也可以通过git log命令查看提交的id&#xff0c;如下图&#xff1a; git log…

Java Web集成开发环境Eclipse的安装及web项目创建

第一步&#xff1a;下载安装JDK http://t.csdnimg.cn/RzTBXhttp://t.csdnimg.cn/RzTBX 第二步&#xff1a;下载安装Tomcat Tomcat下载安装以及配置_tomcat下载配置-CSDN博客文章浏览阅读2.5k次&#xff0c;点赞2次&#xff0c;收藏13次。Tomcat下载安装及其配置_tomcat下载配…

范罗士、希喂、安德迈爆款宠物空气净化器哪款好?深度对比测评

作为一名深受养猫过敏困扰的铲屎官&#xff0c;我经常提醒新手铲屎官重视家里的空气环境。宠物的浮毛和皮屑不仅会引发过敏&#xff0c;还可能传播细菌和病毒。很多人以为普通空气净化器能解决问题&#xff0c;但这些产品并未针对宠物家庭的特殊需求。经过多次研究和测试&#…

狂暴少帅短视频:成都科成博通文化传媒公司

狂暴少帅短视频&#xff1a;热血与激情的碰撞 在当下这个信息爆炸的时代&#xff0c;短视频以其独特的魅力迅速占领了人们的视线。而在众多短视频创作者中&#xff0c;一位名为“狂暴少帅”的创作者以其独特的风格和引人入胜的内容&#xff0c;赢得了广大网友的喜爱和追捧。今…

MySQL数据库案例实战教程:数据类型、语法与高级查询详解

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

P7-P9【分配器】【源文件】【OOPvs.GP】

分配器 如何分配&#xff0c;如何释放 源文件 标准库源代码文件VC布局 标准库源代码文件GCC布局 OOP(面向对象编程) VS GP(泛型编程) 这两种编程的区别&#xff1a; 面向对象编程是将数据和方法联系在一起&#xff0c;更注重对不同的对象做出不同的响应&#xff0c;更适合…

浅谈redis未授权漏洞

redis未授权漏洞 利用条件 版本比较高的redis需要修改redis的配置文件&#xff0c;将bind前面#注释符去掉&#xff0c;将protected-mode 后面改为no 写入webshell 读者福利 | CSDN大礼包&#xff1a;《网络安全入门&进阶学习资源包》免费分享&#xff08;安全链接&#xff…

数字化工厂怎么收集,处理数据?

数字化工厂的数据收集与处理 数字化工厂是现代化工厂&#xff0c;利用数字技术和数据分析提高效率和优化流程。数据分析作为数字化工厂的核心技术&#xff0c;对数据的获取与处理至关重要。在数字化工厂中&#xff0c;数据的来源包括企业内部信息系统、物联网信息以及外部信息&…

【华为OD机试-C卷D卷-200分】反射计数(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 给定一个包含 0 和 1 的二维矩阵。 给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则发生镜面发射。 无论物体…

宝塔部署Java+Vue前后端分离项目

1. 服务器 服务器选择Linux的CentOS7的版本 2. 宝塔Linux面板 2.1 百度搜索宝塔 2.2 进去之后点击立即免费安装 2.3 选择Linux在线安装&#xff0c;输入服务器信息进行安装(也可以选择其他方式) 安装完成之后会弹一个宝塔的应用面板&#xff0c;并附带有登录名称和密码&…

韩顺平0基础学Java——第13天

p264-p284 安装IDEA&#xff0c;熟悉一下软件。 尴尬了&#xff0c;难道是这个版本的idea不支持jdk17&#xff0c;难受住了 成功了&#xff0c;顺便跑一下昨天的作业&#xff1a; 这都要跑2秒&#xff1f;是电脑的问题还是谁的问题&#xff1f;控制台里跑的好快的哦 设置id…

django中,无法跳转到请求的html页面?

出现错误&#xff1a; You’re seeing this error because you have DEBUG True in your Django settings file. Change that to False, and Django will display a standard 404 page. 在urls中&#xff0c;注释了系统的默认配置&#xff0c;这时就需要在setting配置文件中&…

京东面试:SpringBoot同时可以处理多少请求?

面试题大全&#xff1a;www.javacn.site Spring Boot 作为 Java 开发中必备的框架&#xff0c;它为开发者提供了高效且易用的开发工具&#xff0c;所以和它相关的面试题自然也很重要&#xff0c;咱们今天就来看这道经典的面试题&#xff1a;Spring Boot 同时可以处理多少个请求…

17- PHP 开发-个人博客项目TP 框架路由访问安全写法历史漏 洞

常见的php框架&#xff1a;laravel和thinkphp和yii 这里以thinkphp为例 thinkphp目录访问设置 这里只找到了这个3.多的源代码&#xff0c;没找点5.的&#xff0c;凑合一下 链接&#xff1a;GitHub - top-think/thinkphp: ThinkPHP3.2 ——基于PHP5的简单快速的面向对象的PHP…

docker-compose报错

前提条件 1、使用docker-compose之前&#xff0c;一定要安装并且运行Docker 2、拉取镜像之前&#xff0c;一定要配置Docker镜像加速&#xff0c;否则下载特别慢 情况1 docker-compose无法打开 错误信息&#xff1a; cannot open self /usr/local/bin/docker-compose or arch…