(day 7)JavaScript学习笔记(函数1)

概述

        这是我的学习笔记,记录了JavaScript的学习过程,我是有一些Python基础的,因此在学习的过程中不自觉的把JavaScript的代码跟Python代码做对比,以便加深印象。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。

        今天主要学习函数,主要是声明函数、调用函数、函数表达式、变量和函数提升、默认参数等内容。

1.函数的定义

        函数是计算机程序中非常重要的一个概念,它是程序的最小组成单元。函数的主要作用是实现了对过程的封装和对细节的隐藏,使得我们只需关注函数的功能,而不必关注函数体语句是如何编写的。
        函数一般会有输入参数并有返回值。参数包括实际参数(实参)和形式参数(形参)。实参是真实传给函数的参数,可以是常量、变量、表达式或函数等。形参是函数名后括号中的变量,只有在函数调用时才实例化(分配内存单元)。
        函数根据来源可分为库函数(又叫内置函数)和自定义函数。库函数是编程语言本身提供的函数,自定义函数则是用户根据需要自行设计的函数。自定义函数是我们要学的重点。
        总的来说,函数在编程中起到了关键的作用,它使得代码更加模块化,易于理解和维护。通过合理地设计和使用函数,可以极大地提高编程的效率和质量。

2.声明函数与调用函数

        我们先举一个简单的例子来更好的理解函数的功能的,比如,把大象放冰箱分几步?1.把冰箱门打开;2.把大象放进冰箱;3.把冰箱门关上。如果把这三个步骤输出,就是如下代码:

console.log("1.把冰箱门打开");
console.log("2.把大象放进冰箱");
console.log("3.把冰箱门关上");

         但是如果把小狗放冰箱、把小猫放冰箱,把狮子、老虎放冰箱呢?总不能每次都把这三行代码写一遍,因此就需要用到函数了,我们写一个函数把变量作为参数,然后调用函数把实参传进去就可以了。

        在JavaScript中函数声明是用关键字 function来声明的,如下代码示例:

// 声明函数
function putInRefrigerator(something) {
  //putInRefrigerator是自定义的函数名,something是形参,可以是任意的
  console.log("1.把冰箱门打开");
  console.log("2.把" + something + "放进冰箱");
  console.log("3.把冰箱门关上");
}

// 调用函数
putInRefrigerator("大象"); // "大象"是实参
console.log("*************"); 
putInRefrigerator("小狗"); // "小狗"是实参
console.log("*************");
putInRefrigerator("狮子"); // "狮子"是实参

        上述代码运行后输出如下图所示:

        我们看到已经输出我们想要的内容的了。 

        函数名后面小括号内为参数,参数可以没有,也可以是多个,如下代码示例:

// 声明没有参数的函数
function sayHello() {
  console.log("Hello");
}
// 调用没有参数的函数
sayHello(); //输出:Hello

// 声明有两个参数的函数
function add(a, b) {
  //a和b是两个形参
  return a + b;
}
// 调用有两个参数的函数
c = add(5, 6); // 5和6是两个实参
console.log(c); //输出:11

PS:在Python中定义函数关键字要用def,如下代码示例是用Python做的代码示例:

# 以下是Python代码
# 声明函数
def putInRefrigerator(something):
  #putInRefrigerator是自定义的函数名,something是形参,可以是任意的
  print("1.把冰箱门打开")
  print("2.把" + something + "放进冰箱")
  print("3.把冰箱门关上")

# 调用函数
putInRefrigerator("大象") # "大象"是实参
print("*************")
putInRefrigerator("小狗") #  "小狗"是实参
print("*************")
putInRefrigerator("狮子") # "狮子"是实参

# 声明没有参数的函数
def  sayHello() :
  print("Hello")

# 调用没有参数的函数
sayHello() # 输出:Hello

# 声明有两个参数的函数
def add(a, b) :
  #a和b是两个形参
  return a + b

# 调用有两个参数的函数
c = add(5, 6); # 5和6是两个实参
print(c); #输出:11

        注意,在调用函数的时候,实参可以是实际值,也可以是一个变量。

3.函数表达式

        函数表达式是JavaScript中定义函数的一种方式,与函数声明有所不同。函数表达式可以将一个匿名函数或具名函数赋值给一个变量,从而通过该变量来调用函数。

        如下代码示例,先定义一个函数add,然后再把这个函数赋值给变量plus,调用的时候直接用plus来调用:

function add(a, b) {
  return a + b;
}

var plus = add; //将函数add直接赋值给变量plus,注意add后面没有小括号,不是调用函数
console.log(plus(5, 5)); //直接用plus加括号就可以调用,输出结果为10

        匿名函数是指没有名称的函数,如下我们定义一个函数mutip赋值给变量multiply,我们将来调用函数的时候是直接用变量名来调用的,所以函数名mutip就可以省略,这样就是一个匿名函数。

var multiyply = function multip(a, b) {  //multip可以省略
  return a * b; 
};

// 省略multip就形成了匿名函数
var multiply2 = function (a, b) {
  return a * b;
};

//调用函数
console.log(multiply2(5, 6)); //输出为:30

4.变量和函数的提升(Hoisting)

        提升是指可以让我们在代码里先使用后声明,我可以看如下代码示例:

x = 100; //先赋值
console.log(x); //输出:100
var x; //后定义

        代码中我们先使用了变量后面再用关键字进行声明,这样程序是允许的,如果后面没有关键字声明,会提示x是undefined。不过一般情况下不推荐这样写,这样写可读性较差。

        不过函数的提升是重要的,我们可以在代码中先调用函数,把函数统一在代码的底部进行声明,这样结构就比较清晰。因为我们在写代码时关注的时逻辑,不关注函数的声明和定义,如果有需要再往下看即可,如下代码演示函数的提升:        

console.log(divide(10, 5)); //先调用函数,输出:2

function divide(a, b) {
  return a / b;
}

5.默认参数

        在定义函数的时候,我们可以函数的参数一个默认值,有默认值的参数是不用传递参数的,如下代码示意:

function greeting(name = "小朋") {
  //"小朋"是参数name的默认值
  console.log("你好!" + name);
}
//调用函数,不用传递参数,使用默认值
greeting(); //输出:你好!小朋

        有默认值的参数也可以传参,传递的参数会把默认值覆盖,如下代码我们调用刚才的函数:

//调用函数,传递参数,会覆盖默认值
greeting("鹏鹏"); //输出:你好!鹏鹏

        如果定义的函数有多个参数,只有一个参数有默认值,在调用的时候想使用第一个参数的默认值,那么可以使用undefined传参,如下代码:

function greetingWithWeek(name = "小朋", week) {
  console.log("你好!" + name + ",今天是星期" + week);
}

greetingWithWeek(undefined, "三"); //输出:你好!小朋,今天是星期三

        注意在Python中定义函数时,如果有多个形参,其中一个形参有默认值,那边就必须把带有默认值的形参放在后面,因为Python中带有默认值的形参后跟的形参也必须有默认,否则会报错,如下是代码示例:

# 以下是Python代码
def greetingWithWeek(week, name1="小朋"):
    print("你好!" + name1 + ",今天是星期" + week)

greetingWithWeek("三")  # 输出:你好!小朋,今天是星期三

        以上便是今天要学习的内容,如果对你有所帮助请点个赞再走吧。

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

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

相关文章

社媒营销会遇到的封号问题

最近看到很多的直播都在教伙伴们怎么用linked in 以及facebook开发客户,比如如何添加联系人,如何用添加好友的话术,如何加群,如何分析客户的背景等等。 有的主播只是讲一些表面的东西,有的主播可能是真的肚子里有货&a…

【DataWhale学习】用免费GPU线上跑StableDiffusion项目实践

用免费GPU线上跑SD项目实践 ​ DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动,我很感兴趣就参加啦。之前就对chatGLM有所耳闻,是去年清华联合发布的开源大语言模型,可以用来打造个人知识库什么的,一直没有尝试。而SD我…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:StepperItem)

用作Stepper组件的页面子组件。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 接口 StepperItem() 属性 参数名参数类型参数描述prevLabelstring设置左侧文本按钮内…

硬件软件_驱动程序只有cat,inf,sys,怎么安装?

硬件软件_驱动程序只有cat,inf,sys,怎么安装? 右键点击inf文件 -》 安装 即可完成。

文件外发管理软件(控制文件外发的软件·精选推荐)

无论是与合作伙伴共享资料、还是员工需要在家办公时访问公司内部文件,文件的外发都是必要的。然而,这也带来了数据泄露的风险。 如果没有有效的管理手段,敏感信息可能会被未授权的人员获取,进而对企业的商业机密、客户隐私和知识…

Excel查找函数的高级用法

查找在实际工作中是经常遇到的,那你会查找吗?本期与大家分享6个查找函数技巧。 一、查找的基础用法 1、根据内容查找相应的行数 想知道数据在区域中的位置,可以用MATCH函数。 举个例子,查找“刘冰”在姓名列中所在的函数。 输…

Web-based DBMS Technology 线上数据库

Example Online Databases • https://www.planespotters.net/ • https://www.comics.org/ • https://www.quandl.com/ • https://www.enigma.com/ • https://www.sportradar.com/ Basics of WWW • The Web is a very large client-server system — Connected through r…

Anaconda的使用及spyder相关设置

Anaconda Anaconda是一个Python发行版,主要用于数据科学和机器学习领域。Anaconda集成了许多常用的数据科学工具和库,如NumPy、Pandas、Scikit-learn等,同时还包含了一个强大的包管理器conda和一个集成开发环境Spyder。Anaconda的目标是提供一…

电脑回收站图标更改

小猫图标 效果图 1.下载压缩包 https://www.123pan.com/s/9QRqVv-u3lY.html 解压后得到两个文件 coo.dll(满) ooo.dll(空)把这两个文件放到C盘的图片文件夹中 2.更改图标 wini打开设置,选择个性化&#xff0c…

Python学习笔记1:Pycharm首次安装环境搭建汉化

Pycharm首次安装环境搭建汉化笔记 1.下载网址 首先下载专业版的pycharm,这里建议下载专业版是因为功能更全面,社区版的往往没有远程调控等实践功能。 网址贴在下方: https://www.jetbrains.com/pycharm/download/?sectionwindows •Profe…

Vue3组件详情

Vue3组件详情 一、父组件向子组件传值 ref、props二、子组件向父组件传值 emit三、子组件向父组件传值 v-model四、setup语法糖1、基本用法2、data和methods3、计算属性 computed4、监听器 watch、watchEffect5、自定义指令 directive6、import导入的内容可以直接使用7、声明pr…

【Docker】使用Docker部署IT运维管理平台CAT

作者怀揣着一个美好的愿景,旨在提升管理效率、推动开源项目的蓬勃发展。 来一杯咖啡与茶,为 IT 运维从业者减轻管理负担,提升管理效率,从繁重无序的工作中解压出来,利用剩余时间多喝一杯休息一下。 这是一个专为 IT 运…

英伟达推出免训练,可生成连贯图片的文生图模型ConsiStory,生成角色一致性解决新方案

目前,多数文生图模型皆使用的是随机采样模式,使得每次生成的图像效果皆不同,在生成连贯的图像方面非常差。 例如,想通过AI生成一套图像连环画,即便使用同类的提示词也很难实现。虽然DALLE 3和Midjourney可以对图像实现…

k8s+zabbix

一,环境: 1),k8s部署,master和node节点都部署成功 二,部署: 1),安装python3(资源中有) wget https://www.python.org/ftp/python/3.7.4/Python-…

【Python】新手入门学习:详细介绍组合/聚合复用原则(CARP)及其作用、代码示例

【Python】新手入门学习:详细介绍组合/聚合复用原则(CARP)及其作用、代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集…

为什么选择VR全景进行企业宣传,如何将VR全景运用在企业展示

引言: 随着科技的不断发展,VR全景技术逐渐成为企业宣传的热门选择。那么,为什么越来越多的企业选择使用VR全景技术进行宣传呢? 一.为什么选择VR全景技术进行企业宣传 1. 提升用户体验 VR全景技术可以为用户营造身临…

c++函数SetConsoleTextAttribute

前言 正文 1.作用: 2.函数格式(重点): 3.参数(重点): 前言 实用(真的) 正文 1.作用: 更改cmd的背景色与字体颜色 2.函数格式(重点): SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10进制参数); …

怎么查看电脑是不是固态硬盘?简单几个步骤判断

随着科技的发展,固态硬盘(Solid State Drive,简称SSD)已成为现代电脑的标配。相较于传统的机械硬盘,固态硬盘在读写速度、稳定性和耐用性等方面都有显著优势。但是,对于不熟悉电脑硬件的用户来说&#xff0…

Java学习-Collection集合框架2

1.Set集合的特点 特点体验: 1.1 hashSet的底层实现-哈希表 以及特点 普通二叉树和二分查找树 二分查找树的缺点: 红黑树是什么? HashSet集合去重复的机制:(HashSet比较地址只要地址不同,就不算重复) 此时就需要重写Hashcode和equals方法了: 1.2linkedHashSet特点及底层原理 1.…

Apache SeaTunnel MongoDB CDC 使用指南

随着数据驱动决策的重要性日益凸显,实时数据处理成为企业竞争力的关键。SeaTunnel MongoDB CDC(Change Data Capture) 源连接器的推出,为开发者提供了一个高效、灵活的工具,以实现对 MongoDB 数据库变更的实时捕获和处理。 本文将深入探讨该连…