一、函数的简介
函数(方法)
语法:
function 函数名(){
代码块;
return;
}
function 关键字 定义函数 类似于 var 定义变量一样
函数名 作用类似于 变量名 命名规范 跟变量名一样
() 函数的参数配置列表,如果有多个参数 以 , 隔开
{} 函数的代码块
return 定义返回值 或者 结束函数 只在函数中有效;
1.命名函数,
定义完毕后,不会直接执行(常用推荐)
必须得依靠,函数的调用,来执行
函数的调用,必须带括号!
例如:
function fn1(){
console.log("这是一个函数");
}
fn1();
- 匿名函数,两种写法
由事件来触发函数 绑定点击事件
在函数被事件绑定的时候,可以不写名字,第一种写法
box.onclick = function () {
}
事件触发函数 第二种方法
行间属性触发,这种写法 可以触发 命名函数
在行间属性触发时 函数没有括号
<div id="id" onclick="fn1"></div>
二、函数的参数
<script>
函数在定义的时候 括号里写的参数 叫形参
function fn1(a){
console.log("参数" + a);
}
函数在调用的是 括号里面写的参数 叫实参
fn1(2)
函数的参数,可以有多个,多个参数以,隔开
多个参数时,形参 和 实参的位置顺序 必须保持一致
function fn2(a,b){
console.log(a+b);
}
fn2(1,2);
形参默认值
function fn3(a = 0){
console.log(a);
}
fn3();调用函数 输出默认值
fn3(9);
多个参数时 必须将有默认值的参数写在最后面
function fn4(b,c,a = 1){
console.log(a,b,c);
}
fn4("b","c");//此时的a参数带有默认值
</script>
三、return 只在函数中生效
功能:
1.返回值
2.结束一个函数
<script>
function fn1(a,b){
var sum = a+b;
console.log(111111);
返回值
return sum;
return 下面的代码 都不会继续执行
函数的运行 以return 为结束
console.log(2222222);//则该输出不执行哦
}
var sum =fn1(2,3)
console.log(fn1(2,3));
console.log(sum);
</script>
四、作用域
作用域:变量起作用的区域
1.全局作用域
函数外边的区域,就是全局作用域
在全局作用中声明的变量 叫做全局变量
全局变量 可以在程序的任何一个位置被访问
2.局部作用域
函数的内部的区域,就是局部作用域
在局部作用域中声明的变量 叫局部变量
局部变量,只能在当前作用域下,被访问
无法被上层作用域访问
var 声明变量的特点
1.变量可以重复声明;(尽量不要重复)
2.允许 先访问后声明
变量的提升:浏览器在编译的时候,会先访问一遍所有使用 var 和 function 声明 的变量或者方法;
但是 只访问,不会进行任何的赋值操作;
相当于 提前开辟一个储存空间,但是这个储存空间暂时没有存放任何东西
直到下面使用时(赋值)才会往里面放入东西
3.当 全局变量 和 局部变量 命名重复时,遵循就近原则
五、递归
在函数内部,返回函数自身的调用,这种操作叫做递归
<script>
练习:
封装一个,生成随机数数组的,函数
每次调用时 这个函数 都会返回一个 随机数的数组
封装随机数
function rand(min,max) {
return Math.round(Math.random()*(max-min)+min);
}
// 该封装随机数数组 会产生重复的元素数字
该方法未调用递归
// function r_arr(min,max,many) {
// var arr =[];
// for(var i=0;i<many;i++){
// arr[i]=rand(min,max)
// }
// return arr;
// }
// var arr=r_arr(1,5,5);
// console.log(arr);
封装一个 数组去重的方法,该封装会去掉重复数字
var arr = [];
function r_arr(min,max,many) {
1.先随机一个 随机数
var num = rand(min,max);
判断数组中有没有这个元素
没有这个元素
if (arr.indexOf(num)==-1){
arr.push(num);
if (arr.length == many) {
return;
} else {
如果没有达到数量
return r_arr(min,max,many);;
}
} else{
有这个元素
重新随机
return r_arr(min,max,many);
}
}
r_arr(1,5,5);
console.log(arr);
</script>