一、變數的生命周期 JavaScript 變數的生命期從它們被聲明的時間開始。 局部變數會在函數運行以後被刪除。 全局變數會在頁面關閉後被刪除。 二、自執行函數 執行函數通常都是定義之後立即執行,以後都不再會調用,所以聲明時可以省略函數名,因此自執行函數又叫匿名函數。 通用的自執行函數方式有兩種: ...
一、變數的生命周期
局部變數會在函數運行以後被刪除。
全局變數會在頁面關閉後被刪除。
二、自執行函數
。
通用的自執行函數方式有兩種:
1、在給該函數加上小括弧,後面緊跟小括弧
(function(){console.log('我是匿名函數')})()
2、在函數後邊加上小括弧,然後再用個小括弧把函數和小括弧一起包起來
(function(){console.log('我是匿名函數')}())
案例:一個列表裡有6個li,要求點擊li的時候列印當前被點擊li的索引。
<ul>
<li>這是第1個li</li>
<li>這是第2個li</li>
<li>這是第3個li</li>
<li>這是第4個li</li>
<li>這是第5個li</li>
<li>這是第6個li</li>
</ul>
<script>
//函數的自執行
// (function(){
// console.log('123456');
// })()
//
var lis = document.querySelectorAll('li');
for (var i = 0; i < lis.length; i++) {
(function(i){
lis[i].index = i;
lis[i].onclick = function () {
console.log(this.index)
}
})(i)
}
</script>
點擊對應li獲取下標
三、閉包
閉包就是能夠讀取其他函數內部變數的函數。例如在javascript中,只有函數內部的子函數才能讀取局部變數,所以閉包可以理解成“定義在一個函數內部的函數“。在本質上,閉包是將函數內部和函數外部連接起來的橋梁。
總而言之,閉包就是對函數的嵌套
四、反轉數組案例
第一種方法:
// var arr = [78,11,22,77,45,1,6]
// function reverse(arrone){
// var newArr=[];
// for(var i = 0 ;i<=arr.length-1;i++){
// newArr[arr.length-1-i] = arr[i];
// }
// return newArr;
// }
// console.log(reverse(arr));
核心思想,是創建一個新的數組,使原數組的下標到新數組時從後向前排列newArr[arr.length-1-i] = arr[i];
第二種方法:
function reverse(arrone){
var newArr = [];
for(var i = arrone.length-1; i>=0;i--){
newArr[newArr.length] = arrone [i]
}
return newArr;
}
var arr = reverse([78,11,22,77,45,1,6]);
console.log(arr);
核心思想,創建一個新數組,使原數組按照倒著的順序排放進新數組,最後將新數組輸出
五、冒泡排序
封裝一個函數,輸入任意一個數,都能讓這個數組從大到小進行排序 var arr =[];
function list(arr){
var temp;
for(var l = 0;l<=arr.length-1;l++){
for(var b=0;b<=arr.length-1-l;b++){
if(arr[b]<arr[b+1]){
temp = arr[b+1]
arr[b+1] = arr[b]
arr[b] = temp
}
}
}
console.log(arr);
}
list([5,35,4,1,88,45,12,41,31,66])
核心:設置一個第三方變數,當後者大於前者時,用三個變數之間交換位置的方法依次進行排序