函数

函数

概述:

函数是对一段代码的封装,实现某个特定的功能。

优点:减少冗余代码,提高可维护性及可阅读性。

分类:

系统函数:所有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">

<script>

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深度优先搜索(递归思想)



posted @   岁新  阅读(165)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示