作用:【封装】功能模块代码(常用的功能性代码放置在function中,代码进行复用)【一次封装,多次调用】
1、将经常使用代码段封装成函数,提升代码的复用率。
2、事件的方法体(用于绑定js事件)
3、作为参数(回调函数)来使用
4、闭包
5、构造函数(产生“类”)
定义自定义函数
//定义自定义函数、构造函数(函数名不可重复)
//声明自定义函数:一次封装,多次调用
//1、函数声明
function hello(){
//函数体、方法体
//函数体内作用域独立
}
//function(){}匿名函数,不可单独使用
//2、对象字面量方式
var fn = function(){}(匿名函数)
//3、es6
var fn = ()=>{}(箭头函数)
-------------------------------------------
函数一经封装需要调用才能启动
//调用函数
函数名();
hello();
fn();
//作用域
var a = "sss";//全局变量
function hello(){
//作用域独立
var b = 123;//局部变量
}
函数的参数
【函数定义过程中需要外部传递的变量】
形参: 定义函数过程中设置的变量 形参的两种类型: 必选参数:调用过程中必须传递的参数 可选参数:调用过程中不一定传递的参数 实参: 调用函数过程中产生的值【调用函数传递的参数】
局部变量:function内部定义的变量
全局变量:<script></script>内部定义的变量
//函数的参数
//形参:定义函数过程中设置的变量
形参的两种模式:
必选参数:调用过程中必须传递的参数
可选参数:调用过程中不一定传递的参数
//实参:调用函数过程中产生的值
function sum(num1,num2,exp="+"){
//求和
}
//验证码
function verify(){
//6位数的验证码颜色随机
var str = "0123456789";
var code = "";
for(var i=0;i<6;i++){
}
}
递归:函数自身调用自身
【本质为死循环】
function hello(){
//死循环
hello();//递归调用(将整个函数体的代码进行一次执行)
}
定时器
window.setInterval(function( ){ }|fn|"fn( )",3000) 周期性定时器 //每间隔3秒执行一次方法体
//周期性定时器每间隔3秒执行方法体
window.setInterval( function( ){
document.write ("memeda-")
}, 3000)
window.setTimeout(function( ){ }|fn|"fn( )",3000) 一次性定时器
//一次性定时器setTimeout(function( ){document.write("memeda-")}, 3000)
清除定时器
var t = window.setInterval(function( ){ }|fn|"fn( )",3000)
window.clearInterval(标识|t【参数】)
//鼠标移入元素停止定时器
imgEle.onmouseover = function(){
clearInterval(t)
}
//鼠标移出元素
imgEle.onmouseout = function(){
//需要重新启动定时器
}
自调函数
【一般用于初始化、闭包】
(function(){
console.log("1111")//打印1111,默认会调用自己一次
//一个页面或者一个结构只能使用一次
})(存放参数值)
(function(a,b){
console.log(a+b)//打印3
console.log("1111")//打印1111
})(1,2)