JS——封閉函數、閉包、內置對象
阿新 • • 發佈:2018-06-19
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——封閉函數、閉包、內置對象