1、函数定义
函数的声明不是一个可执行语句,所以不需要分号结束;
函数表达式可以存储在变量中:var x = function(a,b){return a * b} ;
变量也可以作为一个函数使用:var z = x(2 , 3);
函数提升:函数可以在声明之前调用,使用表达式定义函数时无法提升;
函数是对象;
箭头函数(ES6新增):var x =(x,y)=>x * y ;
箭头函数不能提升,需先声明后调用,箭头函数会默认绑定外层this的值,在箭头函数中this的值和外层this是一样的。
2、函数参数 显式参数(Parameters)与隐式参数(Arguments)
显式参数在函数定义时列出,隐式参数在函数调用时传递给函数真正的值;
arguments对象:函数内置的对象,arguments对象包含了函数调用的参数数组.
3、函数调用
4种调用方式,每种方式的不同在于this的初始化: 一般而言,在JavaScript中,this指向函数执行时的当前对象
4种调用方式:
①作为一个函数调用 function()
②作为方法调用:(将函数定义为对象的方法)
var myObject={
firstName: "John",
lastName: "Doe",
fullName: function ( ){
return this.firstName + " "+this.lastName;
}
}
myObject.fullName( ) ; ③使用构造函数调用函数:(如果函数调用前使用了 new 关键字, 则是调用了构造函数)
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
var x = new myFunction("John","Doe");
x.firstName;
④作为函数方法调用函数:call()和apply()两个方法可用于调用函数
call()、apply()、bind()都是用来重新定义this对象,不同点在于传参时的写法不同
4、JavaScript闭包
使得函数拥有私有变量,在函数执行时形成私有的作用域,保护函数里面的私有变量不受外界干扰。