四、函数基础、函数种类、形实参和映射关系

news2024/12/23 9:06:27

四、函数基础、函数种类、形实参和映射关系

编程基本原则:高内聚、低耦合。

我总结:

  • 模块自身,要求高内聚:模块中代码相关性变强,代码紧密联系程度变高,希望它能独立完成一个功能。
  • 模块之间,要求低耦合:把重复的代码提取出来,组成一个功能模块,谁需要谁来用。

js中为了满足这个基本原则->引入了函数概念,即函数式编程。

函数的作用:让程序可以在不同位置执行同一个功能。

注:函数只有被调用时才会执行


函数基础

函数的组成部分

  • 关键字:function
  • 函数名
  • return,没有的话默认返回undefined
  • 参数(可选)

命名规则

  • 不能数字开头
  • 字母,下划线,$开头
  • 小驼峰

函数种类

目前学的:函数声明、函数表达式

函数定义方式

  • 函数声明:

    function name(参数){
    	//statements 
    }    
    
  • 函数表达式:当省略函数名时,该函数就成为了匿名函数。

    var myFunction = function test(参数){
        //statements
        console.log(1)
    }
    console.log(myFunction.name); //可以获取函数的名字test
    myFunction(); //正常执行
    test(); //报错
    

    在函数定义的过程中,function test()是赋值给变量myFunction,调用时,是看不到test(),而myFunction是外部真正执行的名称。

    函数表达式的作用:我的思考:开始即命名便于维护,函数本身不会变量提升

函数中的return

  • 函数中没有写return,js引擎隐式添加return语句,终止函数执行。
  • 函数中有return,return终止函数的执行,语句执行到return时,它之后的语句不会被执行。
    • return终止程序执行的同时,也可以返回变量/值。
function test(name) {
    if (!name) {
        return '请填入姓名';
    }
    return name;
}
console.log(test()); //'请填入姓名'
console.log(test('white')); //'white'

可以用或运算||符代替if分支

function test(name) {
    return name || '请输入姓名';
}
console.log(test()); //'请填入姓名',不传入参数name为undefined
console.log(test('white')); //'white'

再次强调逻辑判断为假的情况有:六大假货

undefined null ‘空字符串’ 0 false NaN

注意:''这是空字符串,' '不是空字符串!!!

形实参与映射

形参实参

function test1(a, b){ //形参
    // 形参起到一个占位的作用,形式上占位,所以叫形式参数
}
test1(aa, bb); //实参

参数相当于函数内部声明的变量,参数可以在函数被调用时赋值;

而函数内部的变量,无法在函数被调用时赋值。

function test1(a, b) {
    a = 5
    var c = 20;
    console.log(a,b,c); //5,15,20
}
test1(10, 15);

关于参数的几个问题:

  • 参数有数据类型的规范吗? ×

  • 函数内部能知道所有实参的长度吗?是什么吗?√ 通过arguments

  • 函数内部能知道所有形参的长度吗?√

    function test(a, b){
        console.log(test.length); 
        console.log(arguments.length); 
    }
    test(1, 5, 7); //执行结果2	3
    
  • 传参时,实参与形参个数不同:

    • 实参个数 < 形参个数,不报错,多的形参值为undefined
    • 实参个数 > 形参个数,不报错

形实参映射

提问:a = 3 这里的a和agruments[0]是同一个变量吗?

function test(a, b){
	a = 3;
    console.log(arguments[0]);
}
test(1,2);//执行结果 3

我们打印一下arguments:

在这里插入图片描述

答:不是,a存在内存中,arguments中的值存在于内存中,在栈中存的是类数组的地址。

形参和实参不是一个东西,在系统内部是一个映射关系;只要实参和形参对应,实参改变时形参会改变,形参改变时也会改变实参。即:实参和形参只有一 一对应时,才有映射关系。

//形实参没有做到一 一对应,改变未对应形参的值,并不会修改未对应实参的值
function test(a,b){
    b = 3;
    console.log(arguments[1]);//undefined
}
test(1)

形参中但凡有一个参数有默认值,arguments就不会跟踪参数最终值。
当形参个数>实参个数时,形参是有默认值的,无论它是默认的undefined,还是手动给了一个形参值,这时arguments就不跟踪参数值了;arguments对应参数值的实参列表,这题中没有第二个实参,访问arguments[1]为undefined。

简单理解函数作用域

作用域:变量/函数能访问的范围,可使用的范围。

函数内部的能访问函数外部的变量。

总结函数式编程

函数式编程:一个固定的功能或者代码段被封装的过程,目的是为了实现一个固定的功能或者程序。这个封装体需要一个入口和一个出口,入口就是参数;出口就是返回

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

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

相关文章

【20221213】【每日一题】零钱兑换II

给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。 …

新课程导学杂志新课程导学杂志社新课程导学编辑部2022年第30期目录

前沿《新课程导学》投稿&#xff1a;cn7kantougao163.com 贵州四条线路入选“稻花香里说丰年”全国乡村旅游精品线路 邓小青; 1 基地 梯云村落&#xff0c;晒秋人家——用绚烂色调谱写秋意之诗 邓小青; 2-9 分享 走进“那”文化回归稻香梦聆听丰收声——2022年顶蛳…

Redis 7 新特性之 自定义Functions

Redis 7 新特性之 自定义Functions Redis Functions&#xff08;函数&#xff09;是用于管理服务端执行代码的API。在Redis 7中出现&#xff0c;旨在取代之前版本的EVAL函数&#xff0c;是Redis 7新特性之一。 Eval 脚本的缺点 Redis 7之前的版本通过Eval执行脚本&#xff0…

流媒体协议介绍(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL) /SDP)

流媒体协议介绍&#xff08;RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL) /SDP&#xff09; 一、RTP&#xff1a;实时传输协议&#xff08;Real-time Transport Protocol&#xff09; RTP是一种基于包的传输协议&#xff0c;它用来传输实时数据。在网络上传输数据包的延迟…

艾美捷CD8α体内抗体参数说明化学性质

CD8a&#xff08;Ly 2.2&#xff09;存在于大多数胸腺细胞和包括大多数T抑制/细胞毒性细胞的成熟T淋巴细胞亚群的表面。CD8通过与T细胞受体复合物和蛋白酪氨酸激酶lck的结合参与T细胞活化。 艾美捷CD8α体内抗体基本参数&#xff1a; 中文名称&#xff1a;抗小鼠CD8a体内抗体-…

Kafka极客 - 15 重设消费者位移 Offset

文章目录1. 为什么要重设消费者组位移&#xff1f;2. 重设位移策略3. 消费者 API 方式设置4. 命令行方式设置1. 为什么要重设消费者组位移&#xff1f; 我们知道&#xff0c;Kafka 和传统的消息引擎在设计上是有很大区别的&#xff0c;其中一个比较显著的区别就是&#xff0c;…

怎么看xray发了那些数据包

怎么看xray发了那些数据包。版本说明&#xff1a;Xray 下载地址&#xff1a;https://github.com/chaitin/xray/releases 使用环境&#xff1a;windows、linux、macos皆可 工具说明&#xff1a;Xray扫描器是一款功能强大的安全评估工具。支持主动、被动多种扫描方式&#xff…

UNIAPP实战项目笔记51 登录用户名和密码输入框的数据验证功能

UNIAPP实战项目笔记51 登录账号用户名和密码输入框的数据验证功能 实际案例图片 账号验证 密码验证 登录成功跳转 显示登录和注册页面布局 账号密码的验证功能和登录验证提交 具体内容图片自己替换哈&#xff0c;随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式…

基于PHP和MySQL的新闻发布系统

关于世界杯⚽️ 国际足联世界杯&#xff08;FIFA World Cup&#xff09;&#xff0c;简称“世界杯”&#xff0c;是由全世界国家级别球队参与&#xff0c;象征足球界最高荣誉&#xff0c;并具有最大知名度和影响力的足球赛事。世界杯全球电视转播观众超过35亿 。世界杯每四年举…

【设计模式】简单工厂模式描述总结

简单工厂模式 定义&#xff1a;定义一个创建对象的接口&#xff0c;让子类决定实例化哪一个类。 类型&#xff1a;创建型模式 介绍&#xff1a; 在简单工厂模式中定义一个抽象产品类&#xff0c;抽象产品类声明公共的特性及属性&#xff0c;具体产品类继承抽象产品类后去实…

Educational Codeforces Round 121 (Rated for Div. 2) C. Monsters And Spells

翻译&#xff1a; Monocarp又在玩电脑游戏了。他是个巫师学徒&#xff0c;只会一个咒语。幸运的是&#xff0c;这个法术可以伤害怪物。 他目前所在的关卡包含&#x1d45b;个怪物。他们中的&#x1d456;-th在关卡开始后&#x1d458;&#x1d456;秒出现&#xff0c;并拥有ℎ…

Java石头剪刀布

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

【iMessage苹果源码家庭推】tils扩大软件安装大概释放事变是由程序员筑造的,很轻易发生MemoryLeak控制

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

[附源码]计算机毕业设计的小区宠物管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

小侃设计模式(十七)-中介者模式

1.概述 中介者模式&#xff08;Mediator Pattern&#xff09;是用来降低多个对象和类之间的通信复杂性&#xff0c;这种模式提供了一个中介类&#xff0c;来封装一组对象之间的交互&#xff0c;它将对象之间的交互委派给中介对象交互&#xff0c;避免了对象之间的直接交互。中…

Vue2基础总结

知识点学了太多还是需要总结复习&#xff0c;否则后面会因为零碎的知识点而感到繁杂&#xff0c;那么今天我来总结一下vue相关的知识点&#xff0c;新学习vue的朋友也可以把这当做一个细致总结&#xff1a; 1.Vue是什么&#xff08;重点&#xff09;&#xff1a; 对于Vue的总…

创建 Vue3.0 工程

1.使用 vue-cli 创建 官方文档 : https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create // 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.以上 vue --version vue -V// 安装或者升级你的vue/cli、 覆盖安装最新版本; npm install -g vue/cli//1.创建…

C++初阶 stack和queue的模拟实现

作者&#xff1a;小萌新 专栏&#xff1a;C初阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;模拟实现STL库中的stack和queue 考试周结束咯 狠狠的学&#xff01; stack和queue的模拟实现容器适配器Stack模拟实现接口函数一览代码…

艾美捷西妥昔单抗Cetuximab化学性质和文献参考

西妥昔单抗&#xff08;抗EGFR&#xff09;是表皮生长因子受体&#xff08;EGFR&#xff09;的抑制剂。 艾美捷西妥昔单抗Cetuximab 品名&#xff1a;西妥昔单抗&#xff0c;抑制剂 完整名称&#xff1a;西妥昔单抗&#xff08;抗EGFR&#xff09; 同义词名称&#xff1a;C2…

2022年电动车与车辆工程国际会议(CEVVE 2022)

2022年电动车与车辆工程国际会议&#xff08;CEVVE 2022&#xff09; 重要信息 会议网址&#xff1a;www.cevve.org 会议时间&#xff1a;2022年12月19-21日 召开地点&#xff1a;中国北海 截稿时间&#xff1a;2022年12月15日 录用通知&#xff1a;投稿后2周内 收录检索…