前端 JS基礎理論總結(八)
阿新 • • 發佈:2019-01-13
變數的作用域
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>變數的作用域</title> <script type="text/javascript"> /* 全域性變數:函式外部定義的變數,函式內部和外部都可以訪問,它的值可以共享 區域性變數:函式內部定義的變數,函式內部可以訪問,外部無法訪問。函式內部訪問變數時,先在內部查詢是否有此變數,如果有,就使用內部變數,如果沒有,就去外部查詢 函式內部如果不用'var'關鍵字定義變數,變數可能會變成全域性變數,如果用嚴格模式解析會報錯 */ var a = 12; function aa(){ // var a = 5; var b = 7; // alert(a); } // alert(a); // alert(b);//報錯 aa(); </script> </head> <body> </body> </html>
封閉函式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>封閉函式</title> <script type="text/javascript"> /*原來的寫法 function myAlert(){ var str = '歡迎訪問我的主頁'; alert(str); } myAlert();*/ var str = function(){ alert('test'); } //封閉函式的一般寫法 //封閉函式定義:(function(){……})() /* ;;(function(){ var str = '歡迎訪問我的主頁'; alert(str); })();//最後的()表示馬上執行 */ //封閉函式其他的寫法:在匿名函式前加“!”或者“~”,之後加“()” ~function(){ var str = '歡迎訪問我的主頁'; alert(str); }(); </script> </head> <body> </body> </html>
用變數的方式定義函式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用變數的方式定義函式</title> <script type="text/javascript"> /* 原來的寫法:可以提前 myAlert(); function myAlert(){ alert('hello!'); }*/ //函式用變數方式定義:先定義再使用 // myalert();//提前會報錯 var myAlert = function(){ alert('hello!'); } myAlert();//放在下面可以執行 </script> </head> <body> </body> </html>
閉包
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>閉包</title>
<script type="text/javascript">
/*
閉包的本質就是函式巢狀,就是在函式裡面定義函式,
內部函式可以引用外部函式的引數和變數
引數和變數不會被垃圾回收機制給回收
閉包的用途:可以存迴圈的索引值、做私有變數計數器
*/
/*
//閉包的一般寫法
function aa(b){
var a = 12;
function bb(){
alert(a);
alert(b);
}
return bb;
}
var cc = aa(24);*/
//閉包的封閉函式寫法
var cc = (function(b){
var a = 12;
function bb(){
alert(a);
alert(b);
}
return bb;
})(24);
cc();
/*
//只能呼叫一次的閉包
(function(b){
var a = 12;
function bb(){
alert(a);
alert(b);
}
return bb;
})(24)();
*/
</script>
</head>
<body>
</body>
</html>