学习javascript的函数

news2024/9/8 11:15:05

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.总结

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

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

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

相关文章

windows-386、windows-amd64、windows-arm64这三者有什么区别?

选择文件的版本出现下面问题&#xff1a; Architectures windows-386 &#xff1a;这些是针对 32 位 Windows 系统编译的。windows-amd64 &#xff1a;这些是针对具有 AMD 或 Intel x86-64 架构的 64 位 Windows 系统编译的。windows-arm64 &#xff1a;这些是针对具有 ARM 架…

模型实战(20)之 yolov8分类模型训练自己的数据集

yolov8分类模型训练自己的数据集 yolov8,一个实时快速的端到端的集检测、分割、分类、姿态识别于一体的视觉算法库/框架本文将给出yolov8 分类模型的数据集制作格式及训练流程 1. 环境搭建 关于虚拟环境的搭建真的是老生常谈了,给出一个简单的搭建流程吧#新建虚拟环境 conda …

大模型时代的具身智能系列专题(三)

清华高阳团队 高阳为清华叉院助理教授&#xff0c;本科毕业于清华大学计算机系&#xff0c;博士毕业于UC Berkeley。博士导师是Vision领域的大牛Trevor Darrell&#xff0c;读博期间和Sergey Levine合作开始强化学习方面的探索&#xff0c;博后跟随Pieter Abbeel做强化学习&am…

7.类和对象

类和对象 当我们没有去了解过java的知识点中 不免产生一些问题&#xff1a; 什么是类&#xff1f;什么是对象&#xff1f; 记住一句话&#xff1a;在java当中 一切皆对象 类&#xff1a;是用来描述一个对象的 而对象是一个真正存在的实体 在Java这门纯面向对象的语言中 我们…

利用ArcGIS Python批量拼接遥感影像(arcpy batch processing)

本篇文章将说明如何利用ArcGIS 10.1自带的Python IDLE进行遥感影像的批量拼接与裁剪。 1.运行环境&#xff1a;ArcGIS10.1 (安装传送门)、Python IDLE 2.数据来源&#xff1a;地理空间数据云 GDEMV2 30M分辨率数字高程数据 3.解决问题&#xff1a;制作山西省的DEM影像 如下…

重生之 SpringBoot3 入门保姆级学习(05、 Bean 装配)

重生之 SpringBoot3 入门保姆级学习&#xff08;05、 Bean 装配&#xff09; [TOC](重生之 SpringBoot3 入门保姆级学习&#xff08;05、 Bean 装配&#xff09;)2.2.1 通过 ioc.xml 文件配置2.1.2 通过 Configuration 注解配置2.2.4 测试 Bean 是否生效 新建 User 类 package…

构建镜像时候出现奇怪的现象时候

一、背景 构建镜像时候&#xff0c;昨天还好好的&#xff0c;今天出现奇怪的现象 二、查看现象 docker system df#cache 显示600G 三、步骤 这操作比较轻微&#xff0c;20以前的缓存清理掉 docker builder prune --filter until480h # 清除20填以前的构建缓

深入理解栏目函数:从基础结构到实际应用

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、栏目函数的基本结构解析 代码案例 二、栏目函数的参数理解与返回值探究 参数取值与返…

决策树|随机森林 GBDT XGBoost|集成学习

文章目录 1 决策树模型1.1 决策树模型简介1.2 决策树模型核心问题1.2.1 分类划分标准1.2.1.1 信息增益1.2.1.2 增益率1.2.1.3 基尼系数 1.2.2 停止生长策略1.2.3 剪枝策略 1.3 决策树 - python代码1.3.1 结果解读1.3.2 决策树可视化1.3.3 CV - 留一法 2 集成学习2.1 Boosting2.…

MySQL:如果用left join的话,左边的表一定是驱动表吗

一、前言 在日常开发过程中关于MySQL的优化方面&#xff0c;我们知道小表驱动大表原理。例如left join&#xff0c;放在左边的表作为驱动表。但是用left join的话&#xff0c;左边的表一定是驱动表吗&#xff0c;本文将通过案例分析给出详细分析。 二、概念 在MySQL中&#xf…

初识C++ · 模拟实现vector

目录 前言&#xff1a; 1 部分简单函数的实现 2 push_back和pop_back 3 reserve和resize 4 Print_vector 5 insert和erase 6 拷贝构造 7 构造 8 赋值 9 memcpy的问题 10 迭代器失效 前言&#xff1a; 继上文模拟实现了string之后&#xff0c;接着就模拟实现vector&…

Java三种方法实现多线程,继承Thread类,实现Runnable接口,实现Callable接口

目录 线程&#xff1a; 继承Thread类&#xff1a; 实现Runnable类&#xff1a; 实现Callable接口&#xff1a; 验证多线程&#xff1a; 线程&#xff1a; 定义&#xff1a;进程可以同时执行多个任务&#xff0c;每个任务就是线程。举个例子&#xff1a;一个Java程序&#…

rfid资产管理系统如何帮助医院管理耗材的

RFID资产管理系统可以帮助医院管理耗材&#xff0c;提高耗材管理的效率和准确性。以下是它可以发挥作用的几个方面&#xff1a; 1. 实时跟踪和定位&#xff1a;使用RFID标签附加在耗材上&#xff0c;可以实时跟踪和定位耗材的位置。医院可以通过系统查询耗材的实时位置&#xf…

以梦为马,不负韶华(3)-AGI在企业服务的应用

AGI在企业服务中&#xff0c;各应⽤已覆盖企业全流程&#xff0c;包含⼈⼒、法务、财税、流程⾃动化、知识管理和软件开发各领域。 由于⼤语⾔模型对⽂本处理类场景有着天然且直接的适配性&#xff0c;⽂本总结、⽂本内容⽣成、服务指引等发展起步早且应⽤成熟度更⾼。 在数据…

景源畅信电商:做抖店的成本高吗?

在当今数字化时代&#xff0c;抖音不仅仅是一个分享短视频的平台&#xff0c;更是一个充满商机的市场。随着抖音用户量的激增&#xff0c;越来越多的商家和个人开始关注在抖音上开设店铺&#xff0c;即所谓的“抖店”。那么&#xff0c;做抖店的成本高吗?这个问题困扰着许多初…

南京“十元手冲咖啡” :流量怎么砸中你?

三包速溶咖啡、一个塑料热水壶&#xff0c;却意外打造出一款爆品。 南京“十元手冲咖啡”突然爆火&#xff0c;起初靠的是出人意料&#xff0c;你以为她要从罐子里擓粉了&#xff0c;她掏出来三条雀巢速溶&#xff1b;你以为她要用机器打水了&#xff0c;她拿出来一个上世纪的…

鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】

媒体查询 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 &#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入模块 import mediaquery from ohos.media…

微信聊天记录删除了怎么恢复?5个数据恢复方法要收好!

“我删除了手机上的微信&#xff0c;然后我的聊天记录就全没了。我怎样才能恢复以前的微信聊天记录&#xff1f;”作为苹果手机和安卓手机上最流行的即时信息应用程序之一&#xff0c;微信凭借其令人惊叹的功能&#xff0c;目前已拥有超过10亿活跃用户进行交流。只要您的手机上…

堆结构知识点复习——玩转堆结构

前言:堆算是一种相对简单的数据结构&#xff0c; 本篇文章将详细的讲解堆中的知识点&#xff0c; 包括那些我们第一次学习堆的时候容易忽略的内容&#xff0c; 本篇文章会作为重点详细提到。 本篇内容适合已经学完C语言数组和函数部分的友友们观看。 目录 什么是堆 建堆算法…

【CTF Web】CTFShow web2 Writeup(SQL注入+PHP+UNION注入)

web2 1 管理员赶紧修补了漏洞&#xff0c;这下应该没问题了吧&#xff1f; 解法 注意到&#xff1a; <!-- flag in id 1000 -->但是 or 被拦截了。 if(preg_match("/or|\/i",$id)){die("id error");}使用UNION注入&#xff1a; ?id1 union sele…