(嗯嗯嗯,我也想成爲別人口中的大神,功夫足球——「我豬肉榮,又未嘗不想成爲一位偉大的舞蹈家」)javascript
什麼是javascript?html
Javascipt是一種腳本語言,由web瀏覽器進行解釋和執行。java
JavaScript起源web
JavaScript 誕生於1995年,它的出現主要用於網頁的「行爲」作處理。數組
ECMAScript(European Computer Manufacturers Association) :核心 我的理解:也算是一個標準吧。而這個標準須要個個廠商去實現。 然而,不一樣瀏覽器廠商標準會有不一樣的實現。至今發展有七個版本了,至於後面也確定會有更新。瀏覽器
DOM :文檔對象模型(Document Object Model) =》數據結構
BOM :瀏覽器對象模型 BOM部分主要是針對瀏覽器的內容,其中經常使用的就是window對象和location,ide
window是全局對象不少關於瀏覽器的腳本設置都是經過它。函數
location則是與地址欄內容相關,好比想要跳轉到某個頁面,或者經過URL獲取必定的內容。學習
navigator中有不少瀏覽器相關的內容,一般判斷瀏覽器類型都是經過這個對象。
screen經常用來判斷屏幕的高度寬度等。
history不太經常使用,通常應該不會有寫關於歷史記錄的腳本。更多詳細參照:http://www.cnblogs.com/xing901022
下面咱們來正式去學習JavaScript吧
基礎:
(因此。。。我仍是滾去代碼吧)
JavaScript 各類須要主要的小事項{
①JS中要嚴格區分大小寫; ②基本每條語句結束後要以分號結尾(;); 3.JS中會忽略不少空格和換行,因此咱們能夠利用空格和換行及進行格式化 (代碼換行就是爲了看得個清晰,容易維護)
}
1、JavaScript 輸出形式有三種
1.以提示框形式顯示 :alert("hello world!");
2.以文檔模式輸出(網頁):document.write("你好 世界!");
3.在控制檯裏面輸出:console.log("hello boss!");
注意!:js是按循序執行的,通常狀況下是重上往下執行/
2、js的存在方式也有三種(和CSS差很少):
優勢:相對於使用行內js,內部js代碼較爲集中,與頁面結構的實現代碼耦合度較低,比較便於維護
缺點:js代碼僅限於當前頁面的使用,代碼沒法被多個頁面重複使用,致使代碼冗餘度較高
3.外部js: 引入外部的js文件(推薦使用)
優勢:1.頁面代碼跟js代碼實現有效分離,下降耦合度
2.便於代碼的維護和擴展
下面要開始認真啦!!!
(唉!永遠也寫不完的代碼啊。。。)
3、js中的量
1.字面量(都是一些不可改變的值):字面量都是能夠直接使用的,可是通常不會去直接去使用(額。。。好像有點先後矛盾了)
好比 1 2 3 4 5
2.變量 變量能夠用來保存字面量,並且變量值能夠任意改變的,變量更加方便咱們使用,因此在開發中都是以變量去保存一個字面量,而不多去直接使用變量
注意!!!不要亂聲明一個變量(嚴重區分大小寫)否則。。。
3.聲明變量。在js中用 var 關鍵字來聲明一個變量
好比 var a; a = 123; 聲明和賦值同時進行 :var a = 123;
4、標識符(identifier) (變量名、函數名、屬性名 又或者 自主命名一個標識符)
1.標識符是用來識別具體對象的一個名稱。最多見的標識符就是變量名,以及後面要提到的函數名。JavaScript語言的標識符對大小寫敏感,因此a和A是兩個不一樣的標識符。
2.聲明一個標識符時,要遵照如下規則:
(1).標識符中能夠含有字母、數字、下劃線、$ 符號
(2).標識符不能以數字開頭 好比: var 1abc = 123; (錯誤!)
(3).標識符不能是ES中的關鍵字(var)var var = 123;(錯誤!) 、 保留字(class)var class = 123;(也是錯誤!)、true、false和null
另外,還有三個詞雖然不是保留字,可是由於具備特別含義,也不該該用做標識符:Infinity、NaN、undefined。
(4).標識符通常都是採用駝峯式(雙駝峯、單駝峯)命名法(首字母大寫(小寫),每一個單詞開頭字母大寫,其他字母都是小寫)
(5).js底層保存標識符時,其實是採用 Unicode 編碼(UTF-8),因此理論來說,全部UTF-8 中含有的內容均可以做爲標識符 。好比 :var 一行白鷺 = 123; 但千萬別用,這裏只是說明一下而已。
5、JS數據類型
js中有六種數據類型,包括五種基本數據類型(Number , String, Boolean, Undefined, Null),和一種複雜數據類型(Object)。
typeof 操做符
因爲js
中的變量是鬆散類型的,因此它提供了一種檢測當前變量的數據類型的方法,也就是typeof關鍵字.
typeof 123 //Number
typeof 'abc' //String
typeof true //Boolean
typeof undefined //Undefined
typeof null //Object
typeof { } //Object
typeof [ ] //Object
typeof console.log() //Function
null類型進行typeof操做符後,結果是object,緣由在於,null類型被當作一個空對象引用。
Number類型包含整數和浮點數(浮點數數值必須包含一個小數點,且小數點後面至少有一位數字)兩種值。
NaN:非數字類型。特色:① 涉及到的 任何關於NaN的操做,都會返回NaN ② NaN不等於自身。
isNaN() 函數用於檢查其參數是不是非數字值。
isNaN(123) //false isNaN("hello") //true
字符串有length屬性。
字符串轉換:轉型函數String(),適用於任何數據類型(null,undefined 轉換後爲null和undefined);toString()方法(null,defined沒有toString()方法)。
在字符串中咱們還可使用\(反斜槓)做爲轉義字符
好比:\"文字" ; \'文字' ; \n 表示換行 ; \t 表示製表符
該類型只有兩個值,true和false
只有一個值,即undefined值。使用var聲明瞭變量,但未給變量初始化值,那麼這個變量的值就是undefined。
null類型被看作空對象指針,前文說到null類型也是空的對象引用。
js中對象是一組屬性與方法的集合。這裏就要說到引用類型了,引用類型是一種數據結構,用於將數據和功能組織在一塊兒。引用類型有時候也被稱爲對象定義,由於它們描述的是一類對象所具備的屬性和方法。
咱們看到的大多數類型值都是Object類型的實例,建立Object實例的方式有兩種。
第一種是使用new操做符後跟Object構造函數,以下所示
var person = new Object();
person.name = "Micheal";
person.age = 24;
第二種方式是使用對象字面量表示法,以下所示
var person = {
name : "Micheal",
age : 24
};
數組的每一項能夠用來保存任何類型的數據,也就是說,能夠用數組的第一個位置來保存字符串,第二個位置保存數值,第三個位置保存對象....另外,數組的大小是能夠動態調整的。
建立數組的基本方式有兩種
第一種是使用Array構造函數,以下所示
var colors = new Array("red","blue","yellow");
第二種是使用數組字面量表示法,以下所示
var colors = ["red","blue","yellow"];
組成部分:
數組實際上是由多個(鍵-值)所組成的一個多容器
數組的索引 默認是從0開始的
定義數組
vararr= new Array(23,23,45,56,435);
vararr2 = [23,34,546];
vararr3 = new Array();
arr3[0] = 234;
arr3[1] = 234;
每一個函數都是Function類型的實例,並且都與其餘引用類型同樣具備屬性和方法。函數一般是使用函數聲明語法定義的,以下所示
function sum(num1,num2){
return num1 + num2;
};
這和使用函數表達式定義函數的方式相差無幾。
var sun = function (){
return sum1 + sum2;
};
也就是說,js按照存儲方式分爲值類型和引用類型。那麼他們的計算有什麼區別呢?
題目1: var a = 100;
var b = a;
a = 200;
console.log (b);
題目2: var a = {age : 20};
var b = a;
b.age = 21;
console.log (a.age);
題目1的答案是 100,題目2的答案是21,
題目1是簡單的值類型,在從一個變量向另外一個變量賦值基本類型時,會在該變量上建立一個新值,而後再把該值複製到爲新變量分配的位置上。
此時,a中保存的值爲 100 ,當使用 a 來初始化 b 時,b 中保存的值也爲100,但b中的100與a中的是徹底獨立的,該值只是a中的值的一個副本,此後,
這兩個變量能夠參加任何操做而相互不受影響。也就是說基本類型在賦值操做後,兩個變量是相互不受影響的。
題目2是引用類型,當從一個變量向另外一個變量賦值引用類型的值時,一樣也會將存儲在變量中的對象的值複製一份放到爲新變量分配的空間中。
這時保存在變量中的是對象在堆內存中的地址,因此,與簡單賦值不一樣,這個值的副本其實是一個指針,而這個指針指向存儲在堆內存的一個對象。那麼賦值操做後,
兩個變量都保存了同一個對象地址,則這兩個變量指向了同一個對象。所以,改變其中任何一個變量,都會相互影響。
所以,引用類型的賦值實際上是對象保存在棧區地址指針的賦值,所以兩個變量指向同一個對象,任何的操做都會相互影響。
----------------------------轉載http://www.javashuo.com/article/p-eaqrplig-bs.html
6、JS中的算術運算符(一元運算,二元運算,三元運算)
一、加減乘除 自增自減 (前後賦值仍是前後運算)
二、邏輯運算(與 或 非)
三、布爾值的與運算
四、賦值運算
五、關係運算
六、Unicode編碼表
七、相等運算
八、條件運算
九、運算符的優先級
十、幾種條件(判斷)語句
7、JS 循環語句
一、_while循環
二、do_while循環
三、for 循環
四、_foreach 循環
五、。。。
8、對象(結合js數據類型)
來講一下:
js中的數據類型:-String 字符串 -Number 數值 -Boolean 布爾值 -null 空 -Undefined未定義
——以上五種屬於基本數據類型(都是屬於單一的值,它們之間沒有什麼聯繫),若是使用基本數據類型,咱們所建立的都是獨立 ,不能成爲一個總體
之後看到只要不是以上的這幾種,其他基本全是對象(Object)
Object屬於複合的數據類型(則與上相反)
objec 對象(能夠做爲一個總體,把咱們全部的屬性和屬性值都裝起來 ——比如一個購物車,裏面裝着不少你購買的東西,而這些東西都是有相互之間的關係的)
對象的分類:
一、內建對象
由ES標準中定義的對象,在任何的ES的現實中均可以使用
好比:Math、 String、Number、Boolean、Function、Object...
二、宿主對象
由JS的運行環境提供的對象,目前來說主要由瀏覽器提供的對象
好比:BOM(瀏覽器對象模型)、DOM (文檔對象模型)
三、自定義對象(須要咱們本身建立的對象)
由開發人員本身定義的對象
自定義對象(增刪改查)
待 未完結。。。