1. 程式人生 > >JS——封閉函數、閉包、內置對象

JS——封閉函數、閉包、內置對象

func function char url turn 垃圾回收 earch text nbsp

封閉函數:時javascript中匿名函數的另一種寫法,創建一個一開始就執行而不用命名的函數

示例:

1)

(function(){
    var str = ‘歡迎訪問我的主頁‘;
    alert(str);
    a++;
 })();

2)

!function(){
    var str = ‘歡迎訪問我的主頁‘;
    alert(str);
    a++;
 }();

3)

~function(){
    var str = ‘歡迎訪問我的主頁‘;
    alert(str);
    a++;
 }();

註:在封閉函數前面加;可以避免一些不必要的問題~

閉包:函數嵌套函數,內部函數可以引用外部函數的參數和變量,參數和變量不會被垃圾回收機制收回。

閉包作用:

1)將一個變量長期駐紮在內存當中,可用於循環中存索引值。

        var aLi = document.getElementsByTagName(‘li‘);
        
        for(var i=0;i<aLi.length;i++)
        {
            (function (i) {     
                aLi[i].onclick = function () {        
                    alert(i);
                } 
            })(i);
        }    

2)私有變量計數器,外部無法訪問,避免全局變量的汙染。

        var count = aa();
        function aa() {
            var a = 1;
            function bb()
            {
                a++;
                return a;
            }
            return bb;
        }
        alert(count());
        alert(count());

內置對象:

1)document

document.referrer //獲取上一個跳轉頁面的地址(需要服務器環境)

2)location

window.location.href //獲取或者重定url地址;

window.location.search //獲取地址參數部分;

window.location.hash //獲取頁面錨點或者叫哈希值;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        window.onload = function (){
            var Dat = window.location.search;
            var oSpan = document.getElementById(‘span01‘);
            var arr = Dat.split(‘=‘);
            var a = arr[1];
            oSpan.innerHTML = a;
        }
    </script>
</head>
<body>
    <div>歡迎<span id="span01"></span>來到我的主頁</div>
</body>
</html>

3)Math

Math.random //獲取0-1的隨機數;

Math.floor //向下取整;

Math.ceil //向上取整;

JS——封閉函數、閉包、內置對象