JavaScript学习笔记(二):Function

1.Function() 构造函数

函数同样可以通过内置的JavaScript 函数构造器(Function())定义。

varmyFunction = new Function("a", "b", "return a *b");

var x= myFunction(4, 3);

*在 JavaScript 中,很多时候,你需要避免使用 new 关键字。

2.函数提升(Hoisting)

提升(Hoisting)是JavaScript 默认将当前作用域提升到前面去的的行为。

提升(Hoisting)应用在变量的声明与函数的声明。

因此,函数可以在声明之前调用:

myFunction(5);

functionmyFunction(y) {

    return y * y;

}

使用表达式定义函数时无法提升。

3.自调用函数

函数表达式可以"自调用"。自调用表达式会自动调用。如果表达式后面紧跟 () ,则会自动调用。

Y不能自调用声明的函数。

 

通过添加括号,来说明它是一个函数表达式:

(function() {

    var x = "Hello!!";      // 我将调用自己

})();

以上函数实际上是一个匿名自我调用的函数 (没有函数名)。

4.函数是对象

在JavaScript 中使用 typeof 操作符判断函数类型将返回 "function" 。但,JavaScript函数描述为一个对象更加准确。

JavaScript函数有 属性 和 方法。arguments.length 属性返回函数调用过程接收到的参数个数:

functionmyFunction(a, b) {

    return arguments.length;

}

toString()方法将函数作为一个字符串返回

5.参数规则

JavaScript 函数定义时参数没有指定数据类型。

JavaScript函数对隐藏参数(arguments)没有进行检测。

JavaScript函数对隐藏参数(arguments)的个数没有进行检测。

如果函数在调用时缺少参数,参数会默认设置为: undefined

处理方式:

functionmyFunction(x, y) {

   y = y || 0;

}

如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名。只能使用 arguments 对象来调用。

6.Arguments 对象

JavaScript函数有个内置的对象 arguments 对象.argument 对象包含了函数调用的参数数组。

通过这种方式你可以很方便的找到最后一个参数的值:

x =findMax(1, 123, 500, 115, 44, 88);

functionfindMax() {

    var i, max = 0;

    for (i = 0; i < arguments.length; i++) {

        if (arguments[i] > max) {

            max = arguments[i];

        }

    }

    return max;

}

7.闭包

闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。

var add = (function () {

    var counter = 0;

    return function () {return counter += 1;}

})();

add();

add();

add();

// 计数器为 3

实例解析

变量 add 指定了函数自我调用的返回字值。

自我调用函数只执行一次。设置计数器为0。并返回函数表达式。

add变量可以作为一个函数使用。非常棒的部分是它可以访问函数上一层作用域的计数器。

这个叫作JavaScript 闭包。它使得函数拥有私有变量变成可能。

计数器受匿名函数的作用域保护,只能通过add 方法修改。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值