JS函数本质更像一个对象,有属性和方法。函数
将函数定义做为对象的属性,则称之为对象方法;函数若是用于建立新的对象,则称之为对象的构造函数。spa
函数能够经过声明定义,也能够是一个表达式。code
function functionName( parameters){ //函数体,执行的代码
//函数体内的可执行语句以分号间隔
}
函数的声明语句不是可执行语句,因此不须要以分号结束。对象
函数只有在调用的时候才会执行。blog
函数表达式能够存储在变量中,该变量能够做为一个函数使用。这种状况的函数被称为 匿名函数 没有函数名称。递归
var x = function ( a,b ){ return a + b}; var z = x ( 4,3 );
var myFunction = new Function("a" , "b", "return a*b"); //构造函数中myFunction是对象形式 var x = myFunction(4,3);
在JS中不少时候须要尽可能避免使用关键字 new ,上面的实例能够不适用构造函数,直接写成如下形式作用域
var myFunction = function(a,b){ return a*b }; var x = myFunction(4,3);
提高是JS默认将当前做用域提高到前面去的行为,应用在变量的声明和函数的声明。所以函数能够在声明以前调用。(使用表达式定义函数时没法进行提高,做用域被表达式中的变量限定了)io
myFunction(5); function myFunction(y){ return y * y; }
自调用函数:function
函数表达式后跟 () ,则函数会自动调用。可是函数内的参数不能自调用声明的函数,必定要把这个和递归区分开。class
(function (){ var x = "hello"; //我将调用本身 })(); //经过添加括号来讲明这是一个函数表达式 (函数声明)()
有返回值的函数一般均可以看成一个值用于赋值或运算表达式中。