粉丝1667获赞1.1万

用 lambda 函数创建的自定义函数可以自己调用自己,这种方式被称为递归用法。 比如要计算三加二加一,打开名称管理器,新建一个名称叫递归,引用位置输入这个 lambda 函数,其中递归 x 减一的作用就是调用自身,最后点击确定,即可创建一个名字叫递归的自定义函数, 然后在单元格中输入等于递归,就可以通过名称调用这个自定义函数参数,输入三,最后按回车键即可完成三二一的加总结果是六。整个函数的计算逻辑是这样的,当我们把三复制 x 后,会执行第一次 if 判断,因为三等于一的结果是 false, 因此公式就会返回 if 函数的参数三,也就是三加递归二,其中递归二又会执行 if 判断,此时 x 就 变成了二,递归二的计算结果是二加递归一,整个函数的结果就变成了三加二加递归一, 同理又会执行递归一的计算,此时 x 变成了一,满足 if 条件,因此返回一整个函数的递归用法。 所谓地规,就是不断地赋值,计算,再赋值,再计算,直到跳出这个循环。要实现地规,必须满足两个要素,第一,自定义函数中必须要引用自身才能实现循环赋值。 第二,必须给自定义函数装上一个开关,用于停止循环,否则就会陷入无限循环,导致报错。在这个案例中,当 x 等于一成立时,就会跳出循环,因此这里的 if 函数就是整个地规的开关。那么地规到底有什么实际意义呢?

啊,那个函数的调用过程是个什么样的?那么下面我们来对这个过程呢来做一个具体的说明。 那么在函数调用过程中,数的这个传递方式和参数压占的这种具体实践哎,可能会因我们的编程语言,我们的操作系统,还有我们编系的不同啊,有所差异, 那么下面我们来重点来说一下就一般情况下的这个函数的啊这个调用过程。首先函数调用呢,第一步呢是 这个,当一个函数被调用的时候,他会将这个控制权呢,从当前函数转移到这个被调用函数。 那么第二步我们要进行参数的准备,就是在调用函数调用之前,我们需要将时参啊传递给我们的这个被调用函数,那么这个时参呢,可以是我们的常量变量,甚至于表达式, 那么对于参数它的传递方式,它是有直传递,引用传递啊和指向传递, 那么具体采用的是哪种传递方式,取决于你函数定义时的那种声明的方式。那么下一步就是我们的参数的压占, 他是怎么进入我们的啊占空间的,就是在参数的压占过程中呢,他首先会分配一定大小的内存来保存我们这种仓值, 对于较小的那些数据类型啊,他们就可能会直接通过寄存器啊进行参数的进行传递的。那么对于一些较大的数据,如果你采用的是直传递的方式啊,那么他会将 啊我们这个数据呢直接拷贝到啊,我们站空间中。那么对于参数,他进站的顺序是怎么样的,对不对我们的 c 语言的默认规则啊,就是对于多参数的话,那么在压站的时候呢, 他一般啊会将这个参数呢是从右至左的啊,这种顺序进行压占啊,也就意味着什么呢?最后面的参数是最先入站的,最前面的参数呢是放置在站顶位置。 那么对于参数的具体访问,就说我们背调函数呢,是可以通过占指针或者是寄存器来访问我们传递进来的这种参数值,具体的访问方式可以取决于我们的编程语言和我们的底层架构。

为什么 cos 成员和引用必须用初值值列表?委托构造?怎么简化代码 explicit 又为何能禁止影视转换?今天一节讲透构造函数核心。首先咱们要聊个主题,是构造函数的初值值列表。这里面其实有一个很关键的问题,就是 始化和负值到底有什么区别?在对象的生命周期里面,他们两个扮演的是什么角色?始化其实就是在对象刚刚被创建的时候就给他一个始值,这是他生命的起点。对,而负值呢,是这个对象已经存在了,然后你用一个新的值把他原来的值覆盖掉, 这个就相当于一个改朝换代的过程。对,他们的本质区别就是一个是从无到有,一个是更新换代。没错没错,就比如说在构造函数的函数体里面进行的是赋值,他是会先默认初始化这个成员变量,然后再给他重新赋值。但是如果你是用初始化列表的话,他就直接在进入函数体之前就把值设置好了, 一步到位,就省去了一次默认出式化的开销。明白了,那构造函数出式值列表它到底是一个什么东西?它有什么特别的存在意义吗?构造函数出式值列表就是你在写构造函数的时候,在参数列表后面加上一个冒号, 然后你可以直接在那里对类的数据成员进行抽象,它会在你的构造函数体执行之前就完成这些抽象。哦,这是它的一个执行的时机。那这个东西是不是所有的成员变量都一定要用它来抽象呢?还是说有一些特殊的情况必须要通过它来抽象, 像你如果有 const 成员或者是引用成员这种的话,你就必须要通过构造函数的始值列表来进行抽象。对,还有就是如果你的类里面有一个成员,它本身是一个类类型,然后那个类又没有默认构造函数,那你也只能在抽象列表里面把它抽象了。 而且它还有一个优点,就是它会直接促使化你的成员变量,这样就省掉了一次默认构造,然后再赋值的这个过程,它会有一些性能上的提升。原来是这样啊,那还有一个问题,就是,如果我在写构造函数初始值列表的时候, 这个成员始化的顺序是按照我写的顺序来执行吗?其实不是的,成员始化的顺序是完全按照你成员变量在内里面声明的顺序来进行的。 对,跟你在抽象列表里面写的顺序没有关系。这就有点坑了,这很容易写出一些隐藏的 bug 啊。对,是的,比如说你在内里面先声明了一个 int i, 然后又声明了一个 int j, 那 即使你在构造函数的抽象列表里面先写的 j, 后写的 i, 它也是会先抽象 i 再抽象 j 的。 所以有的时候你如果在抽象列表里面让它们两个有一些依赖关系的话,就可能会出现一些未定义的行为哦。比如说你拿 j 来抽象 i, 但此时 j 还没有被抽象, 所以最好的做法就是你的这些成员抽象的时候不要互相依赖,然后都直接用构造函数的参数来进行抽象,这样的话就可以避免对申明顺序的这种隐性的依赖。学到了, 下面咱们谈谈默认构造函数对这个东西到底是什么?然后它是在什么情况下会被编辑器自动生成?默认构造函数就是那种你不需要传任何参数就可以调用的构造函数, 它可以帮你确保每个对象在被创建的时候都能够被正确的出示化。其实在你没有手动定义任何构造函数的时候,编辑器会帮你自动生成一个默认构造函数, 也叫合成的默认构造函数。所以只要我自己写了一个哪怕带参数的构造函数,那编辑器就不会再给我生成这个默认构造函数了吗?对,完全正确。而且这个自动生成的默认构造函数它是有要求的,就是只有当你的类里面没有任何用户自定义的构造函数, 然后你所有的成员变量都可以被默认构造,这两个条件都满足的情况下,变异器才会帮你深沉这个默认构造函数。 嗯,只要有一个成员他不能被默认构造,那你就必须要自己写默认构造函数。好的,说完了默认构造函数,那委托构造函数又是怎么回事呢?委托构造函数就是说我一个构造函数可以把它的一些始化的任务交给另外一个构造函数去做。 哦,就是我把我的职责委托出去。这个听起来好像可以省很多事啊,那他是怎么影响构造函数的执行顺序的呢?其实就是你被委托的那个构造函数,他会先执行他自己的初设块列表和函数体。嗯,然后等他都执行完了之后,控制流才会回到委托者,然后再去执行委托者的函数体。 对,这样的话就可以让你的一些初设化的代码只需要写在一个地方就可以了,重复,而且也会让你的代码更清晰,更好维护 哦。那能不能举一个实际的例子,就是说这个委托构造函数在内里面是怎么用的?当然可以,比如说我们有一个 cell start 类,它的构造函数有好几个重载,嗯,那其中有一个可能是接受 string, unended, double 这三个参数的,然后它会用这三个参数直接来促使化它的成员变量,那其他的构造函数是不是就可以把它们的任务都交给这个构造函数来做错?比如说我有一个无参的构造函数,那它就可以直接委托给刚才那个构造函数,然后传入一些默认值。 嗯,还有比如说我有一个只接受一个 string 的 构造函数,那它也是一样的,把这个 string 和两个默认值一起委托给那个完整的构造函数。 对,包括我如果是从一个 s dream 里面去读入数据来构造的话,那我可以先调用无参的构造函数,然后再在函数题里面去调用 read 的 函数来读入数据。 这样的话所有的出使化逻辑都统一了,代码也会更简洁,感觉方便了很多啊。然后我们要讲的下一个主题是默认构造函数的作用。对,这个默认出使化和值出使化到底是在什么场景下会被触发?默认出使化其实就是你在一个块儿作用域里面定义了一个非静态的变量, 然后你没有给它负初始值,嗯,或者说你定义了一个数值,但是没有给它足够的初始值,那剩下的那些元素就会进行默认初始化。 对,这个时候就会调用默认构造函数。其实初始化是不是也是类似的?它一般是在什么情况下发生呢?只是初始化的话,其实有三种情况会发生,嗯,一个是你在定义数组的时候,你给的初始值的个数比数组的大小要少,那剩下的那些元素就会进行值初始化。 还有一个就是你在函数体里面定义了一个局部静态变量,但是没有给它出使值,那它也会进行值出使化 哦。最后一个就是你用 t 这种语法来显示地请求出使化一个对象,那这个时候也是会进行值出使化的。比如说你有一个 vector, 你 在定义它的时候指定了它的大小,但是没有给它出使值,那它里面的这些元素就会进行值出使化,这个时候也是会调用默认构造函数的。 ok, 那如果我们在一个类里面已经定义了其他的构造函数,这个时候我们为什么还要自己再去定义一个默认构造函数呢?因为只要你写了任何一个自定义的构造函数,那变音器就不会再帮你生成那个隐式的默认构造函数了哦。这个是一个很容易出错的地方,因为很多人都会以为, 即使我自己定义了其他的构造函数,我还是可以像以前一样定义一个对象,但是不传任何参数, 那这个时候就会报错。对,因为编辑器已经不再帮你生成那个无参的构造函数了啊。那这样的话,如果我们想要这个默认的行为,我们就必须要自己手动的加上这个默认构造函数吗? 是的,而且你最好是自己加上。嗯,就是你在内里面写上等于 default。 对, 就是把它显示的写出来,这样的话可以避免很多莫名其妙的变异错误,然后也会让你的类用起来更安全、更完整。没错, 然后我们接下来要聊的是隐式的类类型转换。对,就是说这个构造函数它在什么情况下会触发这种隐式的转换,然后它又有哪些限制?其实当你的构造函数只有一个参数的时候,它就定义了一种从参数类型到你的类类型的一个隐式的转换规则。 or。 比如说我们有一个 sales data 类,它的构造函数是接受一个 string 的, 那我们就可以直接把一个 string 类型的对象传给一个需要 sales 插花线 data 的 地方,这个时候就会发生一次隐式的转换。这种隐式的转换听起来挺方便的,但是会不会也有一些让人意想不到的问题呢?会的, 因为编码器最多只会做一步这种隐式的转换。嗯,比如说你有一个函数,它的参数是 sales data, 然后你直接传一个字串字变量进去,那这个是会报错的,因为它需要先把这个字串字变量转成 string, 然后再把这个 string 转成 sales data。 对, 它是两步转换,所以这个时候你就必须要显示的转一次,可以选择我们这里列出的两次中的任意一次。例如将字变量显示的转换为 string, 或是显示的将 string 转换为 sales data 类型都可以, 或是直接使用 string 类型的变量。好吧,那 explicit 这个关键字在构造函数这里到底是起一个什么作用? explicit 其实就是用来防止你的构造函数被用于这种隐式的类型转换的哦,就是你在声明构造函数的时候加上了 explicit 之后, 那你就只能用它来进行直接抽象,或者是你用它来进行显示的类型转换,这样的话是不是代码的可读性和安全性都会更好一些?对,就可以避免一些因为影视转换而导致的一些很难发现的 bug, 然后也会让你的意图更加的明确。 比如说我们刚才那个 sales data 类,那你就不能直接把一个 string 传给一个需要 sales data 的 函数了,你只能写成显示调用该构造函数的形式,或是通过 statics 强制类型转换的方式。那别人一看就知道这里是做了一个类型转换。我还有一个疑问啊,就是这个聚合类 它到底要满足哪些条件?聚合类其实就是一个数据的集合哦,它要满足所有的非静态数据成员都是 public 的, 然后它不能有任何自定义的构造函数,也不能有类内初始值,然后它也不能有积累,也不能有虚函数。 对,它就是一个非常纯粹的,只有数据的一个结构。那这样的话,我们要怎么去抽象一个聚合类的对象呢?因为聚合类它是没有构造函数的,所以它是通过一个花括号括起来的一个初始值列表来进行抽象的。嗯, 然后它是按照你成员声明的顺序一一对应地去赋值的。比如说我们有一个 struct data, 它里面有一个 int 和一个 string, 那我们就可以写成 data val 一 等于零 anna 这样的形式。但是你要特别注意它的顺序,而且你一旦增减了成员,那你所有的抽象的地方都要跟着改明白了。然后我们要聊的最后一个主题就是字面值长量类。嗯, 那这个东西要满足哪些条件才能被称为字面值长量类呢?字面值长量类,它首先所有的数据成员都必须是字面值类型,然后它至少要有一个 constr 的 构造函数。 对,而且它的所有的类内初使值都必须是常量表达式,并且它的稀构函数必须是默认的, 就是你不能自己去定义稀构函数。那 constance 构造函数它本身在使用的时候有什么特殊的规则或者说限制吗? constance 构造函数,其实它的函数体一般都是空的。嗯,然后它的每一个成员都必须要用常量表达式来促使化。对,这样的话才能够保证你在编一期就可以得到一个完全确定的对象。 我们来看一个 structspec 构造函数的使用示意。首先定义了一个的 bug 类,它包含两个 structspec 构造函数,以及一个同样是 structspec 的 成员函数。 any, 这些 structpec 构造函数的特点是函数体是空的,只能通过抽象列表来抽象成员变量。 这样做的原因是 structpec 函数本身有严格限制,而构造函数又不能有返回语句,所以它的函数体必须是空的。 接下来看它的用法,我们可以用 context pro 来声明 debug 类型的常量对象,比如 i o sub 和 prod。 因为这些对象是编一期常量,所以调用它们的 any 方法,结果也会在编一期就被计算出来。这样一来, f i o sub any 和 f prod any 这两个条件判断 在编辑时就能确定,结果分别等价于 if true 和 if false。 简单来说, context pr 构造函数让我们可以在编辑期创建和使用类对象,从而实现更高效的代码。 好的,今天我们把构造函数相关的一些比较容易混淆的概念都捋了一遍,对,包括抽象和赋值的区别,然后委托构造函数,默认构造函数以及一些跟类型转换相关的东西。然后我们下次再见,拜拜。拜拜。

你敢相信写一次公式可以循环和跨表格使用,而且不用重新写公式?这里是一份每月员工销售明细,我们要按照阶梯式提成点数计算出提成。手动计算,重复写公式,加班到凌晨?不存在的。 随便选一个单元格,输入 linda 函数,我们要给里面的参数自定义名称,这个名称是销售额。接着我们要用这个名称去告诉 excel 计算逻辑,使用 excel 函数,把上面的所有提成的计算公式都写进这个函数里面。 当销售额大于等于五万时,提成等于销售额乘百分之一。当销售额大于等于十万时,提成等于销售额乘百分之二。当销售额大于等于二十万时,提成等于销售额乘百分之三。最后输入 true, 销售额乘百分之零点五, 代表销售额低于五万时,提成点数是百分之零点五。接下来才是重头戏,这时候别按回车,我们全选复制整个公式。 ctrl 加 f 三,调出名称管理器, 点击新建,把复制的公式粘贴到引用位置。自定义名称,输入计算提成。点击确定,关闭名称管理器界面。这时候在 f 二单元格输入等于计算提成, 选择销售额,便会按照原来的公式自动计算出提成了。这时候会有人说,博主,博主,你这样不还是要写公式吗?可是我只要写一次公式,在其他表格输入计算提成,直接自动计算,这就是 linda 函数的魅力,你把逻辑告诉他,他就能不断地为你效劳。关注我,每天学习 excel 技巧!


我们来学习一下如何做一个这样的达成率展示图,如果他达成了就是一个绿色的标签,未达成就是一个红色的标签,并且呢会在这里显示小三角来做指向。在当前的图标中,蓝色的柱子表示销量,橙色的柱子表示目标,我们来看一下他怎么做。 首先第一步需要先创建两个辅助列,一个是达成,一个是未达成,在这写等于号,然后呢,写 excel 来判断一下这个达成率是不是大于等于一。如果条件成立就是达成了,我们就需要通过 max 函数来做一个辅助列, 选 max 函数。然后呢,选这两个单元格,提取一下最大值,可以考虑来扩大一个倍数,让他们有一个余量,更加的美观一点。 如果条件不成立呢,我们就直接返回 n a 的 占位符就行了,把括号补齐点回车向下做填充,就可以得到达成的辅助列了。 未达成也是一样的,可以考虑把这公式做一下复制,大于一改成小于一就可以得到未达成了。随后呢,就可以根据当前的数据作图了。 第一步我们可以考虑先选中前面这两列数据吧,按住 ctrl 键,再选择后两列,点击插入来创建柱形图,会变为这样的方式。 随后呢,选中图标,点击鼠标右键更改系列图标类型。我们需要找到销量目标,都放在次坐标轴中,点一下确定会变为这样的方式。紧接着就需要来统一坐标轴大小了,用鼠标先双击一下左侧 y 轴, 把最小值设置为零,最大值改为两百一吧,稍微做一下增大,右侧 y 轴也是一样的,用鼠标来点右侧 y 轴都改为一样数字,零两百一,就会变为这样的方式了。 之后呢,我们需要把这个达成的柱子做一下重合,用鼠标来选这个橙色柱子,表示达成的。 ctrl 加一调窗口, 在当前的窗口中找到重叠写百分之百,就可以把达成跟未达成做重合了,一百点一下确定就会在中间来显示了,这个就是我们需要的显示方式了。然后呢,我们就需要对它来做一些修改了。第一步,用鼠标先选择橙色柱子,就表示达成的, 我们需要在上方点一下格式,找到背景色,把背景色改成无。然后呢,找到边框颜色,把边框颜色改为绿色,之后继续点击边框,找到粗细来做一下加粗版,改为一半, 再次点击边框,找到线型,给一个虚线,就变为这样的虚线,显示了更加的美观一点。 随后呢我们就选中它,点击加号,为它创建一下数据标签,用鼠标在双击标签,找到单元格中的值,勾选一下, 选中这一列达成率点回车,确定不要勾选值,就可以得到达成的数据了。然后呢,我们再选中这个标签,点击开始把颜色改为一个绿色,做一下加粗,到此为止,达成的就构建完毕了。未达成也是一样的,点击这个柱子, 先改一下颜色,背景色不需要边框颜色,给一个红色。然后呢再做一下加粗,我们再改为虚线就行了。随后呢为他创建一下数据标签,点加号,创建标签做替换都是一样的,我们就快速的整一下吧,就不再一个一个的展示了, 这个就是我们需要的标签的样子了,然后呢还需要在这里显示一下箭头有一个指向,让数据展示更加的美观一点。我们可以考虑先选中这个销量的柱子, 按下快捷键, ctrl 加一调窗口,找到系列重叠,把它设置为零,让两个柱子紧挨着。然后呢在下方找到间隙宽度吧,稍微做一下减小,加宽一下。 随后呢就需要来选这个红色的柱子了,红色柱子就表示目标的,选中它 点加号,为它创建一下误差线,就可以在这里得到误差线了,是一个上下的工字形的小线段, 用鼠标来选中它,按下快捷键, ctrl 加一调窗口,先找到方向,我们需要把方向改为负的,然后呢找到末端样式,把末端样式改成无限端,需要在下方找到误差量固定值,我们可以考虑先改成零点五, 它就会变为一个点的样子。然后呢我们需要点这个油漆桶,在下方找到结尾箭头类型,给一个箭头的样子,紧接着再找到粗细来,稍微做一下减小, 可以考虑变为这样的实心的样子吧,这样的样子更加美观一点点,再稍微做一下增大吧,把它的颜色改为一个黑色,更加的直观一点。 现在呢会发现他们两个是没有对齐的,这个箭头跟线段没有对齐,我们就需要减小一下柱子宽度了,用鼠标来选这个 虚线的柱子, ctrl 加数字 e 调窗口,我们需要在当前的窗口中找到间隙宽度,增大一下百分比就可以减小宽度了,做一下增大, 还需要再次增大,我们就手动调整一下吧,放在一个合适的位置就行了,到此为止呢,就基本上差不多了,可以说是来看一下, 还行,之后呢,再选择红色的,都是一样的,来做一下增大。最后呢,还需要把一些图例跟坐标轴隐藏一下,用鼠标先双击一下 左侧 y 轴,在当前的窗口中找到标签,标签的位置改成无。随后呢,再选择右侧 y 轴,也是把标签的位置改成无就行了。紧接着来选这个图标,点加号为他创建一下标签都先创建一下标签,把这个标签呢来放在内侧, 放在里面更加的简洁直观一点。 之后呢,还可以考虑选这个红色的柱子,将它的颜色改为橙色,颜色尽量不要一样,更加的美观一点。 然后呢,还可以把这个图例删掉,只保留销量就行了。把鼠标放在达成这里,双击鼠标,单独选中它,点右键删一下,只需要这两个标签就行了。到此为止呢,这个图标就基本上创建完毕了,现在呢,我们刷新数据是可以实现动态变色的。 以上呢,就是今天分享的全部内容,如果你想跟我学 excel 二,可以在下方了解一下我的课程,函数透视表、图表看板、 ai 都是有的,带你从零开始,快速成为 excel 高手,提高工作效率。

财务会计出纳一定需要会的一个技巧,在这里呢,当我们的这个科目代码发生变化的时候,我们下方的一级科目,二级科目借方贷方的金额他是可以自动更新的, 像这种能够自动更新的效果是怎么去实现的呢?好,那这里我们只需要借助于一个函数就可以搞定了。好,那这里第一步我们先去创建这个数据的下拉列表,这里我们点击数据, 点击有效期,把允许下方的任何值改为序列在来源这里呢,我们就选择这个科目代码所在的这个区域。好,点击确定。好,这个时候我们的下拉列表框就给它创建好了, 创建好了之后,我们在序号这里给它去输入一个等号,输入 f i l field 函数呢,是万能的筛选函数。好,我们就双击它第一个参数,我们需要在哪里去做查找, 那这里我们就选择 a 二到 g 十四,把这个行号呢给他去改成一千,这个呢我们的查找区域逗号,我们的条件是什么呢?那这里我们就选择科目代码所在的待命格区域, 这里注意,我们同样需要把这个行号呢给他改成到一千行,这个条件区和我们的数据区他必须要保持一致。好,这里需要让他去做一个判断, 是不是等于我们查询表里面的这个科目代码。好,这个时候敲回车。好,我们来看一下这里,当我再去点击下方的科目代码的时候,下方的数据它就可以自动更新了。学会了吗?关注我,学习更多办公小技巧。

财务会计出纳一定会需要用到的一个技巧,在这里呢当我们的这个科目代码发生变化的时候,我们下方的数据它是可以自动更新的, 这里的一级科目,二级科目借方、贷方金额他都是能够自动去给他去发生变化的,数据是能够自动更新的,想这种效果是如何去制作的呢?好,那这里首先第一步我们先去创建科目代码的下拉列表框,这里我们点击数据菜单栏, 点击有效期,把允许下方的任何值改为序号在来源,这里我们就选择科目代码所在的单元格区域, 然后点击确定,那这样我们这个下拉列表框就给它就创建好了。第二步我们需要实现数据的自动更新,这里我们需要用到括号输入一个等号输入 f i l 双击这个函数。第一个参数我们需要在每个区当中去做筛选, 在这里我们就在凭证明细表当中从 a 二单元格开始去选择好这个行数,需要选到哪里呢?这里我们可以把它改成,比如一千行,我们这里这个行呢必须要包含我们这个表格里面所有的内容。 好,这是我们的条件的筛选区域逗号,我们的条件是什么呢?这里我们就需要让他做一个判断, 选择我们这里的科目代码。好,同样函数呢给他改成一千,这里条件所在的区域和我们筛选的区域他必须要保持一致。 好,这里让他来做一个判断,是不是等于我们查询表当中这个下来列表框所在的单元格,好,这个时候给他去敲回车,那这样的话我们就搞定了, 当我们的科目代码发生变化的时候,下方的数据他就可以自动去更新了。学会了吗?关注我,学习更多办公小技巧!

大家好,这是马哥聊录制 g i was screep 的第二十七个视频。 这个视频主要讲解的是函数的三种分类方式。在讲解这个视频之前,我们已经学过了, 函数的创建也有三种方式。其实函数的创建呢,有六种,甚至是更多种方式, 但是我们都是选择最为常见的方式。那么这一讲的目的呢?就是要了解函数的不同分类方式,便于我们对函数进行一个全局的掌控。那首先我们看一看我们在调用一个函数之前,首先要考虑的一个问题是什么? 有无参数?各位同学啊,叫有无参数,如果有参数的,那么参数的顺序是什么? 参数的值的类型应该是什么?那么也就是说如果有参数,要考虑有几个参数, 如果无参数的,那就简单,那直接函数名加括号就可以了。另外我们还要知道,函数有的调用是有返回值的,有的是没有返回值的。 有返回值的函数啊。我们在创建的时候后,接下来的视频会讲解,也就是函数中有个语句叫做瑞特 return 呢,就会把这个执行这句话,会把这个函数的值返回给这个函数的名,函数的名可以传递到另一个另一个变量, 也就是说有反馈值和无反馈值函数。同时我们也知道,有些函数是系统自带的,有些函数呢,是我们创建的,还有些函数是第三方,也就别人写好的函数, 我们拿过来使用的,要把它引入到这里边。那么这种函数呢?就是说如果是系统自带的函数,我们称之为系统函数。其实 javascribe 的函数, 然后他只是实现了基本的功能运行系统。但是我们在 gios 在浏览器中使用的话,他会增加了一些浏览器操作的一些函数。如果我们作为后台开花,后端开花, gioscriber 也 作为后端开发,如果作为后端开发的话,后端里边也会在运行环境中插入一些,就是植入一些函数。那么我们一定要分清楚这个函数是系统自带的,还是自己引入别人的函数,还是自己创建的。 那么这一讲啊,我们就讲到这里,各位呢,可以展开搜索,查看更多的函数分类的细节内容。 感谢大家的关注、支持和点赞。下一讲我们就开始从这个视频有参的,无参的,有返回值的,无返回值的。 是不是系统自带的角度去学习我们 g i was the rap 的好。感谢大家的关注、支持和点赞。