1. 程式人生 > >前端知識之JavaScript知識

前端知識之JavaScript知識

nth print輸出 lis ear ast per 英文字母 cstring sunday

前端之javaScript

  • JavaScript
    • html :展示文檔內容的
    • css:控制文檔的顯示效果
    • js:控制文檔的交互效果
      • 是腳本語言
      • 一種輕量級的編程語言
      • 可插入html頁面的編程代碼
  • js導入方式

    1. 直接用Script標簽內些代碼

      1. <script>
          // 在這裏寫你的JS代碼
        </script>
    2. 引入額外的js文件

      1. <script src="myscript.js"></script>
  • js語法基礎

    • 語句以;結束,不講究縮進
    • 變量聲明要加var關鍵字
    • $可以作為變量名
  • js中的數據類型

    • 數字(number)

      • NaN
      • parseInt
      • parseFloat
    • 字符串(string)

      • 字符串常用方法

        • 方法 說明
          .length 返回長度
          .trim() 移除空白
          .trimLeft() 移除左邊的空白
          .trimRight() 移除右邊的空白
          .charAt(n) 返回第n個字符
          .concat(value, ...) 拼接
          .indexOf(substring, start) 子序列位置
          .substring(from, to) 根據索引獲取子序列
          .slice(start, end) 切片
          .toLowerCase() 小寫
          .toUpperCase() 大寫
          .split(delimiter, limit) 分割
      • 字符串拼接一般使用+號進行連接

    • boolean(布爾值)

      • 0,‘’,null,undefined,NaN都是false
    • null

      • 表示值為空,多為手動將一個變量置為空
    • undefined

      • 表示變量只聲明,單沒有賦值
      • 函數沒有明確指定返回值,默認返回的就是undefined
    • object

      • 數組(Array)類似Python中的列表

        • var a1 = [11, 22, 33]
          console.log(a[1]);//輸出22
        • 常用方法

        • 方法 說明
          .length 數組的大小
          .push(ele) 尾部追加元素
          .pop() 獲取尾部的元素
          .unshift(ele) 頭部插入元素
          .shift() 頭部移除元素
          .slice(start, end) 切片
          .reverse() 反轉
          .join(seq) 將數組元素連接成字符串
          .concat(val, ...) 連接數組
          .sort() 排序
          .forEach() 將數組的每個元素傳遞給回調函數
          .splice() 刪除元素,並向數組添加新元素。
          .map() 返回一個數組元素調用函數處理後的值的新數組
    • 自定義對象(類似Python中的字典)

      • var o = {‘name‘: ‘王帥‘, ‘age‘: 18}
    • typeof(檢測類型)

      • typeof 變量名
  • 運算符

    • 算術運算符

      • +、-、*、%、++指加1、--指-1、
    • 比較運算符

      • >、<、!=、

      • == 弱等於指只判斷值是不是相等,與類型無關

        • 2 == ‘2‘//ture
      • === 強等於 即判斷值也判斷類型

    • 邏輯運算

      • && 與、|| 或,!非
      • Python中的非為not
    • 賦值運算

      • =、+=、-=、*=、/=
  • js流程控制

    • if-else、if-else if-else

      • var a = 10;
        if (a > 5){
          console.log("yes");//類似print輸出
        }else {
          console.log("no");
        }
    • for

      • for (var i=0;i<10;i++) {
          console.log(i);
        }
        //下列為死循環,了解
        for (;;){
            console.log("死循環");
        }
    • while

      • var i = 0;
        while (i < 10) {
          console.log(i);
          i++;
        }
    • switch

      • var day = new Date().getDay();//導入時間模塊
        switch (day) {
          case 0:
          console.log("Sunday");
          break;
          case 1:
          console.log("Monday");
          break;
        default:
          console.log("...")
        }
    • 三元運算

    • var a = 1;
      var b = 2;
      var c = a > b ? a : b
  • js函數

    • 基本函數的定義

      • 註意事項:
        • 參數:傳多,傳少都不會報錯,沒有傳值相當於傳了undefined
        • 返回值:如果返回有多個值,默認返回最後一個
    • 定義一個函數

      • //定義一個函數
        function f1() {
          console.log("Hello world!");
        }
        //執行這個函數
        f1()
    • 帶返回值的函數

      • function sum(a, b){
          return a + b;
        }
        sum(1, 2);  // 調用函數
    • 匿名函數

      • var sum = function(a, b){
          return a + b;
        }
        sum(1, 2);
    • 立即執行函數

      • (function(a, b){
          return a + b;
        })(1, 2);
  • js內置對象和方法

    • 創建對象

      • var person=new Object();  // 創建一個person對象
        person.name="Alex";  // person對象的name屬性
        person.age=18;  // person對象的age屬性
    • date 時間

      • //方法1:不指定參數
        var d1 = new Date();
        console.log(d1.toLocaleString());
        //方法2:參數為日期字符串
        var d2 = new Date("2004/3/20 11:12");
        console.log(d2.toLocaleString());
        var d3 = new Date("04/03/20 11:12");
        console.log(d3.toLocaleString());
        //方法3:參數為毫秒數
        var d3 = new Date(5000);
        console.log(d3.toLocaleString());
        console.log(d3.toUTCString());
        
        //方法4:參數為年月日小時分鐘秒毫秒
        var d4 = new Date(2004,2,20,11,12,0,300);
        console.log(d4.toLocaleString());  //毫秒並不直接顯示
        var d = new Date(); 
        //getDate()                 獲取日
        //getDay ()                 獲取星期
        //getMonth ()               獲取月(0-11)
        //getFullYear ()            獲取完整年份
        //getHours ()               獲取小時
        //getMinutes ()             獲取分鐘
        //getSeconds ()             獲取秒
        //getMilliseconds ()        獲取毫秒
        //getTime ()                返回累計毫秒數(從1970/1/1午夜)
    • json對象 與Python中類似

      • var str1 = ‘{"name": "Alex", "age": 18}‘;
        var obj1 = {"name": "Alex", "age": 18};
        // JSON字符串轉換成對象
        var obj = JSON.parse(str1); 
        // 對象轉換成JSON字符串
        var str = JSON.stringify(obj1);
    • RegExp正則對象

      • 註意事項:

        1. 正則表達式不能有空格
        2. 匹配模式,常用g(全局匹配,找到所以的匹配,而不是只找一個)和i模式(忽略大小寫)
      • //RegExp對象
        
        //創建正則對象方式1
        // 參數1 正則表達式(不能有空格)
        // 參數2 匹配模式:常用g(全局匹配;找到所有匹配,而不是在第一個匹配後停止)和i(忽略大小寫)
        
        // 用戶名只能是英文字母、數字和_,並且首字母必須是英文字母。長度最短不能少於6位 最長不能超過12位。
        
        // 創建RegExp對象方式(逗號後面不要加空格)
        var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");
        
        // 匹配響應的字符串
        var s1 = "bc123";
        
        //RegExp對象的test方法,測試一個字符串是否符合對應的正則規則,返回值是true或false。
        reg1.test(s1);  // true
        
        // 創建方式2
        // /填寫正則表達式/匹配模式(逗號後面不要加空格)
        var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/;
        
        reg2.test(s1);  // true
        
        
        // String對象與正則結合的4個方法
        var s2 = "hello world";
        
        s2.match(/o/g);         // ["o", "o"]             查找字符串中 符合正則 的內容
        s2.search(/h/g);        // 0                      查找字符串中符合正則表達式的內容位置
        s2.split(/o/g);         // ["hell", " w", "rld"]  按照正則表達式對字符串進行切割
        s2.replace(/o/g, "s");  // "hells wsrld"          對字符串按照正則進行替換
        
        // 關於匹配模式:g和i的簡單示例
        var s1 = "name:Alex age:18";
        
        s1.replace(/a/, "哈哈哈");      // "n哈哈哈me:Alex age:18"
        s1.replace(/a/g, "哈哈哈");     // "n哈哈哈me:Alex 哈哈哈ge:18"      全局匹配
        s1.replace(/a/gi, "哈哈哈");    // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18"  不區分大小寫
        
        
        // 註意事項1:
        // 如果regExpObject帶有全局標誌g,test()函數不是從字符串的開頭開始查找,而是從屬性regExpObject.lastIndex所指定的索引處開始查找。
        // 該屬性值默認為0,所以第一次仍然是從字符串的開頭查找。
        // 當找到一個匹配時,test()函數會將regExpObject.lastIndex的值改為字符串中本次匹配內容的最後一個字符的下一個索引位置。
        // 當再次執行test()函數時,將會從該索引位置處開始查找,從而找到下一個匹配。
        // 因此,當我們使用test()函數執行了一次匹配之後,如果想要重新使用test()函數從頭開始查找,則需要手動將regExpObject.lastIndex的值重置為 0。
        // 如果test()函數再也找不到可以匹配的文本時,該函數會自動把regExpObject.lastIndex屬性重置為 0。
        
        var reg3 = /foo/g;
        // 此時 regex.lastIndex=0
        reg3.test(‘foo‘); // 返回true
        // 此時 regex.lastIndex=3
        reg3.test(‘xxxfoo‘); // 還是返回true
        // 所以我們在使用test()方法校驗一個字符串是否完全匹配時,一定要加上^和$符號。
        
        // 註意事項2(說出來你可能不信系列):
        // 當我們不加參數調用RegExpObj.test()方法時, 相當於執行RegExpObj.test("undefined"), 並且/undefined/.test()默認返回true。
        var reg4 = /^undefined$/;
        reg4.test(); // 返回true
        reg4.test(undefined); // 返回true
        reg4.test("undefined"); // 返回true
    • Math對象(理解)

      • 調用方式

        • Math.abs(-5) 來調用
      • abs(x)      返回數的絕對值。
        exp(x)      返回 e 的指數。
        floor(x)    對數進行下舍入。
        log(x)      返回數的自然對數(底為e)。
        max(x,y)    返回 x 和 y 中的最高值。
        min(x,y)    返回 x 和 y 中的最低值。
        pow(x,y)    返回 x 的 y 次冪。
        random()    返回 0 ~ 1 之間的隨機數。
        round(x)    把數四舍五入為最接近的整數。
        sin(x)      返回數的正弦。
        sqrt(x)     返回數的平方根。
        tan(x)      返回角的正切。

前端知識之JavaScript知識