JavaScript-函数
函数
函数的概念
为什么需要用到函数?
方案一:
这种解决方案比较麻烦,阅读起来有些困难,你从上往下看完之后,不能立马的指定这段程序是干嘛的
方案二:
这种方案,将一个比较复杂的问题分解成立两个比较简单的问题,以“量”去克服“难”和“大”的问题。
iSSXH():他是一个很厉害的东西,你给他一个数字它可以立马告诉你是否为水仙花数,他怎么判断的可以不用管。
主程序,只需要不断的去调用iSSXH()即可。
函数给我们的思想:对于一个规模大,难度高的问题提供一个解决问题的思路:将问题进行拆分,分解成多个规模小,难度低的问题;如果分解之后的问题依然规模大,难度高可用按照这个思路继续分解,直到分解后的问题足够小,简单;归纳起来:“大事化小”。
(1) 找出1-100的所有素数,假设有那么个人(函数)他可以帮你判断这个数是不是素数
(2) 假设我今天中午想吃小龙虾:假设有那么个人(函数)可以帮您去市场买虾;假设有人(函数)它可以帮你把虾处理干净;假设有人(函数)可以帮你爆炒小龙虾;对于你来说,你是不是非常轻松,只需要负责调度安排即可
函数的本质:假设一个功能假设多条代码放一块。
数学中函数
数学中定义:y=f(x)=x2+2x+3
Y=f(3)=32+2*3+3
f(3)=将3带入函数f中
X:自变量
Y:因变量
定义和调用
定义
function函数名(参数1,参数2){
函数体
}
(1) function定义函数的关键字,必须写
(2) 函数名,给函数取一个名字,和变量的命名规则一样的。
见名思意 小驼峰isSXH()
(3) 参数1,参数2:形参,是否需要参数根据需求来定
调用
通过函数名进行调用,就是数字中代入
调用函数传递的参数:实参
函数名(1,2)
IsSXH(10)
函数的组成
(1) 函数名
(2) 参数
(3) 函数体:函数功能,一般要有返回值,返回值就是结果
案例:判断一个数是否为素数
(1) 函数名:isPrime
(2) 参数:待判定的数字 n
(3) 函数体:对数字进行判断,返回值是一个布尔函数:true/false
案例:找出100以内的素数
案例:验证哥德巴赫猜想
任意一个偶数都可以拆分成两个素数,去检验10000以内的偶数10000以内偶数都可以拆,我们认为他的猜想成立
如果我在10000以内找到了一个偶数不能拆分,他的猜想不成立
变量的作用域
作用域:定义的变量在哪里有效
局部变量
就是在函数内部定义的变量,这个变量仅仅在函数内部使用,出了这个函数该变量无效
比如:三国袁术称帝,只有他这个阵营才认为他是皇帝,他发布的命令只有自己阵营的人才听,其他的人根本不认他是皇帝,他发布的命令也不听
全局变量
在函数外部使用定义的变量,这个变量在任何地方都可以使用
比如;汉朝的皇帝发布的命令,不管是曹操还是袁绍都得听
作用域冲突
定义一个全局变量a,同时函数内部也有一个变量a,我在使用的过程中到底使用哪个??
总行的李行长来杭州分行开会,杭州分行的行长也姓李,这时小王进来汇报说:“李行长,这是工作汇报”这个李行长是谁??分行
冲突处理:就近原则
局部变量想让外部访问怎么办??
总结:变量的作用域只需要了解,知道怎么用,在企业开发中,可以使用不同的变量名称去规避这个问题,避免使用相同的名字
一些考试,面试。面试官很喜欢考这种类型的问题
参数的传递
所谓的参数的传递,就是将实参传递给形参,传递的方式有两种
值传递
a=818是实参,x是形参,x变化了,原有a的值没有任何变量,这种方式:值传递x和a没有任何关系
你给你对象100块钱,她花了就花了,跟你没什么关系
引用传递
x.age的值改变了,obj.age的值也跟着变化了,传递的值是一个对象的时候,本质传递的引用,x是obj的别名,本质是同一个东西
你给你对象100块钱,给的是银行卡,你对象花钱了,反馈在你的卡上
总结:
常规类型传递参数是传值的方式:number string Boolean
对象类型传递参数是引用的方式:object
如果一个函数想返回多个数据的时候,可以使用引用的方式来完成。
原文:https://www.cnblogs.com/pvqc/p/14682273.html