函数
函数
概述:
函数是对一段代码的封装,实现某个特定的功能。
优点:减少冗余代码,提高可维护性及可阅读性。
分类:
系统函数:所有window里的函数。(console.log() alert() prompt())
内置函数:所有内置对象里的函数。(Math.pow())
自定义函数:自己定义的函数。
自定义函数的定义与调用:
1使用function关键词定义,定义匿名函数(没有名字的函数)
function(形参,可省略){
函数体(代码
}
//直接调用 自执行的匿名函数(自动调用)
匿名自执行函数不能传参
(function(){
cosole.log('匿名函数')
})()
匿名函数(声明较少,没有复用性)
匿名函数的形参传递:
匿名函数一般不传参,只调用一次,传参没有意义。
2使用function关键词定义具名函数(有名字的函数)
function 函数名(形参,形参...){
函数体(代码)}
//声明function sayHello(){
console.log(hello!)}
sayHello();
具名函数的变种声明:
var sayHi=function(){
console.log("hi")}
sayHi();
此为具名函数的两种声明,从调用速度来说,前者更快。
function和var在预编译阶段就会声明。
var关键字修饰的变量在预编译阶段不会赋值。
形参与实参
形参是形容的参数,是声明是用来接纳实参的量。
调用时的参数是实参。
3使用new Function方式
var 函数名 =new Function('形参','形参1' '函数体')
var sayBye =new Function('console.log("bye bye!")')
sayBye()
预编译:
1声明对应的function和var关键词修饰的变量(开辟内存)
2对应的function的内存空间会在开辟以后,将相应的代码块放到其中,等待调用。
3var修饰的关键词只会开辟一个空间,不会进行赋值(默认为undefined)
return关键词:
return:在函数中返回对应的数据(当你调用了return后,后面的内容将不再执行。)
没有return关键词,返回undefined。
函数执行过程:
1.把对应的开辟的function内存里面的代码块丢给方法栈(执行栈)去执行。
2.执行栈就会自动执行相应的方法 执行完返回对应的结果
3.当前结果返回完毕以后,对应的执行栈里面的内存空间要进行回收(GC)将这个内存空间销毁
函数作用域:
var number = 2;//全局作用域 ,var关键词声明的是伪全局作用
function factorial(n){
console.log(number)//undefined
number=1//局部变量,位于某一个代码的里面,称为局部变量,局部变量不能被全局访问
return number}
var number = 2;//全局作用域 ,
function factorial(n){
console.log(number)//2 作用域链,向上找
var number=1
作用域:
当前变量的作用范围。
局部作用域:在一个函数内生命的。或者在一段代码块内声明的。
全局作用域:在全局声明,作用范围为全局。
作用域链:
当前的作用域内没有找到对应的变量就会向上去寻找,这个过程构成的链式结构称为作用域链
函数的arguments(参数数组,参数的集合)
arguments是一个伪数组(有部分数组特性),可以通过length对应长度[]下标来访问里面的元素。
函数的嵌套:
函数内部可以再包含其他函数;
函数可以相互调用,也可以向外调用,但不能调用同级函数的嵌套函数。
注:函数抽取冗余代码,参数为(可变的内容),返回值为想从此函数中得到什么。
DOM的简单操作
1.通过id获取对应的标签
document.getElementById("id")
2.input框的值获取value属性
document.getElementById(input框的id).value
3.点击事件onclick
element.onclick = function(){
}
以事件驱动。
//通过输入框输入数值判断对应的奇偶并打印
<input id="number" type="text">
function handlerClick(){
//拿到input框里面的内容 获取到input框
var inputValue = document.getElementById('number').value //string类型
// console.log(typeof inputValue); 如果是+法操作必须要先转类型
//判断奇偶的操作
if(inputValue%2==0){
console.log('当前为偶数');
}else{
console.log('当前为奇数');
}
}
//首先需要点击按钮 获取按键 加点击事件
//事件触发自动调用对应的函数 (事件驱动)
document.getElementById('btn').onclick = handlerClick
</script>
递归算法:
三要素:找规律,找临界值(没有规律的值),自己调自己(在函数内部调用自己的函数)
// 2 4 6 8 10 第100的值是?
function fn(n){
if(){
}else{
}
}
递归效率极低,一般不推荐使用递归除了文件遍历,菜单遍历,
bfs广度优先搜索,dfs深度优先搜索(递归思想)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律