函数

函数声明:

function myFunction(a, b) {
    return a * b;
}

ps: 分号是用来分隔可执行JavaScript语句。  由于函数声明不是一个可执行语句,所以不以分号结束。


函数表达式:

var x = function (a, b) {return a * b};
var z = x(4, 3);

 ps:函数可以通过一个表达式定义。在函数表达式存储在变量后,变量也可作为一个函数使用。上述函数以分号结尾,因为它是一个执行语句。


自调用函数:(下面是一个匿名自我调用的函数)

(function () {
    var x = "Hello!!";      // 我将调用自己
})();

ps: 如果表达式后面紧跟 () ,则会自动调用。 不能自调用声明的函数。 通过添加括号,来说明它是一个函数表达式:


函数是对象:JavaScript 函数有 属性 和 方法


Arguments对象:

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

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

function findMax() {
    var i, max = 0;
    for (i = 0; i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}

函数调用:

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);

以上函数不属于任何对象。但是在 JavaScript 中它始终是默认的全局对象。

在 HTML 中默认的全局对象是 HTML 页面本身,所以函数是属于 HTML 页面。

在浏览器中的页面对象是浏览器窗口(window 对象)。以上函数会自动变为 window 对象的函数。

myFunction() 和 window.myFunction() 是一样的。


ps:这是调用 JavaScript 函数常用的方法, 但不是良好的编程习惯全局变量,方法或函数容易造成命名冲突的bug。


全局对象:

当函数没有被自身的对象调用时, this 的值就会变成全局对象。

在 web 浏览器中全局对象是浏览器窗口(window 对象)。

该实例返回 this 的值是 window 对象:

function myFunction() {
    return this;
}
myFunction();


函数作为方法调用:

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName(); 


闭包:

JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。

全局变量:

var counter = 0;

function add() {
    counter += 1;
}

add();
add();
add();

// 计数器现在为 3


局部变量:

function add() {
    var counter = 0;
    counter += 1;
}

add();
add();
add();

// 本意是想输出 3, 但事与愿违,输出的都是 1 !
JavaScript 内嵌函数可以解决该问题。

JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。

该实例中,内嵌函数 plus() 可以访问父函数的 counter 变量:

function add() {
    var counter = 0;
    function plus() {counter += 1;}
    plus();    
    return counter; 
}
如果我们能在外部访问  plus()  函数,这样就能解决计数器的困境。


闭包:

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、付费专栏及课程。

余额充值