1. 程式人生 > 實用技巧 >python前端基礎知識----JavaScript

python前端基礎知識----JavaScript

python前端基礎知識----JavaScript

頂部

組成

ECMAScript 5.1 2011年 ---- ES5

一個完整的JavaScript由3個部分組成:

  • 核心(ECMAScript)
  • 文件物件模型(DOM)Document Object Model,整合js,css,html 。
  • 瀏覽器物件模型(BOM) Browser Object Model,真個和js和瀏覽器。

js引入

方式1:

<script>
    // js程式碼
    alert('澳門皇家賭場上線了!!!')
</script>

方式2:

<script src="test.js"></script>

註釋

// 這是單行註釋
/*
這是多行註釋
*/

結束符

以分號為結束,和縮排無關係。

JavaScript語言基礎

在谷歌瀏覽器的Console裡做js程式碼測試

  1. 變數名

    可以使用_,數字,字母,$組成,不能以數字開頭。

  2. 宣告變數使用 var 變數名。

    var a = 10;
    

    注意:

    ​ 區分大小寫

    ​ 駝峰命名規則,首字母大寫

    ​ 保留字不行

  3. 基礎資料型別

    動態型別

    var x; //此時x的值為undefined
    x = 1; // 此時為數字
    x = 'nihao'; //此時為字串
    

    數值(Number)

    ​ 不區分整形和浮點型

    var x = 1;
    typeof(x); //number型別
    

    字串(String)

    var c = 'alexsb';
    typeof(c); //'string'
    var c2 = 'alc';
    c1 = c + c2;  //alexsbalc  拼接
    

    ​ 常用方法

    方法 說明
    .length #不加括號的是屬性 返回長度
    .trim() #得到一個新值 移除空白
    .trimLeft() 移除左邊的空白
    .trimRight() 移除右邊的空白
    .charAt(n) #n類似索引,從0開始,超過最大值返回''空字串 返回第n個字元
    .concat(value, ...) #s1='hello';s.concat('xx');得到helloxx 拼接
    .indexOf(substring, start) #這個start是從索引幾開始找,沒有返回-1 子序列位置
    .substring(from, to) #不支援負數,所以一般都不用它,瞭解一下就行了 根據索引獲取子序列
    .slice(start, end) #var s1='helloworld';s1.slice(0,-5)看結果,就用它 切片
    .toLowerCase() #全部變小寫 小寫
    .toUpperCase() #全部變大寫 大寫
    .split(delimiter, limit)#分隔,s1.splite(' '),後面還可以加引數s1.split(' ',2),返回切割後的元素個數 分割
    var a = 'hello'
    undefined
    a
    "hello"
    a.length
    5
    var b = '    hello'
    undefined
    b
    "    hello"
    b.trim()
    "hello"
    a.charAt(3)
    "l"
    a.concat(b.trim())
    "hellohello"
    a.indexOf('e')
    1
    a.indexOf('1')
    -1
    a.indexOf('l')
    2
    a.indexOf('l', 2)
    2
    a.slice(2,4)
    "ll"
    a.toUpperCase()
    "HELLO"
    a.toLowerCase()
    "hello"
    a.split('e')
    (2)["h", "llo"]0: "h"1: "llo"length: 2
    

    型別轉換

    parseInt('123');  // 整型的123
    parseInt('123abc');  // 不報錯,也轉成整型的123
    parseInt('abc123'); // NaN number型別
    parseFloat("123.456");
    

    布林值

    var a = true;
    var b = false;
    ""(空字串)、0、null、undefined、NaN都是false。
    

    物件型別(object)

    JavaScript 中的所有事物都是物件:字串、數值、陣列、函式...此外,JavaScript 允許自定義物件。
    var s = new String('world');
    undefined
    typeof(s)
    "object"
    
  4. 複雜資料型別或者引用資料型別

    陣列Array

    建立陣列:
    var a = [11, 22, 33];
    undefined
    a
    (3)[11, 22, 33]
    var b = new Array([22, 33]);
    undefined
    b
    [Array(2)]
    typeof a
    "object"
    typeof b
    "object"
    

    陣列常用方法和屬性

    方法 說明
    .length 陣列的大小
    .push(ele) 尾部追加元素
    .pop() 獲取尾部的元素
    .unshift(ele) 頭部插入元素
    .shift() 頭部移除元素
    .slice(start, end) 切片
    .reverse() #在原陣列上改的 反轉
    .join(seq)#a1.join('+'),seq是連線符 將陣列元素連線成字串
    .concat(val, ...) #連個數組合並,得到一個新陣列,原陣列不變 連線陣列
    .sort() 排序
    .forEach() #講了函式再說 將陣列的每個元素傳遞給回撥函式
    .splice() #引數:1.從哪刪(索引), 2.刪幾個 3.刪除位置替換的新元素(可多個元素) 刪除元素,並向陣列新增新元素。
    .map() #講了函式再說 返回一個數組元素呼叫函式處理後的值的新陣列
    1.索引取值
        a
        (3)[11, 22, 33]
        a[1];
        22
    2. .length
    	a.length;
    	3
    3. 尾部追加元素
    	a.push('a');
    	(4)[11, 22, 33, 'a']
    4. 尾部刪除
    	a.pop();
    5. 頭部插入
    	a.unshift('aa');
    	(5)['aa', 11, 22, 33, 'a']
    6. 頭部刪除
    	a.shift();
    	(4)['aa', 11, 22, 33]
    7. .sort()排序
    	把元素轉換成字串,然後按ASCII碼大小排序
    

    自定義物件

    var a = {'name':'li', 'age':22};
    undefined
    a
    {name: "li", age: 22}
    a["age"]
    22
    // for 迴圈遍歷自定義物件
    for (var i in a){
        console.log(a[i]);
    }
    VM1550:2 li
    VM1550:2 22
    
  5. 運算子

    算術運算子

    + - * / % ++ --  i++,是i自加1,i--是i自減1   i++的這個加1操作優先順序低,先執行邏輯,然後再自加1,而++i,這個加1操作優先順序高,先自加1,然後再執行程式碼後面的邏輯
    

    比較運算子

    // = < <= != == === !==
    // == 弱等於(不比較資料型別) === 強等於 比較資料型別
    var a = 10
    undefined
    var b = '10'
    undefined
    a == b
    true
    a === b
    false
    a != b
    false
    a !== b
    true
    

    邏輯運算子

    && || !  #and,or,非(取反)!null返回true
    

    賦值運算子

    = += -= *= /=  #n += 1其實就是n = n + 1
    
  6. 流程控制

    if-else

    var a = 10;
    if (a > 5){
      console.log("yes");
    }else {
      console.log("no");
    }
    

    if-else if-else # 多條件

    var a = 10;
    if (a > 5){
      console.log("a > 5");
    }else if (a < 5) {
      console.log("a < 5");
    }else {
      console.log("a = 5");
    }
    

    switch切換

    var a = 10;
    switch(a){
        case 9:
            console.log('good');
        break;
        case 10:
            console.log('perfact');
        break;
    }
    // perfact
    

    for迴圈

    for (var i=0;i<10;i++) {  //就這麼個寫法,宣告一個變數,變數小於10,變數每次迴圈自增1,for(;;){console.log(i)};這種寫法就是個死迴圈,會一直迴圈,直到你的瀏覽器崩了,就不工作了,回頭可以拿別人的電腦試試~~
      console.log(i);
    }迴圈陣列:var l2 = ['aa','bb','dd','cc']方式1for (var i in l2){   console.log(i,l2[i]);}方式2for (var i=0;i<l2.length;i++){  console.log(i,l2[i])}迴圈自定義物件:var d = {aa:'xxx',bb:'ss',name:'小明'};for (var i in d){    console.log(i,d[i],d.i)  #注意迴圈自定義物件的時候,列印鍵對應的值,只能是物件[鍵]來取值,不能使用物件.鍵來取值。}
    

    while迴圈

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

    三元運算子

    var a = 1;
    var b = 2;
    var c = a > b ? a : b //如果a>b這個條件成立,就把冒號前面的值給c,否則把冒號後面的值給c   //python中的:a = x if x>y else y
    
  7. 函式

    函式的定義

    // 普通函式定義
    function f1() {
      console.log("Hello world!");
    }
    
    // 帶引數的函式
    function f2(a, b) {
      console.log(arguments);  // 內建的arguments物件
      console.log(arguments.length);
      console.log(a, b);
    }
    
    // 帶返回值的函式
    function sum(a, b){
      return a + b;  //在js中,如果你想返回多個值是不行的,比如return a ,b;只能給你返回最後一個值,如果就想返回多個值,你可以用陣列包裹起來 return [a,b];
    }
    sum(1, 2);  // 呼叫函式  sum(1,2,3,4,5)引數給多了,也不會報錯,還是執行前兩個引數的和,sum(1),少引數或者沒引數也不報錯,不過返回值就會是NAN
    
    // 匿名函式方式,多和其他函式配合使用,後面我們就會用到了
    var sum = function(a, b){  //在es6中,使用var,可能會飄黃,是因為在es6中,建議你使用let來定義變數,不過不影響你使用
      return a + b;  
    }
    sum(1, 2);
    
    // 立即執行函式,頁面載入到這裡,這個函式就直接執行了,不需要被呼叫執行
    (function(a, b){
      return a + b;
    })(1, 2);  //python中寫可以這麼寫:ret=(lambda x,y:x+y)(10,20) 然後print(ret)
    

    函式的區域性變數和全域性變數

    • 區域性變數

      在JavaScript函式內部宣告的變數(使用 var)是區域性變數,所以只能在函式內部訪問它(該變數的作用域是函式內部)。只要函式執行完畢,本地變數就會被刪除。

    • 全域性變數

      在函式外宣告的變數是全域性變數,網頁上的所有指令碼和函式都能訪問它。

    • 變數的生存週期

      • JavaScript變數的生命期從它們被宣告的時間開始。
      • 區域性變數會在函式執行以後被刪除。
      • 全域性變數會在頁面關閉後被刪除。

    作用域

    首先在函式內部查詢變數,找不到則到外層函式查詢,逐步找到最外層。

回到頂部