javascript 筆記

javascript是弱類型語言。

1.結合方式

1.在head標籤內直接用 
<script type="text/javascript">
</script>
2.新建一個js文件 xx.js  然後引用 
 <script type="text/javascript" src="hello.js"></script>

2.數據類型

js數據類型分爲原始數據類型和對象數據類型。
    js的原始類型  5種
        1 number 數字  不分整型或浮點型
        2 string 字符串  
        3 boolean 布爾 
        4 null  一般人爲來賦值爲null.  對象數據類型的佔位符.
        5 undefined(未定義) null的衍生值. 通常是系統自動賦值.當我們創建一個變量,並且沒有初始化.

一些語法:
1. 聲明變量, 變量的類型是隨時可以變化的,也就是說當變量被賦什麼值時,就是什麼類型。
2. 聲明變量時,也可以不加var。 加var聲明,作用範圍在代碼塊中.不加var聲明,作用範圍爲全局
3. js中每行語句的結束使用 ";" 號來表示. 也可以不使用";",但一般都加上。

3.語句

跟java中一樣。

4.運算符

1.一元運算符
    + - 是number類型的運算符,當它加在其他數據類型進行運算時,會自動將其他數據類型轉化爲number類型
2.boolean運算符
    number => boolean   除了+0,-0,NaN  其他都是true.
    string => boolean   字符串不爲空,那麼其他都是true.
    null => boolean         false
    undefined => boolean false
    Object   => boolean true

3.邏輯運算符
邏輯 AND 運算的運算數可以是任何類型的,不止是 Boolean 值。
如果某個運算數不是原始的 Boolean 型值,邏輯 AND 運算並不一定返回 Boolean 值:

邏輯 AND 運算符(&&)
•   如果一個運算數是對象,另一個是 Boolean 值,返回該對象。 
•   如果兩個運算數都是對象,返回第二個對象。 
•   如果某個運算數是 null,返回 null。 
•   如果某個運算數是 NaN,返回 NaN。 
•   如果某個運算數是 undefined,返回undefined。 

•           //1 false&&o  ==>       false
•           //2 true&&o   ==> o ==> true
•           //3 o&&true   ==>       true
•           //4 o&&false  ==>       false
•           //5 o1&&o2   ==>  
•           //6  null&&true == >  null
•           //7 NaN && true == >  NaN
•           //8 NaN&&null   ==>   NaN
•           //9 null&&NaN   ==>   null
•       
•           //10 undefined&&true ==> undefined
•           //11 false&&undefined == > false

邏輯 OR 運算符(||)
與邏輯 AND 運算符相似,如果某個運算數不是 Boolean 值,邏輯 OR 運算並不一定返回 Boolean 值:
•   如果一個運算數是對象,並且該對象左邊的運算數值均爲 false,則返回該對象。 
•   如果兩個運算數都是對象,返回第一個對象。 
•   如果最後一個運算數是 null,並且其他運算數值均爲 false,則返回 null。 
•   如果最後一個運算數是 NaN,並且其他運算數值均爲 false,則返回 NaN。 
•   如果某個運算數是 undefined,返回undefined。 

•           //1  false||o  ==> o
•           //2  true||o ==>true
•           //3  o||false == > o
•           //4  o||true == > o
•           //5 o1||o2   ==>o1
•           //6  null||false == > false
•           //7 null||true  ==> true
•           //8 null||undefined ==>undefined
•           //9 undefined||null ==>null

4.數學運算符
    +     :使用+法時, 如果相加的值包含字符串,會自動轉換爲字符串類型
    - * / :其他數學運算符中,字符串會自動轉換爲數字

5.關係運算符 > <
    1.兩個字符串的比較:字符串的比較規則=>asc碼的比對 
        alert("aa">"aaa"); //結果爲false
    2.字符串跟數字比較:將字符串轉換爲數字後進行比較
        alert("2">1);// "2" 轉換爲 數字2  結果爲true

6.等性運算符  
    == !=  :

    執行類型轉換的規則如下:
•   如果一個運算數是 Boolean 值,在檢查相等性之前,把它轉換成數字值。false 轉換成 0,true 爲 1。 
•   如果一個運算數是字符串,另一個是數字,在檢查相等性之前,要嘗試把字符串轉換成數字。 
•   如果一個運算數是對象,另一個是字符串,在檢查相等性之前,要嘗試把對象轉換成字符串。 
•   如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字。

在比較時,該運算符還遵守下列規則:
•   值 null 和 undefined 相等。 
•   在檢查相等性時,不能把 null 和 undefined 轉換成其他值。 
•   如果某個運算數是 NaN,等號將返回 false,非等號將返回 true。 
•   如果兩個運算數都是對象,那麼比較的是它們的引用值。如果兩個運算數指向同一對象,那麼等號返回 true,否則兩個運算數不等。

=== :
    全等於運算符不僅比較數值,還比較類型。類型不同的變量比較爲false.

7.三元運算符跟java中一樣。
8.賦值運算符跟java中一樣。

5.function對象

1.三種創建方法:   (1)function fun1(){};
                (2)var fun2 = function(a,b){}
                (3)var fun3 = new Function("alert('hello3');");

2.js中的函數在調用時,只看函數名稱.不看參數.也就是說可以給一個固定參數的的函數傳任意個參數。

3.函數裏面有一個arguments屬性,是一個數組,存儲的是傳入該函數的實參數。

4.ECMAScript 定義的屬性 length 聲明瞭函數期望的參數個數
Function 對象也有與所有對象共享的 valueOf() 方法和 toString() 方法。這兩個方法返回的都是函數的源代碼,在調試時尤其有用。

Grobal對象

Grobal對象是全局對象,所以在調用其方法是不需要直接寫函數名即可。

方法:
1.encodeURI/decodeURI 可以將中文Url編碼 例如:  湯姆=>%E6%B1%A4%E5%A7%86
2.encodeURIComponent/decodeURIComponent 轉換的範圍更大,
    包括一些url中的字符.    & : /
3.parseInt  轉換成整數  。 從左到右依次轉換.轉換到遇到不能轉換的字符爲止
  parseFloat 轉換成浮點數 。從左到右依次轉換,遇到字符停止或者遇到第二個小數點停止。
4.isNaN() 判斷一個值是否是NaN 
5.eval() 解析運行方法

三大包裝類

js中5個原始類型,有3個包裝類. => Number String Boolean
js中  有僞對象的概念.原始類型可以直接調用 對應包裝類型的屬性或函數.

Math對象

主要參考手冊使用。

Array對象

1.創建
    var arr1 = [1,2,3,4];
    var arr2 = new Array(1,2,3,4);
    var arr3 = new Array(4); // 如果調用數組構造,只傳遞一個參數,並且參數的值是數字.那麼該值將作爲數組初始化長度
2.對象的方法
    pop 彈棧  將0索引 的變量移除並返回
    push 壓棧 將一個值放入數組的0索引位置
    reverse 將數組反轉 => 會對數組本身順序進行調整

    sort 排序 => 默認會按照字符串比較的方式排序.而不是數字.
    sort可以傳入比較器,根據比較器的比較方法進行比較。 arr1.sort(comparator);
    比較器:
    比較器需要傳入兩個參數,他們是數組進行比較時,會傳入兩個值進行比較,
    大於0 表示 a>b , 等於0 相等 ,小於0 a<b
        function comparator(a,b){ 
        return a-b;
        };

3.注意:
    1 數組中元素的類型可以任意,也就是說一個數組中可以存儲任意類型的數據
    2 數組的長度是可以隨時變化的.

Date對象

參考手冊上使用。

RegExp對象

    1 創建
        參數1: 正則表達式
        參數2: 匹配模式. g: 全局  i: 忽略大小寫
    (1)var reg1 = new RegExp("e","gi");
    (2)var reg2 = /e/gi;

    2.方法
        test 方法 : 校驗 字符串是否能與正則表達式匹配 返回值爲boolean類型。


    3.String 與正則結合的 4個方法
    var str = "hello world";
    //split 切割
        alert(str.split(/o/g));
    //replace 替換
        alert(str.replace(/l/g, "a"));
    //match 匹配並獲得 , 找不到就返回null
        alert(str.match(/or/g));//or
    //search 查找索引 返回第一次出現該值的位置。
        alert(str.search(/l/g));//2

bom 之 window對象

方法:
    1.  open方法  => 打開一個新的窗口
    參數1: 打開的url
    參數2: 窗口名稱=> name屬性
    參數3: 窗口的特徵=> 長寬(其他屬性未必好使)...
    參數4: 是否將新窗口的地址加入到瀏覽器歷史記錄中
    返回值: 返回一個window對象. 新打開的窗口的window對象
        window.open(url, windowName, windowFeatures, optionalArg4)      
    2.close 方法  關閉當前窗口。
    3.定時器方法1
     setInterval  設置定時器
     clearInterval 清除定時器
    //-----------------------------------------------
    參數1: 可以是一段string, 內容是js代碼 也可以接受一個函數類型的對象
    參數2: 毫秒單位的時間
    返回值: 當前開啓的定時器id
    功能: 每個參數2毫秒,執行參數1代碼.
        window.setInterval("alert('abc');", 2000)
        window.setInterval(fun1, 2000) //fun1是一個函數
    //-----------------------------------------------
        window.clearInterval(id);

    定時器方法2  
         setTimeout  設置定時器
         clearTimeout 清除定時器
    //-----------------------------------------------
    參數1: 可以是一段string, 內容是js代碼 ,也可以接受一個函數類型的對象
    參數2: 毫秒單位的時間
    返回值: 當前開啓的定時器id
    功能:參數2毫秒後,執行參數1代碼(只執行一次).
    var id = window.setTimeout("alert('abc');", 2000);
    //-----------------------------------------------   
    window.clearTimeout(id);

bom 之 history對象

history.back() - 與在瀏覽器點擊後退按鈕相同 
history.forward() - 與在瀏覽器中點擊按鈕向前相同 
history.go(num) 方法可加載歷史列表中的某個具體的頁面。
    num=-1,0或者1 ,分別表示後退,本頁面和前進。

bom 之 location對象

assign() 加載新的文檔。 
reload() 重新加載當前文檔。 
replace() 用新的文檔替換當前文檔。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章