一、函数介绍
函数是 JS 中的一个数据类型,其就类似一个盒子,其中可以承载一段代码,通过函数名来区分不同的函数。
函数分为两个阶段,函数定义阶段和函数调用阶段,函数在定义后不会立即执行其中的代码,只在函数调用后才执行相应代码。
- 函数定义阶段
函数定义是指把代码装在函数中,并通过给函数命名,来确定一个函数。当函数想要返回一个值时,可以设置 return 语句放置返回的结果。
语法:
function 函数名(参数1,参数2,参数n){
任意代码
return 结果
}
注意 return 语句可有可无 - 函数调用阶段
函数调用指的是执行函数中的代码,需要函数定义后进行,且可多次调用同一函数。当所调用的函数有返回值时,可以设置一个变量接收函数返回值。
语法:
函数名(参数1,参数2,参数n)
注意:
1、函数定义和函数调用中,()里的参数可写可不写,且定义阶段的参数为形参,而调用阶段的参数为实参。
2、形参相当于定义了变量,其值由实参决定,且该变量只可在函数内部使用。而实参是在函数调用时给形参进行赋值,从左到右依次赋值。
3、可以通过设置事件来调用函数,当事件触发时,函数会随之执行,如:id 名.onclick = function(){ } 表示当对应 id 的元素被点击时触发事件,且执行函数。
二、递归函数
递归是指通过逐层向下询问问题(递),直到最下方给出回答后,在将下方答案结合自身作为新答案,逐层向上传递答案(归),从而解决最上方问题的思路,即将问题简单化,只需了解前一步,通过向前传递,得到最易化的结果后,再传递回来,得到最终结果。
递归函数通过调用自身,将问题简单化,因此该函数需要设置折返点,即最易化后的结果,作为结束条件。
代码如下:
function fn(n) {
if (n === 1||n === 2) return 1;
return fn(n - 1) + fn(n - 2);
}
三、作用域
作用域指的是一个变量可以在什么范围内使用。
- 作用域范围
作用域范围分为全局作用域和私有作用域,当一个页面打开便是全局作用域,只有函数会生成私有作用域,每个函数都会有自己的私有作用域,且不同函数的作用域存在层级关系 - 作用域使用
又分为定义、访问和赋值。
(1)定义指的是变量的定义,声明在哪一个位置的变量就是哪一个作用域的变量。
(2)访问指的是使用变量时需要获取变量存储的值,原则是自己作用域内有该变量则直接用,没有该变量则找父级作用域的同名变量,以此类推,到全局作用域都没找到同名变量则报错。
(3)赋值指的是直接给变量设置一个新的值,原则与访问类似,自己作用域内有该变量则直给自己的赋新值,没有则给父级的赋值,以此类推,到全局作用域都没有则直接定义一个全局变量再赋值
四、结语
本学习笔记主要用于记录博主个人的前端学习过程,目前学习资源来自b站千锋的前端1000集教学,如笔记内容有写错的地方,希望大家能够指出。同时,欢迎看到博文的小伙伴们与我一同学习!