Javascript关于函数的那些事
程序员文章站
2024-01-29 19:37:22
...
大家好,我还是那个前端小白,有段时间没有写博客了,因为有些事耽搁了,今天突然想起来,于是整理了短时间的知识,写成博客,闲话少叙。。。
函数的概念
在计算机语言里面, 帮我们做事情的东西, 我们叫做函数
把一段代码放在一个盒子里面
每次使用这个盒子的时候, 就是在使用这个盒子里面的代码
函数和变量:变量储存一个值,而函数则储存一段JS代码
函数的特点
1. 使代码更加简洁
2. 能重复使用
3. 能控制调用时机
函数的创建
两种方式:
1. 声明式函数
声名式函数:
语法: function 函数名(){执行的代码}
function:声明函数的关键字
空格:分隔关键字和函数名使用的
函数名:自己定义的名称,遵循变量命名规则和规范
():形参
{}:大括号里面执行函数保存的一段JS代码
2. 赋值式函数
语法: var 变量名=function(){}
前面需要一个var
把函数名提到的前面来了
函数的执行
一个函数创建出来以后, 是不会自动执行的需要我们来 启动(调用) 这个函数, 那么函数里面的代码才会执行
启动方式
1. 直接执行
语法: 函数名()
函数名: 表示你需要让哪一个函数执行
(): 就是让你确定的这个函数执行以下
也就是把你定义的时候存放在里面的代码执行
2. 依赖行为执行
我们把这个函数依托在页面中某一个元素的事件上
当这个元素触发这个事件的时候, 就会执行对应的函数。
语法:
指定页面元素.onclick = 函数名
怎么找到指定元素, 页面中元素身上的 id 属性, 就可以在 JS 里面直接表示这个元素
找到页面元素, 只能使用元素的 id 来直接使用
className 标签名 不能直接使用
例如:当把一个函数依托在页面的一个 div 元素的 点击行为上
当你点击页面中的这个 div 的时候, 就会执行 这个函数
两者再函数调用上的区别:
声明式函数可以在声明之前调用, 也可以在声明之后调用
赋值式函数只能在声明之后调用, 声明之前调用会报错
形参和实参
参数分成两种:
形参: 函数 定义 的时候写在小括号里面的内容
就是一个在函数里面使用的变量
只不过这个变量的值由调用函数的时候的实参决定
实参: 函数 调用 的时候写在小括号里面的内容
就是在调用函数的时候给形参进行赋值的
如果有多个参数,它们之间用逗号隔开,一般不建议写太多
arguments
每一个函数里面天生自带一个变量, 叫做 arguments
当你在函数里面的时候, 不需要任何定义
直接就可以使用这个变量
一个数据的集合, 保存了所有的实参
你传递一个实参, 这里面就有一个数据
你传递十个实参, 这里面就有十个数据
arguments 的使用
我们管 arguments 叫做 伪数组 或者 类数组
有一个 length 属性, 值是这个 arguments 的长度
这个 arguments 里面由多少个数据
这个 arguments 的 length 就是几
在 JS 语法里面, 除了数字中, 点 统一翻译成 的
arguments 里面是按照顺序把所有的实参排列好
我们管这个顺序叫做 索引 或者 下标
索引和下标是一个官方的名字, 其实就是数据的序号
**索引 或者 下标 是 从 0 开始的**
按照 +1 的顺序递增
如果想从 arguments 里面获取某一个数据
通过索引(下标/序号) 来获取数据
当我获取 arguments 里面的 第 0 个的时候, 就是拿到 10
使用索引
arguments[索引], 表示你要获取 arguments 里面该索引的数据
索引位置, 你写数字几, 就表示你要拿到第几个实参
注意: **从 0 开始数数**
函数的返回值(return)
一个函数的结果,称为函数返回值
函数内部的返回值用return来表示
调用函数:当调用一个函数的时候,函数里面的代码会从上往下的执行一遍
函数的返回值,直接再函数前面定义变量接受
如果一个函数内部没有 return, 那么这个函数就是没有返回值
也就是说接收返回值, 就是 undefined
如果一个函数内部写了返回值, 没有写内容, 那么也是没有返回值
同样道理接收的返回值, 就是 undefined
如果一个函数内部写了返回值, 后面也写了内容
写的内容就是函数的返回值
在外部接收到的就是这个东西
return的第二个功能(打断函数的继续执行)
当函数内部的代码执行到 return 之后
return 后面的所有代码都不在执行了
直接结束函数
注意:
函数内部的打断不是 break, 是 return
当代码遇到这个 return 的时候, 直接结束函数
连带打断函数, 并给出一个返回值
下面关于函数的几个例子
1. 功能:定义一个函数,求阶乘
参数:一个大于等于0 的数 n;
返回值:n的阶乘
//求5的阶乘(5*4*3*2*1)
function fn(n){
var num = 1;
for(var i=1;i<=n;i++){
num = num*i;
}
return num;
}
var num = fn(5);
console.log(num);
2. 功能:求两个数之间的 质数
参数:两个数
返回值:无
//控制台打印出两个数之间的质数
function fn(a,b){
// 保证a是小于等于b
if(a>b){
m = a;
a = b;
b = mi;
}
for(var n=a;n<b;n++){
var flag=true
for(var i=2;i<n-1;i++){
if(n%i===0){
flag=false
break
}
}
if(flag){
console.log(n+'是质数')
}
}
}
fn(10,20)