函数指的是一段代码,这段代码定义一次能够调用屡次javascript
函数是javascript中一种特殊的对象,函数也是对象有本身的方法和属性java
不带参数的函数:数组
编写格式:app
function 函数名{ 函数体(要执行的操做)
}函数
带参数的函数:this
function (这里边写参数) { 函数体(要执行的操做) }对象
编写格式:递归
函数声明语句:事件
function 函数名{ 函数体(要执行的操做)
}ip
函数表达式:
var 变量名(也等于函数的名字)=function(这里边写参数){ 函数体(要执行的操做)
}
使用函数声明语句定义的函数能够在任何地方调用,使用函数表达式定义的函数,调用只能用在定义的函数以前,调用再函数以前会报错。
在定义函数时若是有多个参数参数之间要用逗号分隔,在函数定义的参数叫形参,在函数调用的时候的参数叫实参。当实参比形参少的受多余的形参会是undeFinde,当实参等于形参时会对应赋值,当实参多于形参时多余的实参会被忽略掉。(函数中会有一个伪数组arguments,这个argumens是保存实参的)
若是函数体外面要使用函数的返回值,可使用return。在函数中return以后的代码再也不执行。若是没有明确的返回值,而且在某个时间想让函数中止,可使用return。
编写格式:
function 函数名 (这里边写参数){ 函数体(要执行的操做) return }
递归函数:(自身调用自身,有结束条件)
编写格式:
function 函数名(这里边写参数) {
if (参数<=1){ return 1
}else{
return 参数*函数名(参数-1) }
}
自执行函数:(不用调用,本身执行)
编写格式1:
function 函数名(参数) {
函数体(要执行的操做)
}
编写格式2:
(函数 (参数){ 函数体(要执行的操做) })(参数值)
调用方法:函数名(参数值);
全局做用域:
最外层的函数和最外层函数外面的变量拥有全局做用域
没有使用var声明的变量拥有全局做用域(这种方式不建议在程序中使用)
window上的属性和方法都具备全局做用域
局部做用域:(和全局做用域相反,只在固定的代码片断中访问)
变量声明:把变量声明提早到当前做用域的最上面而后再原来的位置赋值
若是全局变量和局部变量的名字相同那么优先使用局部变量
把语句放在函数里边而后调用这个函数
用于存放实参,本质上不是一个数组是一个伪数组有长度
this在普通函数中指向的是window,this在事件中只想的是发生事件的DOM对象
call方法和apply方法是函数身上的方法,做用是用来改变函数中this的指向的。二者的区别是传参数的方式不一样,在使用call和apply时若是括号里没有参数那么this默认只想window对象
使用方法:要改变this指向函数的函数名.call(x,y,z)x是想要让this指向哪一个函数的函数名,剩下的是要往函数里传的参数
使用方法:要改变this指向函数的函数名.apply(x,[q.b.j])x是想要让this指向哪一个函数的函数名,剩下的是要往函数里传的参数只不过是一个数组数组里边能够有多个不过只能有一个数组
普通函数命名: function abc(){函数体}
构造函数命名:function Abc(){函数体}
在函数体内声明变量时再也不使用var而是使用this,例如:
普通函数声明变量: var str=123
构造函数声明变量:this.str=123
调用构造函数的时候要在前边加上new。例如:
普通函数调用:abc()
构造函数调用:new Abc()
返回值若是是基本类型的那么返回值会被抛弃,若是返回值是引用类型的话,返回值将会被替代被返回出的值替代