我的第一篇博客 ——JS的那些基礎概念 接觸前端已經整整一學年了,這是我第一次寫博客,感覺心裡裝了無數只兔子,很緊張,很激動,也很興奮。 第一次寫,也不知道有沒有什麼套路,需不需要註意文采之類的。不管了,太激動了,我就直接寫只要內容吧!下麵是我總結的一些關於JS的基礎概念: 【變數】從字面上面,變數 ...
我的第一篇博客
——JS的那些基礎概念
接觸前端已經整整一學年了,這是我第一次寫博客,感覺心裡裝了無數只兔子,很緊張,很激動,也很興奮。
第一次寫,也不知道有沒有什麼套路,需不需要註意文采之類的。不管了,太激動了,我就直接寫只要內容吧!下麵是我總結的一些關於JS的基礎概念:
【變數】
從字面上面,變數是可變的量;從編程角度講,變數是用於存儲某些/某種數值的存儲器。我們可以把變數看作一個盒子用來存儲物
品。
【數組】
變數用來存儲數據,一個變數只能存儲一個內容。如果你想存儲多個內容,那麼就可以用數組解決,一個數組變數可以存放多個數
據,好比一個團,團你有很多人。數組是一個值得集合,每個值都有一個索引號,從0開始,每個索引都有一個相應的值,根據需要
添加更多數值。
創建數組:使用數組之前首先要創建,需要把數組本身賦值給一個變數。
1、創建數組是空數組,沒有值,如輸出,則顯示undefined。
2、雖然創建數組時,指定了長度,但它是可以變長的,根據需要而添加內容,長度隨即變長。
【數組方法】
即對一個或多個數組進行的一系列操作。
(1)數組連接方法:concat()方法,用於連接兩個或多個數組,返回一個新數組,不改變原來的數組,僅僅返回被連接數組的一個
副本。
語法:arrayObject.concat(array1,array2,...,arrayN)
用法如下:
<script type="text/javascript">
var mya = new Array(3);
mya[0] = "1";
mya[1] = "2";
mya[2] = "3";
document.write(mya.concat(4,5)+"<br>");
document.write(mya);
</script>
返回結果:
1,2,3,4,5
1,2,3
(2)指定分隔符連接數組元素方法:join()方法,該方法用於把數組中的所有元素放入一個字元串,元素是通過指定的分隔符進行
分隔。
語法:arrayObject.join(分隔符(預設為逗號));
用法:
<script type="text/javascript">
var myarr = new Array(3)
myarr[0] = "I";
myarr[1] = "love";
myarr[2] = "JavaScript";
document.write(myarr.join("."));
</script>
運行結果:
I.love.JavaScript
(3)顛倒數組元素順序:reverse()方法,用於顛倒數組中元素的順序。
語法:arrayObject.reverse();
用法如下:
<script type="text/javascript">
var myarr = new Array(3)
myarr[0] = "1"
myarr[1] = "2"
myarr[2] = "3"
document.write(myarr + "<br />")
document.write(myarr.reverse())
</script>
運行結果:
1,2,3
3,2,1
(4)選定元素:slice()方法,該方法可從已有的數組中返回選定的元素。
語法:arrayObject.slice(start,end)
參數說明:
start,必需,規定從何處開始選取。如果為負數,那麼它規定從數組尾部算起的位置,即:-1為最後一個元素,-2為倒數第二個元
素,以此類推。end,可選,規定從何處結束選取。該參數是數組片段結束處的數組下標(不包含該下標所指元素)。如果沒有指定
參數,那麼切分的數組包含從start到數組結束的所有元素。如果為負數,那麼它規定從數組尾部算起。
該方法不會修改數組,而是返回一個子數組。
註意:
String.slice()與Array.slice()相似。
用法如下:
<script type="text/javascript">
var myarr = new Array(1,2,3,4,5,6);
document.write(myarr + "<br>");
document.write(myarr.slice(2,4) + "<br>");
document.write(myarr);
</script>
運行結果:
1,2,3,4,5,6
3,4
1,2,3,4,5,6
(5)數組排序:sort()方法,該方法用於使數組中的元素按照一定的順序排序。
語法:arrayObject.sort(方法函數)
參數說明:可選,規定排序順序,必須是函數。如果不指定<方法函數>,則按unicode碼順序排列:myArray.sort(sortMethod);。
該函數要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字。比較函數應該具有兩個參數a和b,起返回值如下:
若返回值 <= -1,則表示A在排序後的序列中出現在B之前。
若返回值 > -1 && < 1,則表示A和B具有相同的排列順序。
若返回值 >= -1,則表示A在排序後的序列中出現在B之後。
例子:
<script type="text/javascript">
function sortNum(a,b) {
return a - b;
//升序,如降序,把“a - b”該成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr + "<br>");
document.write(myarr.sort(sortNum));
</script>
運行結果:
80,16,50,6,100,1
1,6,16,50,80,100
(6)數組元素刪除(數組拼接):splice()方法,用於刪除數組中從特定位置開始的元素,返回刪除的值,會修改原數組。
語法:arrayObject.splice(start,end,添加的項...)
參數說明:start,必需,規定從何處開始刪除。數字為元素下標(刪除值包括該下標)。
end,可選,表示刪除的數目。
splice()方法還可以添加元素,因此稱為字元串拼接。
例子如下:
var arr=[1,2,3,4,5];
arr.splice(2);//returns [3,4,5]
arr;//[1,2]
var arr=[1,2,3,4,5];
arr.splice(2,2);//returns [3,4]
arr;//[1,2,5]
var arr=[1,2,3,4,5];
arr.splice(1,1,"a","b");//returns [2]
arr;//[1,"a","b",3,4,5]
(7)數組遍歷:forEach()方法,用於遍曆數組。不會修改原數組。
語法:arrayObject.forEach(function(x,index,a(可選){})
參數說明:x,表示數組任意的元素,index表示元素的索引值,a表示指向數組,返回值為布爾值。
例子如下:
var arr=[1,2,3,4,5];
arr.forEach(function(x,index,a){
console.log(x + "|" +index +"|" + (a===arr));//console.log列印數據,相當於C語言里的printf
});
運行結果:
1|0|true
2|1|true
以此類推
(8)數組映射:map()方法,該方法用於對每一個數組元素進行操作,同樣不會修改原數組。
語法:arrayObject.map(function(x){});
例子:
var arr=[1,2,3];
arr.map(function(x){
return x+10;
});//return [11,12,13]
arr;//[1,2,3]
(9)數組過濾:filter()方法,用於篩選一些我們需要的數組元素。不會修改原數組。
語法:arrayObject.filter(function(x,index){})
參數說明:x,表示數組任意的元素,index表示元素的索引值。
例子:
var arr=[1,2,3,4,5,6,7,8,9,10];
arr.filter(function(x,index){
return index%3===0||x>=8;
});
運行結果:
[1,4,7,8,9,10]
(10)數組判斷:every()和some()方法,用於判斷數組元素是否滿足條件,返回布爾值,與every()不同的是,some()表示只要有
一個元素滿足條件就返回true。
(11)reduce()和reduceRight()方法,用於數組元素之間的兩兩比較,最終得到一個值(把數組聚合成一個結果),如:找最大值
,求和。而reduceRight()表示從右邊開始兩兩比較。
(12)數組檢索:indexOf()和lastIndexOf()方法,用於檢索每個元素在數組中的索引值。lastIndexOf()表示從後往前檢索。
語法:arrayObject.indexOf(x,start),arrayObject.lastIndexOf(x,start)
參數說明:x,表示需要檢索的元素,start表示從何處開始檢索(下標值),如果start為負數表示從倒數第幾個元素開始檢索。
【函數】
就是一塊javascript代碼,被定義一次,但可執行和調用多次。js中的函數也是對象,,所以他也可以像其他對象那樣操作和傳遞
,因此,js中的函數常被稱為函數對象。定義函數的方式有兩種:函數聲明和函數表達式。
【函數聲明】
就是創建函數的一種方式,他有一個重要的特征:函數聲明提升,即函數聲明前置。意味著即使函數聲明在在語句的後面,在執行
代碼之前都會先讀取函數聲明。
函數聲明格式:
function add(a,b){
return a+b;
}
(它以function開頭,擁有一個函數名,沒有括弧,沒有嘆號,也沒有賦右值)
【對象】
javascript中的所有食物都是對象,如:字元串,數組,數值,函數等。每個對象帶有屬性和方法。
對象屬性:反映該對象某些特定的性質,如:字元串長度,圖像長度等。
對象方法:能夠在對象上執行的動作,比如:表單的提交(submit),時間的提取(getyear)。
【window對象】
window對象是BOM的核心,window對象指的是當前的瀏覽器視窗,他表示瀏覽器的一個實例。在瀏覽器中window對象有雙重角色,它
即是通過javascript訪問瀏覽器視窗的一個介面,也是ECMAScript規定的Global對象,這意味著在網頁中定義的任何對象、變數、
函數,都以window作為其Global對象。因此,所有全局作用域中聲明的變數、函數都會成為window對象的屬性和方法。雖然全局變
量會成為window對象的屬性,但是,定義全局變數和在window對象上直接定義屬性還是有區別:全局變數不能通過delete刪除,而
直接在window對象上定義的可以。記住:嘗試訪問未聲明的變數會有錯,但是通過window對象查詢可以知道那個可能未聲明的變數
存在。
【this對象】
javascript中的this比較靈活,在不同的環境下,同一個函數在不同的調用方式下,this都有可能不同。
在全局作用域中,this一般指向全局對象,在瀏覽器裡面,這個全局對象就是window。
在一般函數的中,this任然指向全局對象,在瀏覽器里,就是window。但是,在嚴格模式下,調用一般函數的this會得到一個
undefine值。
總的來說,在全局函數中,this等於window,而當函數被作為某個對象的方法調用時,this等於那個對象,特別的,匿名函數的執
行環境具有全局性,因此其this對象通常指向window。(匿名函數:創建一個函數,並將它賦值給變數functionname,在這種情況下
創建的函數叫做匿名函數)
【DOM及DOM操作】
文檔對象模型DOM定義訪問和處理html文檔的標準方法。DOM和html文檔呈現為帶有元素(即標簽)、屬性(元素屬性)和文本(向
用戶展示的內容)的樹結構(節點樹)。
DOM操作有:
createElement(element):創建一個新的元素節點;
createTextNode():創建一個包含著給定文本的新文本節點
appendChild():指定節點的最後一個子節點列表之後添加一個新的子節點;
insertBefore():將一個給定節點插入到一個給定元素節點的給定節點前面;
removeChild():從一個給定元素中刪除一個節點;
replaceChild():把一個給定父元素里的一個節點替換為另一個節點。
順序有點亂,但是很迫不急的發出去了!希望能收到大神們的意見,謝謝!