JS 函数本质更像一个对象, 有属性和方法.
将函数定义作为对象的属性, 则称之为对象方法; 函数如果用于创建新的对象, 则称之为对象的构造函数.
(1)JS 使用关键字 function 定义函数.
函数可以通过声明定义, 也可以是一个表达式.
- function functionName( parameters){
- // 函数体, 执行的代码
- // 函数体内的可执行语句以分号间隔
- }
函数的声明语句不是可执行语句, 所以不需要以分号结束.
函数只有在调用的时候才会执行.
函数表达式可以存储在变量中, 该变量可以作为一个函数使用. 这种情况的函数被称为 匿名函数 没有函数名称.
- var x = function ( a,b ){
- return a + b
- };
- var z = x ( 4,3 );
(2)JS 中还可以使用自带的函数构造器 Function( ) 进行定义.
- 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 默认将当前作用域提升到前面去的行为, 应用在变量的声明和函数的声明. 因此函数可以在声明之前调用.(使用表达式定义函数时无法进行提升, 作用域被表达式中的变量限定了)
- myFunction(5);
- function myFunction(y){
- return y * y;
- }
自调用函数:
函数表达式后跟 () , 则函数会自动调用. 但是函数内的参数不能自调用声明的函数, 一定要把这个和递归区分开.
- (function (){
- var x = "hello"; // 我将调用自己
- })(); // 通过添加括号来说明这是一个函数表达式 (函数声明)()
有返回值的函数通常都可以当作一个值用于赋值或运算表达式中.
来源: http://www.bubuko.com/infodetail-3078306.html