JavaScript-7.0-函数
函数
函数是封装了一段可以被重复调用执行的js代码块。
函数使用
- 声明函数
- 调用函数
- 声明变量
- function 函数名(参数)
function print(){
console.log("hi");
}
函数不调用是不执行的。
函数调用
//调用上面定义的函数
print();
封装函数
函数的封装是把一个或多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口使用。
函数的参数
参数分为形参和实参,形参。
在声明函数的小括号里是形参,在函数调用的小括号里是实参。
实际上,形参实际上是接收实参的,方法结束后,形参会被销毁。多个形参之间要用逗号隔开
//定义函数
function print(形参1,形参2){
}
//调用函数
print(实参1,实参2)
//
当调用函数时,会将实参的值传递给形参,然后形参的值就会与实参相同,实际上,形参就是定义了一个值临时存储的地方,而实参是长期存储的地方.
- 如果实参的个数多于形参的个数,则多余的实参不参与函数的运行。
- 如果实参的个数小于实参的个数,则多余的形参会被默认定义为undefined。
函数返回值
return语句实现返回值。
function 函数名(){
//函数体
return 返回结果
}
只要函数运行的过程中遇到return,就会返回结果。
return也叫终止函数,代码运行到此处是会终止运行并且返回值。
return一次只能返回一个值,若没有return,则返回undefined。
当返回多个值时,可以返回一个数组
reutrn [1,2,3,4,5,6];
arguments获取函数参数
当我们不清楚有多少个参数要传递时,我们可以用arguments来获取,arguments实际上是一个内置对象。里面存储了所有传递的实参,以一种伪数组的形式存储。
function fun(){
console.log(arguments);
console.log(arguments.length);
console.log(arguments[2]);
//可以按照数组的遍历方式将arguments中的元素遍历出来
}
函数相互调用
函数可以调用另一个函数,每个函数都是一个独立的代码块,因此可以相互调用。
函数的两种声明方式
- 利用function定义
- 函数表达式声明函数
var 变量名 = function(){}
这个函数没有名字,因此也叫匿名函数,该函数存储在变量中,调用时,调用变量名。
作用域
限定代码名字在指定范围内生效。生效的范围称为作用域。
作用域的目的是为了提高程序的可靠性,减少命名冲突。
js的作用域分为全局作用域和局部作用域。
- 全局作用域是整个script标签或者一个单独的js标签
- 局部作用域是在函数内部就是局部作用域,只在函数内部起作用。
变量作用域
根据作用域的不同,分为全局变量和局部变量。
在全局作用域下的变量就是全局变量,在全局下都可以使用。
在函数内部没有声明,直接赋值的变量也是全局变量
在局部作用域下的变量叫做局部变量,仅在函数内部使用。函数的形参也可以看作局部变量。
从执行效率来看,全局变量只有在浏览器关闭后才销毁,占内存。而局部变量在代码块结束后就会销毁,局部变量更加节省资源。
作用域链
内部函数访问外部函数的变量,采取链式查找的方式来决定取值,简单来说就是取值就近原则。
var num=1;
function fu(){
var num=2;
function fan(){
console.log(num);
//num取值采取就近原则,叫做链式查找。该num形成的作用域叫做作用域链。
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器