语言特性-闭包

闭包:闭包本质上就是函数内部和函数外部架起的一座桥梁。闭包是能够读取其他函数作用域内的变量的函数,由于变量是由作用域范围的,要读取其他作用域范围的变量,需理解javascript的“链式作用域结构”,子对象一级一级的向上寻找父作用域对象。

一个小例子:

function f1() {

            var n = 99;

            function f2() {

                return n;

            }

            return f2;

        }

        var result = f1();

        alert(result());

        //比如这个例子:在f1外部是没办法访问n变量的。但是f1内部的函数f2却可以做到;

        //那么我们可以让f1函数返回f2函数,通过f2可以在外部拿到n值。

闭包的作用:

1.  setTimeout/setInterval                                                  

例: var num = 0;
        function addnum() {
            document.getElementById("txtdata").value = num;
            num = num + 1;
            setTimeout("addnum()", 1000);
        }

2.  回调函数(callback):把函数作为参数,当主函数执行完毕后,再执行传进来的函数。

 

3.       事件句柄(event handle

4.       利用闭包可以将我们自己定义的一些函数包起来。利用命名空间方式访问,增加代码可读性和安全性,避免不经意间的覆盖。

例:

(function() {

    function SetUserFieldFocus() {

        document.getElementById('txtdata').value = "rxm";

    }

    window['NianJia'] = {};

    window['NianJia']['SetUserFieldFocus'] = SetUserFieldFocus;

})();

 

页面实现:

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <script language="javascript" type="text/javascript" src="main.js">script>

    <title>nulltitle>

head>

<body>

    <form id="form1" runat="server">

    <div>

        <input id="txtdata" type="text" onfocus="NianJia.SetUserFieldFocus();" />

    div>

    form>

body>

html>

转载于:https://www.cnblogs.com/hometown/p/3204220.html

你可能感兴趣的:(语言特性-闭包)