//

作者:lofayo    发布于:

1、函数定义的两种方式:

函数申明函数表达式

函数申明:

function functionName(arg1,arg2,....) {
    //代码执行块
    return ..;
}

函数表达式:

var fn = function() {
    //代码执行块
    return ..;
}

区别:

函数申明,申明提升,可以提升到作用域顶端,即先使用后申明

函数表达式,也即匿名函数(关键字function后面直接括号),就等同于变量的赋值,虽然变量也能提升,提升到前面去是个undefined,依然会出错

共同点:

函数是个对象,是Function构造函数的一个实例,因此,函数名或变量名都是指向函数对象的一个指针

2、因为函数是对象,所以有方法

方法: 函数自己的方法Function.prototype方法

Function.prototype:

就是函数实例通过原型链继承的一些方法,好像仿佛也没有什么方法

函数自带方法和属性

属性:

length: 函数参数个数

arguments对象: 类数组,用来存储函数的参数

this对象:指向调用函数的执行环境

方法:

call(obj,arg1,arg2,...);

apply(obj,[arg1,arg2,...]);

obj都是指向函数的作用环境对象

eg:

    var color = 'red';

    function sayColor() {
        alert(this.color);
    }

    var o = {
        color: 'green'
    }

    sayColor();     //'red'
    sayColor.call(o);   //'green'
    sayColor.apply(0);  //'green'

这两个方法本质,不在于【传递参数的方式不同】,而是可以任意改变【函数作用的对象】,这个才牛

format_list_numbered

(无)

  1. 1. 1、函数定义的两种方式:
  2. 2. 2、因为函数是对象,所以有方法
vertical_align_top

Copyright © 2017 每天寻求一点变化

Powered by Hexo & Theme - Vateral