JavaScript函数分类、定义方式和调用方式

来源:互联网 发布:java网上报名系统源码 编辑:程序博客网 时间:2024/06/06 15:47

函数的三种使用方式

1、作为普通函数
2、作为对象方法
3、作为构造函数

函数声明

1、函数定义表达式:将一段匿名函数表达式赋值给一个变量
函数表达式指的是“=”号右边的代码(一段匿名函数声明语句)

var myfunction = function(){    //执行语句}

2、函数声明语句:使用function关键字声明一个函数,默认将函数名作为函数的变量

function myfunction(){    //执行语句}

函数语句和函数表达式区别

1、当函数声明语句定义时,会“被提前”到外部作用域顶部,所以无论改函数是在定义之前或定义之后都可以被脚本引用
2、函数表达式只能在创建之后才能被引用,且必须按照代码编写的顺序

myfunction(); //可以被调用function myfunction(){    //执行语句}myfunction(); //不可以被调用var myfunction = function(){    //执行语句}

3、函数表达式和函数语句的内存管理和垃圾回收方面不同
3.1 函数表达式不能像函数语句那样独立存在,它必须赋给一个变量,假如该函数所附加的变量不再可用,那么就无法再访问到这个函数表达式了,它所使用的内存将被回收;
3.2 函数语句是以对象的形式独立存在的,无法删除,假如我们把他赋给一个变量,然后又让该变量等于null,此时只是变量不可再用来调用函数而已,但该函数还是存在的,它所分配的内存并不会被回收。

函数调用方式

1、调用表达式
函数表达式+左圆括号+参数列表+右圆括号,以函数形式调用的函数通常不适用this,但是可以使用this判断是否处于严格模式:

//严格模式不允许使用this指向全局对象var strict = (function(){return !this;})();

2、方法调用表达式
如果函数是对象的属性或数组的一个元素,那么调用表达式叫方法调用表达式:对象名.调用表达式,特点是调用对象就是调用上下文,this指向该对象。方法还能进行链式调用o.f().m().n().z。

3、构造函数调用
函数方法之前使用new,它就是构造函数调用。构造参数在实参处理、调用上下文和返回值方面都不同。
3.1 构造函数没有实参可以省略()
3.2 构造函数中this关键字引用的是这个新创建的对象,例如 new o.m(); m()中的this并不指向o
3.3 构造函数通常不使用return返回,默认会返回构造的初始化新对象,如果使用return;或者return基本类型,那么此时会忽略返回值,依然返回构造对象;如果使用return返回一个对象,那么构造表达式的值就是返回的这个对象。
3.4 通过它们的call()和apply()间接调用
任何函数可以作为任何对象的方法调用,哪怕这个函数不是那个对象的方法

0 0
原创粉丝点击