Web前端----原生JavaScript

Web前端筆記

第六部分:JavaScript

1. JavaScript介紹

  • JavaScript是運行在瀏覽器端的腳步語言,
    JavaScript直接有瀏覽器解釋執行不需要編譯
    JavaScript主要解決的是前端與用戶交互的問題,
    包括使用交互與數據交互。 JavaScript是瀏覽器解釋執行的,
    前端腳本語言還有JScript(微軟,IE獨有),ActionScript( Adobe公司,需要插件)等。

  • 前端三大塊
    1、HTML:頁面結構
    2、CSS:頁面表現:元素大小、顏色、位置、隱藏或顯示、部分動畫效果
    3、JavaScript:頁面行爲:部分動畫效果、頁面與用戶的交互、頁面功能

  • Javascript組成
    1、ECMAscript javascript的語法(變量、函數、循環語句等語法)
    2、DOM 文檔對象模型 操作html和css的方法(修改html內容,css的樣式等)
    3、BOM 瀏覽器對象模型 操作瀏覽器的一些方法(瀏覽器彈出彈框,定時器等)

  • JavaScript格式
    js對縮進沒有要求,每一句js代碼使用分號分開即可
    代碼內部的function函數,if——else調節語句等等使用大括號包裹起來的內容,後面不寫分號“;”
    縮進沒有要求,可以寫在一行,實際書寫縮進是爲了代碼整潔,符合規範

  • JavaScript註釋
    1、一條javascript語句應該以“;”結尾
    2、多個相同變量,寫在一起,使用逗號“,”
    3、// 單行註釋,兩個斜線
    多行註釋,類似css樣式的註釋
    /*
    xxx
    xxx
    */

  • JavaScript運行:
    js代碼一般都是引入到HTML或者PHP頁面,然後使用瀏覽器運行
    網頁代碼從上往下依次運行,js代碼依次運行,每刷新一次網頁
    就會執行一行js代碼

2. JavaScript嵌入頁面的方式

  • 和css一樣,有3中引入方式
    1、行間事件(主要用於事件)

    2、頁面script標籤嵌入

3. 變量

  • JavaScript 是一種弱類型語言,javascript的變量類型由它的值來決定。
    定義變量需要用關鍵字 ‘var’
    var iNum = 123;
    var sTr = ‘asd’;
    //同時定義多個變量可以用","隔開,公用一個‘var’關鍵字
    var iNum = 45,sTr=‘qwe’,sCount=‘68’;

  • 變量類型

    • 5種基本數據類型:
      1、number 數字類型
      2、string 字符串類型
      3、boolean 布爾類型 true 或 false
      4、undefined undefined類型,變量聲明未初始化(只定義一個變量,但是不賦值),它的值就是undefined
      5、null null類型,表示空對象,如果定義的變量將來準備保存對象,可以將變量初始化爲null,在頁面上獲取不到對象,返回的值就是null
    • 1種複合類型:
      object
  • 變量、函數、屬性、函數參數命名規範
    1、區分大小寫
    2、第一個字符必須是字母、下劃線(_)或者美元符號($)
    3、其他字符可以是字母、下劃線、美元符或數字

  • 匈牙利命名風格:
    對象o Object 比如:oDiv
    數組a Array 比如:aItems
    字符串s String 比如:sUserName
    整數i Integer 比如:iItemCount
    布爾值b Boolean 比如:bIsComplete
    浮點數f Float 比如:fPrice
    函數fn Function 比如:fnHandler
    正則表達式re RegExp 比如:reEmailCheck
    指定變量類型,變量名使用大小寫駝峯命名

4. js獲取元素方法1

  • 可以使用內置對象document上的getElementById方法來獲取頁面上設置了id屬性的元素,
    獲取到的是一個html對象,然後將它賦值給一個變量

4.1. js操作元素屬性

  • 獲取的頁面元素,就可以對頁面元素的屬性進行操作,屬性的操作包括屬性的讀和寫。

  • 操作屬性的方法
    1、“.” 操作 .屬性name 和句點法只用一樣

      var oDiv1 = document.getElementById('div1');
      
      oDiv1.style.color = 'red';
      oDiv1.style.fontSize = '32px';
    

    2、“[ ]”操作 將元素內置屬性使用變量替換,就需要使用

      var sMystyle = 'color';
      var sValue = 'red';
      
      oDiv.style.sMystyle = sValue;    該句不會產生任何效果
      oDiv.style.color = sValue;       該句可以修改屬性
      
      /*元素內置屬性用變量代替,就需要使用[]操作*/
      oDiv.style[sMystyle] = sValue
      - 參考實例
    
  • 屬性寫法
    1、html的屬性和js裏面屬性寫法一樣
    2、“class” 屬性寫成 “className”(特殊地方)
    3、“style” 屬性裏面的屬性,有橫槓的改成駝峯式,比如:“font-size”,改成”style.fontSize”

5. js函數

  • 函數使用function來聲明(python中是define)
    function fnChange(){
    alert(‘hello world!’);
    }

    • ()可以傳入參數
    • 函數功能代碼放在{}裏面,不同語句使用分號;斷開
    • 縮進沒有要求,但是寫上縮進便於代碼規範閱讀
  • 變量與函數預解析
    JavaScript解析過程分爲兩個階段,先是編譯階段,然後執行階段,
    在編譯階段會將function定義的函數提前,並且將var定義的變量聲明提前,
    將它賦值爲undefined。
    注意區別:
    - 變量只預解析變量聲明,但是不會賦實際值,賦值是undefined
    - 函數預解析聲明和函數定義都會提前,因此可以直接使用函數的功能

  • 提取行間事件
    本來在html行間調用的js事件可以提取到javascript中調用,從而做到結構與行爲分離。
    js代碼都放在script標籤裏面

  • 匿名函數
    定義的函數可以不給名稱,這個叫做匿名函數,類似python中lambda匿名錶達式
    可以將匿名函數直接賦值給元素綁定的事件來完成匿名函數的調用。

  • 函數’return’關鍵字
    函數中’return’關鍵字的作用:
    1、返回函數執行的結果
    2、結束函數的運行
    3、阻止默認行爲

  • 參考實例

6. js條件語句

  • 通過條件來控制程序的走向,就需要用到條件語句
    運算符
    1、算術運算符: +(加)、 -(減)、 *(乘)、 /(除)、 %(求餘)
    2、賦值運算符:=、 +=、 -=、 *=、 /=、 、++(自己上面加1,參考賦值實例)
    3、條件運算符:=、>、>=、<、<=、!=、!==、&&(而且)、||(或者)、!(否)
    ==默認會把不同類型轉換爲相同的類型,然後再比較
    如果一個字符串‘2’和數字2,就會判斷爲true
    =等效於,但是不會轉換類型,修正
    的bug
    !=和!也是一樣
    因此,推薦多加一個等號,pycharm中
    會給語法提示

  • 條件語句
    if -----
    else -----

  • 多重條件語句
    if -----
    else if -----
    else if -----
    else -----

  • switch語句
    多重if else語句可以換成性能更高的switch語句

7. js的數組

  • 數組就是一組數據的集合,javascript中,數組裏面的數據可以是不同類型的。

  • 類似python的列表,其中大多數方法和python中也相同,少數不一樣

  • 定義數組的方法
    //對象的實例創建
    var aList = new Array(1,2,3);

    //直接量創建(推薦)
    var aList2 = [1,2,3,‘asd’];

  • 操作數組中數據的方法
    1、獲取數組的長度:aList.length;
    var aList = [1,2,3,4];
    alert(aList.length); // 彈出4

    2、用下標操作數組的某個數據:aList[0];
    var aList = [1,2,3,4];
    alert(aList[0]); // 彈出1

    3、join() 將數組成員通過一個分隔符合併成字符串
    var aList = [1,2,3,4];
    alert(aList.join(’-’)); // 彈出 1-2-3-4
    alert(aList); // 彈出1,2,3,4
    注意:數組的其它操作都會改變原始數組,但是join返回一個字符串,原始數組不變

    4、push() 和 pop() 從數組最後增加成員或刪除成員
    var aList = [1,2,3,4];
    aList.push(5);
    alert(aList); //彈出1,2,3,4,5
    aList.pop();
    alert(aList); // 彈出1,2,3,4

    5、unshift()和 shift() 從數組前面增加成員或刪除成員
    var aList = [1,2,3,4];
    aList.unshift(5);
    alert(aList); //彈出5,1,2,3,4
    aList.shift();
    alert(aList); // 彈出1,2,3,4

    6、reverse() 將數組反轉
    var aList = [1,2,3,4];
    aList.reverse();
    alert(aList); // 彈出4,3,2,1

    7、indexOf() 返回數組中元素第一次出現的索引值(利用該屬性可以去除掉重複的元素)
    var aList = [1,2,3,4,1,3,4];
    alert(aList.indexOf(1));

    8、splice() 在數組中增加或刪除成員
    var aList = [1,2,3,4];
    aList.splice(2,1,7,8,9); //從第2個元素開始,刪除1個元素,然後在此位置增加’7,8,9’三個元素
    alert(aList); //彈出 1,2,7,8,9,4

  • 多維數組
    多維數組指的是數組的成員也是數組的數組。
    var aList = [[1,2,3],[‘a’,‘b’,‘c’]];
    alert(aList[0][1]); //彈出2;
    批量操作數組中的數據,需要用到循環語句

    var aList = [[1,2,3],[‘a’,‘b’,‘c’],[4,5,6]];

     alert(aList[0].length); //第一行的長度3
     alert(aList[2].length); //第一行的長度3
    
     /*通過行列取出元素,類似numpy中數組*/
     /*也可以把大元素看成第一個座標,大元素中的元素看做第二個座標*/
     alert(aList[0][0]); //彈出1
     alert(aList[1][1]); //彈出b
     alert(aList[2][2]); //彈出6   
    

8. 循環語句

  • for循環
    for(var i=0;i<len;i++)
    {

    }

  • while循環
    var i=0;
    while(i<8){

    i++;
    }

9. 獲取元素方法2,使用標籤名

  • 可以使用內置對象document上的getElementsByTagName方法來獲取頁面上的某一種標籤,
    獲取的是一個選擇集,不是數組,但是可以用下標的方式操作選擇集裏面的標籤元素。
    • 參考001文件夾中008案例

10. 字符串處理

  • 字符串轉換及處理

    1、字符串合併操作:“ + ”
    “+” 有特殊情況,看下面例子
    var iNum01 = 12;
    var iNum02 = 24;
    var sNum03 = ‘12’;
    var sTr = ‘abc’;
    alert(iNum01+iNum02); //彈出36
    alert(iNum01+sNum03); //彈出1212 數字和字符串相加等同於字符串相加
    alert(sNum03+sTr); // 彈出12abc

    2、parseInt() 將數字字符串轉化爲整數
    var sNum01 = ‘12’;
    var sNum02 = ‘24’;
    var sNum03 = ‘12.32’;
    alert(sNum01+sNum02); //彈出1224
    alert(parseInt(sNum01)+parseInt(sNum02)) //彈出36
    alert(sNum03) //彈出數字12 將字符串小數轉化爲數字整數

    3、parseFloat() 將數字字符串轉化爲小數
    var sNum03 = ‘12.32’
    alert(parseFloat(sNum03)); //彈出 12.32 將字符串小數轉化爲數字小數

    4、split() 把一個字符串分隔成字符串組成的數組
    var sTr = ‘2017-4-22’;
    var aRr = sTr.split("-");
    var aRr2= sTr.split("");

      alert(aRr);  //彈出['2017','4','2']
      alert(aRr2);  //彈出['2','0','1','7','-','4','-','2','2']
    

    5、charAt() 獲取字符串中的某一個字符
    var sId = “#div1”;
    var sTr = sId.charAt(0);
    alert(sTr); //彈出 #

    6、indexOf() 查找字符串是否含有某字符
    var sTr = “abcdefgh”;
    var iNum = sTr.indexOf(“c”);
    alert(iNum); //彈出2 彈出的是字符串對應的索引值,不存在就是彈出-1

    7、substring() 截取字符串 用法: substring(start,end)(不包括end)
    var sTr = “abcdefghijkl”;
    var sTr2 = sTr.substring(3,5);
    var sTr3 = sTr.substring(1);

      alert(sTr2); //彈出 de
      alert(sTr3); //彈出 bcdefghijkl
    

    8、toUpperCase() 字符串轉大寫
    var sTr = “abcdef”;
    var sTr2 = sTr.toUpperCase();
    alert(sTr2); //彈出ABCDEF

    9、toLowerCase() 字符串轉小寫
    var sTr = “ABCDEF”;
    var sTr2 = sTr.toLowerCase();
    alert(sTr2); //彈出abcdef

11. 調試程序方法

  • 調試程序的方法
    1、alert 運行到該處函數會暫停運行,必須點擊頁面確定,然後繼續向下運行
    2、console.log 函數一直向下運行,瀏覽器console中查看結果
    // 火狐控制檯裏面可以直接訪問script下面的全局變量,但是局部變量訪問不到
    3、document.title 改變網頁標題的值,調試的變量直接替換了網頁的標題,方法查看
    • 參考實例

12. 變量作用域

  • 變量作用域指的是變量的作用範圍,javascript中的變量分爲全局變量和局部變量。
    1、全局變量:在函數之外定義的變量,爲整個頁面公用,函數內部外部都可以訪問。
    2、局部變量:在函數內部定義的變量,只能在定義該變量的函數內部訪問,外部無法訪問。
    • 函數尋找變量先在函數內部找,找不到再去函數外部找
    • python函數內部定義一個變量爲全局變量需要使用global聲明
    • js的全局變量一個地方修改,其它地方使用了該變量也已經發生變化了,全局變量很危險
    • 參考實例

13. 封閉函數

  • 封閉函數是javascript中匿名函數的另外一種寫法,創建一個一開始就執行而不用命名的函數

  • 爲什麼需要封閉函數
    存在一種情況,HTML開頭引入了js文件
    HTML中的js代碼又定義了一些變量,這些變量如果js文件中已經存在了
    就會直接將其覆蓋,導致重大錯誤,此時,封閉函數就派上用場了

  • 封閉函數的好處
    封閉函數可以創造一個獨立的空間,在封閉函數內定義的變量和函數不會影響外部同名的函數和變量,
    可以避免命名衝突,在頁面上引入多個js文件時,用這種方式添加js文件比較安全
    網站後期增加新的功能,直接使用封閉函數,可以避免對之前已有變量和功能的影響

    • 封閉函數定義和執行一步完成,具體功能的執行也是寫在封閉函數內部

14. js常用內置對象

  • 1、document
    document.getElementById //通過id獲取元素
    document.getElementsByTagName //通過標籤名獲取元素
    document.referrer //獲取上一個跳轉頁面的地址(需要服務器環境)
    • 直接瀏覽器查看元素console控制檯輸入document.referrer就可以查看跳轉前的網址
  • 2、location
    window.location.href //獲取或者重定url地址
    window.location.search //獲取地址參數部分
    window.location.hash //獲取頁面錨點或者叫哈希值

15. Math

  • Math是內置的一個實例對象,有很多數學方法
    Math.random 獲取0-1的隨機數
    Math.floor 向下取整 5.6 就是5 沒有四捨五入,直接向上或向下
    Math.ceil 向上取整 5.6 就是6
    Math.PI 獲取圓周率3.1415…
    可以直接使用瀏覽器的console輸入Math,展開查看詳細功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章