日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

前端自学学习笔记——JavaScript

發布時間:2023/12/18 javascript 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端自学学习笔记——JavaScript 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第1章 JavaScript介紹

文章目錄

    • 第1章 JavaScript介紹
      • 1.1 JavaScript編程語言
      • 1.2 ECMAScript 與 JavaScript
      • 1.3 javaScript和HTML、CSS
      • 1.4 JS學習概況
    • 第2章 入門
      • 2.1 如何寫一段JS代碼并運行
      • 2.3 變量
        • 2.3.1 什么是變量
        • 2.3.2 如何使用變量
        • 2.3.3 變量的命名規則和規范
        • 2.3.4 案例
      • 2.4 數據類型
        • 2.4.1 簡單數據類型
          • 獲取變量的類型
          • Number類型
          • String類型
          • Boolean類型
          • Undefined和Null
        • 2.4.2 復雜數據類型
      • 2.5 注釋
    • 第3章 數據類型轉換
      • 3.1 轉換成字符串類型
      • 3.2 轉換成數值類型
      • 3.3 轉換成布爾類型
    • 第4章 操作符
      • 4.1 算術運算符
      • 4.2 一元運算符 *
      • 4.3 邏輯運算符(布爾運算符) *
      • 4.4 關系運算符(比較運算符)
      • 4.5 賦值運算符
      • 4.6 運算符的優先級 *
    • 第5章 流程控制
      • 5.1 分支結構
          • if語句
          • 三元運算符
          • switch語句
      • 5.2 循環結構
        • 5.2.1 while語句
        • 5.2.2 do...while語句
        • 5.2.3 for語句
        • 5.2.4 continue和break
    • 第6章 JS中特殊的對象-數組
      • 6.1 數組的創建
      • 6.2 獲取數組元素
      • 6.3 遍歷數組
      • 6.4 為數組修改添加元素
      • 6.5 數組操作案例
    • 第7章 函數
      • 7.1 函數的聲明及調用
        • 7.1.1 聲明
        • 7.1.2 調用
      • 7.2 參數
      • 7.3 函數的返回值
      • 7.4 函數相關的其它事情
        • 7.4.1 匿名函數與自調用函數
        • 7.4.2 函數本身也是值 *
    • 第8章 作用域與JS代碼的運行 *
      • 8.1 全局變量和局部變量 *
      • 8.2 變量提升
      • 8.3 JS代碼的運行 *
      • 8.4 詞法作用域
      • 8.5 作用域鏈 *
    • 第9章 對象(Object)
      • 9.1 什么是對象
      • 9.2 JavaScript中的對象
      • 9.3 如何得到一個對象
      • 9.4 this 的指向
      • 9.5 對象的使用
    • 第10章 標準庫對象(內置對象)
      • 10.1 Math對象
        • 10.1.1 使用
        • 10.1.2 案例
      • 10.2 Date對象(構造函數)
        • 10.2.1 使用
        • 10.2.2 案例
      • 10.3 Array對象
        • 10.3.1 數組對象的屬性及方法
        • 10.3.2 方法和屬性
      • 10.4 String對象
      • 10.5 包裝對象
    • 課外知識:
      • JS代碼規范&編程風格
      • 調試工具

1.1 JavaScript編程語言

JavaScript一種輕量級的腳本語言,也是一種嵌入式(embedded)語言,是一種 對象模型 語言,簡稱 JS
JavaScript 的核心語法部分(語言本身)很精簡,只包括兩個部分:
1:基本的語法構造(比如操作符、控制結構、語句);

2:標準庫(就是一系列具有各種功能的對象比如Array、Date、Math等)。

想要實現其他復雜的操作和效果,都要依靠宿主環境提供API,目前,已經嵌入 JavaScript 的宿主環境有多種,
最常見的環境就是 瀏覽器,另外還有服務器環境(操作系統)

JavaScript現在的意義(應用場景)

JavaScript 發展到現在幾乎無所不能。

  • 網頁特效 *
  • 服務端開發(Node.js) *
  • 命令行工具(Node.js)
  • 桌面程序(Electron)
  • App(Cordova)
  • 控制硬件-物聯網(Ruff)
  • 游戲開發(cocos2d-js)
  • 1.2 ECMAScript 與 JavaScript

    ECMA 歐洲計算機制造聯合會;
    ECMAScript 是一套標準,定義了一種語言的標準,規定了基本語法、數據類型、關鍵字、具體API的設計規范等,解析引擎設計的參考標準,但與具體實現無關;

    1.3 javaScript和HTML、CSS

  • HTML:提供網頁的結構,提供網頁中的內容
  • CSS: 用來樣式排版、美化網頁
  • JavaScript: 可以用來控制網頁內容,給網頁增加動態的效果
  • 1.4 JS學習概況

    我們在學習JS時,需要學習的內容分為兩部分,語言結構宿主環境提供的API;

    語言結構部分主要時語言規則及內置對象(標準庫對象);

    而宿主環境的API,根據宿主環境不同而不同,以瀏覽器為例,最常見的三個類型:
    瀏覽器控制類、DOM操作類、網絡控制類;

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qmYlMxsr-1651933582283)(./img/1.1.5.png)]

    總結:

    JavaScript編程語言簡稱 JS,是一種嵌入式的腳本語言,應用范圍及其廣泛,由布蘭登-艾奇開發,在20+年的發展中歷經滄桑,學習 JS 分為語言規則及宿主環境兩部分;

    第2章 入門

    2.1 如何寫一段JS代碼并運行

    • 寫在行內
    1.html: <input type="button" value="按鈕" onclick="alert('Hello World')" />
    • 寫在script標簽中 *
    2.html: <head><script>alert('Hello World!');</script> </head>
    • 寫在外部js文件中,在頁面引入
    3.html: <script src="main.js"></script> main.js:alert('Hello World!');

    注意點: 引用外部js文件的 script 標簽中不可以再寫JavaScript代碼,即使寫了也不會執行,沒有作用

    溫馨提示:

    下面開始進入 JS 基礎語法的學習,非??菰?#xff0c;別睡著……

    音樂很優美很動聽,但學五線譜真的是乏味無聊痛苦不堪;

    2.3 變量

    2.3.1 什么是變量

    • 什么是變量

      變量是計算機內存中存儲數據的標識符,根據變量名稱可以獲取到內存中存儲的數據

    • 為什么要使用變量

      使用變量可以方便的獲取或者修改內存中的數據

    變量就是存儲數據的容器;

    2.3.2 如何使用變量

    • var聲明變量
    var age;
    • 變量的賦值
    var age; age = 18;
    • 同時聲明多個變量
    var age, name, sex; age = 10; name = 'zs';
    • 同時聲明多個變量并賦值
    var age = 10, name = 'zs';

    2.3.3 變量的命名規則和規范

    • 規則 - 必須遵守的,不遵守會報錯

      • 由字母、數字、下劃線、$符號組成,且不能以數字開頭
      • 不能是關鍵字和保留字,例如:for、while。
      • 區分大小寫
    • 規范 - 建議遵守的,不遵守不會報錯

      • 變量名必須有意義
      • 遵守駝峰命名法。(首字母小寫,后面單詞的首字母需要大寫。例如:userName、userPassword)
    • 下面哪些變量名不合法

      a 1 age18 18age name $ $name _sex &sex theworld theWorld

    2.3.4 案例

  • 交換兩個變量的值
  • var a = '1'; var b = '2'; // 借助第三個變量 var c = a; a=b; b=c; console.log(a,b);
  • 不使用臨時變量,交換兩個數值變量的值
  • //第二種方式 var num1 = 10; var num2 = 20; //計算的方式:累加,然后相減 num1 = num1 + num2;//num1的結果是30 num2 = num1 - num2;//num2的結果是10 num1 = num1 - num2;//num1的結果是20 console.log(num1); console.log(num2);

    2.4 數據類型

    2.4.1 簡單數據類型

    Number、String、Boolean、Undefined、Null

    獲取變量的類型

    typeof

    var age = 18; console.log(typeof age); // 'number'

    檢測數據的數據類型

    instanceof 用于檢測某個數據是否為某種數據類型,返回一個布爾值

    var arr = [1,2,3]; console.log(arr instanceof Array)//true
    Number類型
    • 數值字面量:數值的固定值的表示法

      110 1024 60.5

    • 浮點數

      • 浮點數的精度問題
    浮點數var n = 5e-324; // 科學計數法 5乘以10的-324次方 浮點數值的最高精度是 17 位小數,但在進行算術計算時其精確度遠遠不如整數var result = 0.1 + 0.2; // 結果不是 0.3,而是:0.30000000000000004console.log(0.07 * 100);不要判斷兩個浮點數是否相等
    • 數值范圍

      最小值:Number.MIN_VALUE// 這個值為: 5e-324 5乘以10的-324次方 最大值:Number.MAX_VALUE// 這個值為: 1.7976931348623157e+308 無窮大:Infinity 無窮小:-Infinity
    String類型

    ‘abc’ “abc”

    • 字符串字面量

      ‘程序猿’,‘程序媛’, “黑馬程序猿”

      思考:如何打印以下字符串。
      我是一個 “正直” 的人
      我很喜歡 "黑馬 ‘程序猿’ "

    • 轉義符

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-d6Fie2OC-1651933582285)(./img/1498289626813.png)]

    var s = '我很喜歡 \"黑馬 \'程序猿\' \"'; console.log(s);
    • 字符串長度

    length屬性用來獲取字符串的長度

    var str = '黑馬程序猿 Hello World'; console.log(str.length);
    • 字符串拼接

    字符串拼接使用 + 連接

    console.log(11 + 11); console.log('hello' + ' world'); console.log('100' + '100'); console.log('11' + 11); console.log('male:' + true);
  • 兩邊只要有一個是字符串,那么+就是字符串拼接功能。
  • 兩邊如果都是數字,那么就是算術功能。
  • 從前往后進行運算,如果兩個變量為數值類型那么加號就作為數學運算符,直到遇到一個字符串,此后的加號都作為字符串拼接。
  • Boolean類型
    • Boolean字面量: true和false,區分大小寫
    • 計算機內部存儲:true為1,false為0
    Undefined和Null
  • undefined表示一個聲明了沒有賦值的變量,變量只聲明的時候值默認是undefined
  • null表示一個空,變量的值如果想為null,必須手動設置
  • 注:

  • isNaN()用于判斷一個變量是否為非數字。
  • Undefine + 數字 = NaN ; null + 數字 = 數字。
  • null返回的是一個Object類型數據
  • NaN即 not a number。
  • 注: 關于undefined和null是一個面試中很容易被問到的問題,后面的高級部分詳解;

    2.4.2 復雜數據類型

    ? Object

    題外話

    如何使用谷歌瀏覽器,快速的查看數據類型?

    字符串的顏色是黑色的,數值類型是藍色的,布爾類型也是藍色的,undefined和null是灰色的

    console.log('ss',2,null,undefined,true);

    2.5 注釋

    被注釋的內容是不執行的,不管什么內容都不會運行;

    單行注釋

    用來描述下面一個或多行代碼的作用

    // 這是一個變量 var name = 'hm';

    多行注釋

    用來注釋多條代碼

    /* var age = 18; var name = 'zs'; console.log(name, age); */

    總結:

    JS代碼的書寫,變量的聲明方式,數據類型,注釋;

    第3章 數據類型轉換

    3.1 轉換成字符串類型

    • toString()

      var num = 5; console.log(num.toString());
    • String()

      var s = null; console.log(s.toString()); console.log(String(s));// String()函數存在的意義:有些值沒有toString(), // 這個時候可以使用String()。比如:undefined和null
    • 拼接字符串方式

      num + “”,當 + 兩邊一個操作符是字符串類型,一個操作符是其它類型的時候,會先把其它類型轉換成字符串再進行字符串拼接,返回字符串

    3.2 轉換成數值類型

    • Number()

      var a = Number('1'); var b = Number(1); var c = Number('c'); var d = Number(null); var e = Number(undefined);console.log(a,b,c,d,e); // 1 1 NaN 0 NaN// Number()可以把任意值轉換成數值,如果要轉換的字符串中有一個不是數值的字符,返回NaN(not a number)
    • parseInt()

      var a = parseInt('1.2df'); var b = parseInt(1); var c = parseInt('c12'); var d = parseInt(null); var e = parseInt(undefined);console.log(a,b,c,d,e); //1 1 NaN NaN NaN// 如果第一個字符是數字會解析,直到遇到非數字結束 // 如果第一個字符不是數字或者符號就返回NaN(not a number)
    • parseFloat()

      var a = parseFloat('1.2df'); var b = parseFloat('1.3.4'); var c = parseFloat('c12'); var d = parseFloat(null); var e = parseFloat(undefined);console.log(a,b,c,d,e); //1.2 1.3 NaN NaN NaN// parseFloat() 把字符串轉換成浮點數 // parseFloat()和parseInt非常相似, // 不同之處在與parseFloat會解析第一個 . 遇到第二個.或者非數字結束 // 如果解析的內容里只有整數,解析成整數
    • +,-,-0 等運算

      var str = '500'; console.log(+str); // 取正 console.log(-str); // 取負 console.log(str - 0);

    注:

    在實際開發中,將一種類型轉變為字符串類型通常使用‘+’(加一個空串),而將一種類型轉變為數值類型通常使用‘-’(減一個0)。

    3.3 轉換成布爾類型

    • Boolean()
    var a = Boolean('0'); var b = Boolean(0); var c = Boolean('1'); var d = Boolean(null); var e = Boolean(undefined); var f = Boolean(NaN);console.log(a,b,c,d,e,f); //true false true false false false// 0、''(空字符串) 、null、 undefined 、NaN 會轉換成false 其它都會轉換成true

    總結:

    字符串、數值及不類型的數據類型轉換

    第4章 操作符

    表達式:值和操作符,運算會有一個結果;

    同時,表達式中的每個數值及部分表達式,又稱為 子表達式

    4.1 算術運算符

    + - * / %

    4.2 一元運算符 *

    一元運算符:只有一個操作數的運算符,一元運算會直接修改原始變量的數據;

    5 + 6 兩個操作數的運算符 二元運算符

    ++ 自身加 (自增)

    – 自身減 (自減)

    • 前置++(先加1,后運算)

      var num1 = 5; ++ num1; var num2 = 6; console.log(num1 + ++ num2); //13
    • 后置++(先運算,后加1)

      var num1 = 5; num1 ++; var num2 = 6 console.log(num1 + num2 ++); //12
    • 猜猜看

      var a = 1; var b = ++a + ++a; console.log(b); //5var a = 1; var b = a++ + ++a; console.log(b);//4var a = 1; var b = a++1+ a++2; // console.log(b); // 3var a = 1; var b = ++a + a++; console.log(b);//4

      總結
      前置++:先加1,后參與運算
      后置++:先參與運算,后加1

      后置++ 運算的兩個條件,滿其一就會執行

      1:整個表達式結束;2表達式沒結束但是又被使用了;

      上面兩個理解后,下面兩個自通
      前置-- :先減1,后參與運算
      后置-- :先參與運算,后減1

    4.3 邏輯運算符(布爾運算符) *

    && 與 兩個操作數同時為true,結果為true,否則都是false || 或 兩個操作數有一個為true,結果為true,否則為false ! 非 取反 var a = 1; var b = 2; var c = 0;console.log(a || b); //1 console.log(b || a); //2 console.log(c && a); //0 console.log(a || c && b); //1// JS邏輯運算中的邏輯或和邏輯與的運算結果: // 決定整個表達式的子表達式的值 //運算優先級:先運算&& 邏輯與,再運算|| 邏輯或

    4.4 關系運算符(比較運算符)

    < > >= <= == != === !== =====的區別:==只進行值得比較,===類型和值同時相等,則相等//由于js是一種弱類型語言,變量的數據類型存在自動轉換var result = '55' == 55; // true var result = '55' === 55; // false 值相等,類型不相等 var result = 55 === 55; // true

    4.5 賦值運算符

    注意與數學符號的差別;

    = += -= *= /= %=

    例如: var num = 0; num += 5; //相當于 num = num + 5;

    4.6 運算符的優先級 *

    優先級從高到底 1. () 優先級最高 2. 一元運算符 ++ -- ! 3. 算數運算符 先* / % 后 + - 4. 關系運算符 > >= < <= 5. 相等運算符 == != === !== 6. 邏輯運算符 先&& 后|| 7. 賦值運算符 // 練習1: var s = 4 >= 6 || '人' != '阿凡達' && !(12 * 2 == 144) && true console.log(s); //true// 練習2: var num = 10; var f = 5 == num / 2 && (2 + 2 * num) //f=22數字類型的 console.log(f.toString() === 22) //false

    總結:

    操作符的使用,基本數學運算,一元運算符自增自減及前置后置的區別,邏輯運算符及取值,關系比較運算符,賦值運算符,運算符優先級;

    第5章 流程控制

    程序的三種基本結構

    順序結構: 從上到下執行的代碼就是順序結構

    程序默認就是由上到下順序執行的;

    分支結構:根據不同的情況及判斷,執行對應代碼;

    循環結構:重復執行一段代碼;

    5.1 分支結構

    if語句

    語法結構

    if (/* 條件表達式 */) {// 執行語句 }if (/* 條件表達式 */){// 成立執行語句 } else {// 否則執行語句 }if (/* 條件1 */){// 成立執行語句 } else if (/* 條件2 */){// 成立執行語句 } else if (/* 條件3 */){// 成立執行語句 } else {// 最后默認執行語句 }

    案例

    //獲取兩個數字中的最大值 var num1=100; var num2=20; if(num1>num2){console.log(num1); }else{console.log(num2); } // 判斷一個數是偶數還是奇數 var n = 10; if(n%2==0){console.log('偶數'); }else{console.log('奇數'); } /** 例子:* 獲取考試的分數,如果成績是在90(含)分以上的,則顯示級別:A* 如果成績是大于等于80的則:B* 如果成績是大于等于70的則:C* 如果成績是大于等于60的則:D* 如果成績是小于60的則:E** */var score = 91;if (score >= 90) {console.log("A");} else if (score >= 80) {console.log("B");} else if (score >= 70) {console.log("C");} else if (score >= 60) {console.log("D");} else {console.log("E");}

    作業:判斷一個年份是閏年還是平年

    閏年:能被4整除,但不能被100整除的年份 或者 能被400整除的年份

    var n = 2016; if(n%4==0){if(n%100 !=0){console.log('閏年');}else if(n%400 ==0){console.log('閏年');}else{console.log('平年');} }else{console.log('平年'); }
    三元運算符
    表達式1 ? 表達式2 : 表達式3 是對if……else語句的一種簡化寫法 運行結果:若表達式1成立,執行表達式2;若表達式1不成立,執行表達式3。

    案例:

    // 是否年滿18歲 var age = 18; var s = age>=18?'Yes':'no'; console.log(s); // 從兩個數中找最大值 var a1 = 110; var a2 = 19; var s = a1>a2?a1:a2; console.log(s);
    switch語句

    語法格式:

    switch (expression) {case 常量1:語句;break;case 常量2:語句;break;case 常量n:語句;break;default:語句;break; }/* * 執行過程: * 獲取表達式的值,和值1比較,相同則執行代碼1,遇到break跳出整個語句,結束 * 如果和值1不匹配,則和值2比較,相同則執行代碼2,遇到break跳出整個語句,結束 * 如果和值2不匹配,則和值3比較,相同則執行代碼3,遇到break跳出整個語句,結束 * 如果和值3不匹配,則和值4比較,相同則執行代碼4,遇到break跳出整個語句,結束 * 如果和之前的所有的值都不一樣,則直接執行代碼5,結束 */ break可以省略,如果省略,代碼會繼續執行下一個case switch 語句在比較值時使用的是全等操作符, 因此不會發生類型轉換(例如,字符串'10' 不等于數值 10) /* * * 判斷這個人的成績的級別: * 如果是A,則提示,分數在90分以上 * 如果是B,則提示,分數在80分以上 * 如果是C,則提示,分數在70分以上 * 如果是D,則提示,分數在60分以上 * 否則提示,不及格 * */var jiBie="B"; switch (jiBie){case "A" : console.log("分數在90分以上的");break;case "B" : console.log("分數在80分以上的");break;case "C" : console.log("分數在70分以上的");break;case "D" : console.log("分數在60分以上的");break;default :console.log("不及格"); }

    注:

    switch用于值比較確定的情況,執行效率高;而if用于范圍判斷。

    5.2 循環結構

    在JS語言中,循環語句有三種,while、do…while、for循環。

    5.2.1 while語句

    基本語法:

    // 當循環條件為true時,執行循環體, // 當循環條件為false時,結束循環。 while (循環條件) {//循環體 }

    案例1:計算1-100之間所有數的和

    // 初始化變量 var i = 1; var sum = 0; // 判斷條件 while (i <= 100) {// 循環體sum += i;// 自增i++; } console.log(sum);

    案例2:打印100以內 7的倍數

    var i = 1; while(i<100){if(i%7==0){console.log(i);}i++; }

    案例3:打印100以內所有偶數

    var i = 1; while(i<=100){if(i%2==0){console.log(i);}i++; }

    案例4:打印100以內所有偶數的和

    var i = 1; var s = 0; while(i<=100){if(i%2==0){s = s+i;}i++; } console.log(s);

    作業:
    打印100以內的奇數
    打印100以內的奇數的和

    5.2.2 do…while語句

    do…while循環和while循環非常像,二者經??梢韵嗷ヌ娲?#xff0c;

    但是do…while的特點是不管條件成不成立,都會執行一次。

    do {// 循環體; } while (循環條件);

    案例:計算1+2+3+4+……+99+100 的結果

    // 初始化變量 var i = 0; var sum = 1; do {sum += i;//循環體i++;//自增 } while (i <= 100);//循環條件

    5.2.3 for語句

    while和do…while一般用來解決無法確認次數的循環。for循環一般在循環次數確定的時候比較方便

    for循環語法:

    // for循環的表達式之間用的是;號分隔的,千萬不要寫成, for (初始化表達式1; 判斷表達式2; 自增表達式3) {// 循環體4 }

    執行順序:1243 ---- 243 -----243(直到循環條件變成false)

  • 初始化表達式
  • 判斷表達式
  • 自增表達式
  • 循環體
  • //打印1-100之間所有數 for(var i=1;i<=100;i++){console.log(i); }//求1-100之間所有數的和 var s = 0; for(var i=0;i<=100;i++){s+=i; } console.log(s);//求1-100之間所有偶數的和 var s = 0; for(var i=1;i<=100;i++){if(i%2==0){s+=i;} } console.log(s);//打印正方形 var start = ''; for (var i = 0; i < 10; i++) {for (var j = 0; j < 10; j++) {start += '* ';}start += '\n'; } console.log(start);//打印直角三角形 var start = ''; for (var i = 0; i < 10; i++) {for (var j = i; j < 10; j++) {start += '* ';}start += '\n'; } console.log(start);//打印9*9乘法表 var str = ''; for (var i = 1; i <= 9; i++) {for (var j = i; j <=9; j++) {str += i + ' * ' + j + ' = ' + i * j + '\t';}str += '\n'; } console.log(str);

    5.2.4 continue和break

    break:立即跳出整個循環,即循環結束,開始執行循環后面的內容(直接跳到大括號)

    continue:立即跳出當前循環,繼續下一次循環(跳到i++的地方)

    案例1:求1-100之間不能被7整除的整數的和(用continue)

    var s = 0; for(var i=0;i<100;i++){if(i%7==0){continue;}s+=i; } console.log(s);

    案例2:求200-300之間所有的奇數的和(用continue)

    var s = 0; for(var i=200;i<=300;i++){if(i%2==0){continue;}else{s+=i;} } console.log(s);

    案例3:求200-300之間第一個能被7整數的數(break)

    for(var i=200;i<=300;i++){if(i%7==0){console.log(i);break;} }

    總結:

    代碼的執行流程分為順序、分支和循環三種結構,順序結構是默認的,判斷結構主要有if-else和switch-case兩種,循環結構有while、do-while、for三種,其中continue和break是跳出循環;

    第6章 JS中特殊的對象-數組

    之前學習的數據類型,只能存儲一個值(比如:Number/String)。我們想在一個變量中存儲多個值,應該如何存儲?

    所謂數組,就是將多個元素(通常是同一類型)按一定順序排列放到一個集合中,那么這個集合我們就稱之為數組。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qwxYYTnt-1651933582287)(./img/Snipaste_2019-02-20_16-56-34.png)]

    6.1 數組的創建

    // 字面量方式創建數組 var arr1 = []; //空數組 // 創建一個包含3個數值的數組,多個數組項以逗號隔開 var arr2 = [1, 3, 4]; // 創建一個包含2個字符串的數組 var arr3 = ['a', 'c']; console.log(arr1); console.log(arr2);// 構造函數方式創建數組 var a1 = new Array(); //空數組 var a2 = new Array('1',2,'h'); //包含三個元素的數組 console.log(a1); console.log(a2);// 可以通過數組的length屬性獲取數組的長度 console.log(arr3.length); // 可以設置length屬性改變數組中元素的個數 arr3.length = 0;console.log(arr3[0]);//undefined

    數組的元素可以是任意類型的數據,因此,有時數組中的某個元素的值又是一個數組,而這樣的數組被稱為多維數組,如果數組中只有其他類型的數據,而沒有另外的數組值,這樣的數組被稱為一維數組;

    通常,數組被嵌套N層,則稱為N維數組,最常見的就是二維數組、三維數組、四維數組,超過一維的數組都會被泛稱為多維數組;

    數組的維度值越大,復雜度就越高,開發中盡量避免產生高維度值的數組;

    var arr1 = [a,b,c]; // 一維數組 var arr2 = [a,b,c,[d,e]]; // 二維數組 var arr3 = [a,b,c[d,e,[f,g]]]; // 三維數組 var arr4 = [a,b,c[d,e,[f,g,[h,t,y]]]]; // 四維數組

    6.2 獲取數組元素

    // 格式:數組名[下標] 下標又稱索引 // 下標從0開始 // 功能:獲取數組對應下標的那個值,如果下標不存在,則返回undefined。 var arr = ['red',, 'green']; arr[0]; // red arr[1]; // undefined 下標位置沒有數據 arr[2]; // green arr[5]; // 這個數組的最大下標為2,因此返回undefined // 獲取多維數組的數據 var arr = ['路飛','娜美',['巴基','女帝',['佐助','喬巴']]]; console.log(arr[2][2][0]); //佐助

    6.3 遍歷數組

    遍歷:遍及所有,對數組的每一個元素都訪問一次就叫遍歷。

    for循環數組遍歷的基本語法:

    for(var i = 0; i < arr.length; i++) {// 數組遍歷的固定結構 }

    for循環示例:

    var arr1 = [1, 3, 4]; for(var i = 0;i<arr1.length;i++){console.log(arr1[i]); }

    while循環示例:

    var arr1 = [1, 3, 4]; var i = 0; while(i<arr1.length){console.log(arr1[i]);i++; }

    6.4 為數組修改添加元素

    // 格式:數組名[下標/索引] = 值; // 如果下標有對應的值,會把原來的值覆蓋,如果下標不存在,會給數組新增一個元素。 var arr = ["red", "green", "blue"]; // 把red替換成了yellow arr[0] = "yellow"; // 給數組新增加了一個pink的值 arr[3] = "pink";

    6.5 數組操作案例

    案例1:求數組中的所有數的和

    //求和 var arr = [10, 20, 30, 40, 50]; //定義變量存儲和 var sum = 0; for (var i = 0; i < arr.length; i++) {sum += arr[i]; } console.log("和為:" + sum);

    案例2:獲取數組中的最大值

    //最大值 var arr = [10, 20, 30, 40, 50, 60]; //假設這個變量中的值是最大的 var maxNum = arr[0]; //遍歷數組 for (var i = 0; i < arr.length; i++) {//判斷if (maxNum < arr[i]) {maxNum = arr[i];} } console.log("最大值是:" + maxNum);

    案例3: 遍歷出數組中所有的偶數

    // 遍歷出數組中所有的偶數 var arr = [1,2,3,4,5,6,7]; for(var i=0;i<arr.length;i++){//判斷if(arr[i]%2==0){console.log(arr[i]);} }

    案例4:將數組轉為字符串并以 | 分割

    //把數組中的每個名字后面拼接一個|然后以字符串的方式輸出 var names = ["卡卡西", "佐助", "鳳姐", "鳴人", "黑崎一護"]; var str = "";//空的字符串,用來存儲最后的拼接的結果的字符串 //不停的遍歷數組的數據,并且拼接字符串 for (var i = 0; i < names.length - 1; i++) {str += names[i] + "|";//拼接字符串的方式 } str += names[names.length - 1]; console.log(str);

    總結:

    數組就是多個數據的集合,有一維數組和多維數組之分,可以使用字面量、構造函數等方式創建數組,使用下標來獲取數組元素數據,使用for或者while循環來遍歷數組元素;

    第7章 函數

    把一段相對獨立的具有特定功能的代碼塊封裝起來,形成一個獨立實體,就是函數,起個名字(函數名),在后續開發中可以反復調用

    函數的作用就是封裝一段代碼,將來可以重復使用

    7.1 函數的聲明及調用

    7.1.1 聲明

    • 關鍵字聲明
    function 函數名(){// 函數體 } 函數名()//函數調用
    • 表達式聲明
    var fn = function() {// 函數體 } fn()//匿名函數調用
    • 特點:

      函數聲明的時候,函數體并不會執行,只要當函數被調用的時候才會執行。
      一個函數一般都特定的用來干 一件 事情

    7.1.2 調用

    • 調用函數的語法:
    函數名();
    • 特點:

      函數體只有在調用的時候才會執行,調用需要()進行調用。
      可以調用多次(重復使用)

    // 聲明函數 function sayHi() {console.log("吃了沒?"); } // 調用函數 sayHi();// 求1-100之間所有數的和 function getSum() {var sum = 0;for (var i = 0; i < 100; i++) {sum += i;}console.log(sum); } // 一段代碼可以多次調用 getSum(); getSum(); getSum();

    7.2 參數

    • 為什么要有參數
    function getSum() {var sum = 0;for (var i = 1; i <= 100; i++) {sum += i;}console.log(); }// 雖然上面代碼可以重復調用,但是只能計算1-100之間的值 // 如果想要計算n-m之間所有數的和,應該怎么辦呢?
    • 語法:
    // 函數內部是一個封閉的環境,可以通過參數的方式,把外部的值傳遞給函數內部 // 帶參數的函數聲明 function 函數名(形參1, 形參2, 形參...){// 函數體 }// 帶參數的函數調用 函數名(實參1, 實參2, 實參3);
    • *形參和實參 **
  • 形式參數:在聲明一個函數的時候,為了函數的功能更加靈活,有些值是固定不了的,對于這些固定不了的值。我們可以給函數設置參數。這個參數沒有具體的值,僅僅起到一個占位置的作用,我們通常稱之為形式參數,也叫形參。
  • 實際參數:如果函數在聲明時,設置了形參,那么在函數調用的時候就需要傳入對應的參數,我們把傳入的參數叫做實際參數,也叫實參。
  • function fn(a, b) {console.log(a + b); } var x = 5, y = 6; fn(x,y); // x,y實參,有具體的值。 // 函數執行的時候會把x,y復制一份給函數內部的a和b, // 函數內部的值是復制的新值,無法修改外部的x,y

    JS 函數在調用時,允許傳多個實參,就是實參個數可以比形參個數多;

    如果實參個數多于形參個數,則取到形參個數;如果實參個數少于形參個數,多出來的形參默認為undefined

    • arguments

    常用于不確定參數傳遞個數情況。

    arguments是當前函數的一個內置對象,arguments對象中存儲了傳遞的所有實參。

    arguments展示形式是一個偽數組(具有length屬性,索引存儲數據,但不具備pop、push方法)

    7.3 函數的返回值

    當函數執行完的時候,并不是所有時候都要把結果打印。我們期望函數給我一些反饋(比如計算的結果返回進行后續的運算),這個時候可以讓函數返回一些東西。也就是返回值。函數通過return返回一個值

    返回值語法:

    //聲明一個帶返回值的函數 function 函數名(形參1, 形參2, 形參...){//函數體return 返回值; }//可以通過變量來接收這個返回值 var 變量 = 函數名(實參1, 實參2, 實參3);

    *返回值詳解: **
    如果函數沒有顯示的使用 return語句 ,那么函數有默認的返回值:undefined
    如果函數使用 return語句,那么跟再return后面的值,就成了函數的返回值
    如果函數使用 return語句,但是return后面沒有任何值,那么函數的返回值也是:undefined
    函數使用return語句后,這個函數會在執行完 return 語句之后停止并立即退出,也就是說return后面的所有其他代碼都不會再執行。

    ? return一次只能返回一個值,若返回值為多個,則以最后一個為準,或使用數組返回。

    7.4 函數相關的其它事情

    7.4.1 匿名函數與自調用函數

    匿名函數:沒有名字的函數

    匿名函數如何使用:

    將匿名函數賦值給一個變量,這樣就可以通過變量進行調用

    var fun1 = function(){console.log(1); } fun1();//匿名函數調用

    匿名函數如果沒有任何變量來表示它,那么就不能直接調用來執行,因此可以通過匿名函數的自調用的方式來執行

    (function () {alert(123); })();//立即執行函數

    關于自執行函數(匿名函數自調用)的作用:防止全局變量污染,封裝一個局部作用。

    7.4.2 函數本身也是值 *

    function fn() {} console.log(typeof fn);
    • 函數作為參數

    因為函數也是一種值類型,可以把函數作為另一個函數的參數,在另一個函數中調用

    function f1(f){f(); } function f2(){console.log(2); } f1(f2); //2
    • 函數做為返回值

    因為函數是一種類型,所以可以把函數可以作為返回值從函數內部返回,這種用法在后面很常見。

    function fn(b) {var a = 10;return function () {alert(a+b);} } var f = fn(5); f(); //15

    總結:

    函數是一段代碼的封裝,可重復多次運行,函數的聲明有表達式聲明和關鍵字聲明,使用 ·函數名()· 的方式進行調用,調用時傳入的參數為實參,聲明時的參數時形參,函數使用return返回值,函數可以是沒有名字的匿名函數,函數本身也可以當做值使用;

    第8章 作用域與JS代碼的運行 *

    作用域:變量可以起作用的范圍和區域

    8.1 全局變量和局部變量 *

    • 全局變量與全局作用域

      在任何地方都可以訪問到的變量就是全局變量,全局變量所在的區域就是全局作用域

    • 局部變量

      只在固定的代碼片段內可訪問到的變量,最常見的例如函數內部的變量,就是局部變量。局部變量所在的區域就是局部作用域(函數作用域)

    不使用var聲明的變量是全局變量,不推薦使用。 變量退出作用域之后會銷毀,全局變量關閉網頁或瀏覽器才會銷毀

    8.2 變量提升

    console.log(a); // undefined var a = 2; console.log(a); // a is not defined
    • 變量提升

      定義變量的時候,變量的聲明會被提升到作用域的最上面,變量的賦值不會提升。

    • 函數提升

      JavaScript解析器首先會把當前作用域的函數聲明提前到整個作用域的最前面

    f(); function f(){console.log(12); //12 } var f = 1; function f(){console.log(12); //12 } // 由于函數提升在前,所以被變量聲明替換了; // 執行階段,變量被復制為1,不再是一個函數, f(); // f is not a function

    注:不管是普通變量還是函數,盡量不要出現重名;

    8.3 JS代碼的運行 *

    console.log(s); //undefined var s = 2;

    JavaScript代碼的執行是由瀏覽器中的JavaScript解析器來執行的。

    JavaScript解析器執行JavaScript代碼的時候,分為兩個過程:預解析(編譯)過程和代碼執行過程

    預解析過程:

  • 語法檢查,如果有錯誤,直接停止后續步驟不再運行。
  • 把變量和函數的聲明提升到當前作用域的最前面,只會提升聲明,不會提升賦值和調用。
  • 先提升變量后提升函數,如果函數和變量同名,則被替換;
  • 代碼執行過程

    變量的賦值,函數的調用,循環判斷等,根據代碼由上往下順序執行;

    var a = 25; function abc (){alert(a);//undefinedvar a = 10; } abc();// 如果變量和函數同名的話,函數優先做提升 console.log(a); function a() {console.log('aaaaa'); } var a = 1; console.log(a); // 1、---------------- var num = 10; fun(); function fun() {console.log(num); //undefinedvar num = 20; }// 2、---------------- var a = 18; f1(); function f1() {var b = 9;console.log(a); //undefinedconsole.log(b); // 9var a = '123'; }

    8.4 詞法作用域

    變量的作用域是在定義時決定而不是執行時決定的,也就是說詞法作用域取決于編譯階段,通過靜態分析就能確定,因此詞法作用域也叫做靜態作用域。

    在 js 中詞法作用域規則:

    • 函數允許訪問函數外的數據.
    • 整個代碼結構中只有函數可以限定作用域.
    • 作用域規則首先使用提升規則分析
    • 如果當前作用規則中有名字了, 就不考慮外面的名字
    var num = 123; function foo() {console.log( num ); } foo();if ( false ) {var num = 123; } console.log( num ); // undefiend

    也就是說:

    函數內部可以訪問函數外部的變量,但是函數外部不可以訪問函數內部的變量;

    函數內部如果有變量,則優先使用內部的變量,如果函數內部沒有,才會使用函數外部的變量;

    8.5 作用域鏈 *

    只有函數可以制造作用域結構, 那么只要是代碼,就至少有一個作用域, 即全局作用域。凡是代碼中有函數,那么這個函數就構成另一個作用域。如果函數中還有函數,那么在這個作用域中就又可以誕生一個作用域。將這樣的所有的作用域列出來,可以有一個結構: 函數內指向函數外的鏈式結構。就稱作作用域鏈。 var a = 1; function fn1(){function fn2(){function fn3(){console.log(a);}fn3();}fn2(); } fn1();

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Gcb6GTum-1651933582290)(./img/Snipaste_2019-02-20_22-42-07.png)]

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bFUBfGCJ-1651933582292)(./img/Snipaste_2019-02-20_22-43-41.png)]

    var a = 1; function fn1(){var a = 2;function fn2(){var a = 3;function fn3(){console.log(a);}fn3();}fn2(); } fn1();

    總結:

    函數內部是JS代碼的局部作用域,函數外部是全局作用域,JS 代碼的運行分為與解析階段和執行階段,變量的聲明實在與解析階段的,所以變量存在提升,而變量只在自己的作用域中起作用,但是自己作用域是可以訪問上級作用域的;

    第9章 對象(Object)

    9.1 什么是對象

    萬物皆對象

    現實生活中:萬物皆對象,對象是一個具體的事物,一個具體的事物就會有行為和特征。 舉例: 一部車,一個手機 車是一類事物,門口停的那輛車才是對象特征:紅色、四個輪子行為:駕駛、剎車

    9.2 JavaScript中的對象

    JavaScript中的對象其實就是生活中對象的一個抽象 JavaScript的對象是無序屬性的集合。 其屬性可以包含基本值、對象、數組或函數。 對象就是一組沒有順序的值。 我們可以把JavaScript中的對象想象成鍵值對,其中值可以是數據和函數。 對象的行為和特征特征---屬性行為---方法

    事物的特征在對象中用屬性來表示。

    事物的行為在對象中用方法來表示。

    9.3 如何得到一個對象

    • 字面量方式創建對象

      var obj1 = {};//得到一個空對象 var obj2 = {name:'西嶺',age:18};//得到擁有兩個屬性的對象 //得到擁有兩個屬性和一個方法的對象 var obj3 = {name:'西嶺',age:18,fei:function(){console.log('你上天啊!');} }
    • new Object() 創建對象 (內置構造函數)

      var person = new Object();person.name = 'lisi'; person.age = 35; person.sayHi = function(){console.log('Hello,everyBody'); }
    • 自定義構造函數創建對象

      function Person(name,age,job){this.name = name;this.age = age;this.job = job;this.sayHi = function(){console.log('Hello,everyBody');} } var p1 = new Person('張三', 22, 'actor');

    9.4 this 的指向

    JavaScript中的this指向問題,比較復雜,有時候會讓人難以捉摸,隨著學習的深入,我們會不斷接觸this,

    在學習過程中,我們可以不斷總結,最終搞清楚this在何種情況下指向何處……

    目前,我們只需要記住以下兩點就可以了:

    1: 函數如果在某個對象下,this就指向這個對象

    2: 函數如果被直接調用,this指向window對象

    var o1 = {name: '山治',f: function () {console.log(this.name);} } o1.f(); // 山治 function f(){console.log(this); } f(); console.log(window);

    this永遠指向一個對象。且運行再那個對象下,就指向那個對象。

    9.5 對象的使用

    • 方法及屬性的使用
    對象.方法名()//調用對象的方法 對象.屬性; //獲取對象的屬性 注:若對象中的屬性是動態的則獲取對象屬性的方法為 對象['屬性'] ;若對象中的屬性是靜態的則獲取對象屬性的方法為 對象.屬性
    • 遍歷對象的屬性

    通過for…in語法可以遍歷一個對象

    var obj1 = {name:'路飛',age : 17,sex : '男', }for(var k in obj1){console.log(k);//獲取對象下的屬性名console.log(obj1[k]);//獲取對象下的屬性值 }

    注意:使用for …in語法,同樣可以遍歷數組,遍歷數組時k指的是下標值。

    • 刪除對象的屬性
    var obj1 = {name:'路飛',age : 17,sex : '男', }console.log(obj1.age); //17 delete obj1.age; //刪除對象中指定的屬性 console.log(obj1.age); // undefined

    總結:

    創建對象有三種方式,字面量、new關鍵字及自定義構造函數;對象中有屬性及方法,this只想當前對象,使用 . (點) 語法調用屬性及方法;

    第10章 標準庫對象(內置對象)

    JavaScript 提供了很多個內置對象:Math/Array/Number/String/Boolean…

    對象只是帶有屬性方法的特殊數據類型。

    我們在學習時其實就是要記住對象的每個屬性和方法怎么使用,代表什么含義;

    技術問題,遇到分歧,去哪里查找資料:

    火狐開發者社區–MDN

    微軟開發者社區–MSDN

    10.1 Math對象

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math

    10.1.1 使用

    Math 是一個內置對象, 它具有數學常數和函數的屬性和方法。不是一個函數對象。

    與其它全局對象不同的是, Math 不是一個構造器. Math 的所有屬性和方法都是靜態的.

    跟數學相關的運算直接使用Math中的成員即可

    Math對象的屬性(常量)

    屬性(常量)描述
    Math.E 常量數學常數 e。這是歐拉數,自然對數的底。
    Math.LN2 常量2 的自然對數。
    Math.LN10 常量10 的自然對數。
    Math.LOG2E 常量以 2 為底 e 的對數。
    Math.LOG10E 常量以 10 為底 e 的對數。
    Math.PI 常量(常用)Pi。這是圓的周長與直徑的比值。
    Math.SQRT1_2 常量0.5 的平方根,或相當于 1 除以 2 的平方根。
    Math.SQRT2 常量2 的平方根。

    Math對象的方法(函數)

    方法(函數)描述
    Math.abs 函數(常用)返回數字的絕對值。
    Math.acos 函數返回數字的反余弦值。
    Math.acosh 函數返回數字的雙曲反余弦值(或反雙曲余弦值)。
    Math.asin 函數返回數字的反正弦值。
    Math.asinh 函數返回數字的反雙曲正弦。
    Math.atan 函數返回數字的反正切值。
    Math.atan2 函數將與 X 軸的角度(以弧度為單位)返回到由 y 和 x 坐標表示的點。
    Math.atanh 函數返回數字的反雙曲正切。
    Math.ceil 函數(常用)返回大于或等于提供的數值表達式的最小整數。
    Math.cos 函數返回數字的余弦值。
    Math.cosh 函數返回數字的雙曲余弦。
    Math.exp 函數返回 e(自然對數的底)的乘冪數。
    Math.expm1 函數返回 e(自然對數的底)的乘冪數減去 1 的結果。
    Math.floor 函數(常用)返回小于或等于提供的數值表達式的最大整數。
    Math.hypot 函數返回參數平方和的平方根。
    Math.imul 函數返回被視為 32 位帶符號整數的兩個數字的積。
    Math.log 函數返回數字的自然對數。
    Math.log1p 函數返回 1 加上一個數字的的自然對數。
    Math.log10 函數返回數字以 10 為底的對數。
    Math.log2 函數返回數字以 2 為底的對數。
    Math.max 函數(常用)返回提供的兩個數值表達式中的較大值。
    Math.min 函數(常用)返回提供的兩個數字中的較小值。
    Math.pow 函數返回基表達式的指定乘冪數的值。
    Math.random 函數(常用)返回介于 0 和 1 之間的偽隨機數。
    Math.round 函數(常用)返回舍入到最近整數的指定數值表達式。
    Math.sign 函數返回數字符號,它指示數字為正數、負數還是 0。
    Math.sin 函數返回數字的正弦值。
    Math.sinh 函數返回數字的反雙曲正弦。
    Math.sqrt 函數返回數字的平方根。
    Math.tan 函數返回數字的正切值。
    Math.tanh 函數返回數字的雙曲正切。
    Math.trunc 函數返回數字的整數部分,刪除任何小數數字。

    注意:

    Math.abs():在對字符串數字進行操作時,會有隱式轉換。

    Math.round():在取’.5’時特殊,往大了取,e.g -1.5 取 -1 ,1.5 取 2 。

    10.1.2 案例

    • 求10-20之間的隨機數

      Math.floor(Math.random() * (max - min)) + min; //獲得兩個數之間的隨機整數,并包含這兩個數 //e.g 若取1-10 Math.floor(Math.random() * (10 - 1)) + 1
    • 讓一個P標簽隨機改變背景顏色

      function rndColor(){var r = parseInt(Math.random()*256);var g = parseInt(Math.random()*256);var b = parseInt(Math.random()*256);var a = parseInt(Math.random())return "rgb("+r+","+g+","+b+","+a+")" }

    10.2 Date對象(構造函數)

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

    10.2.1 使用

    創建 Date 實例用來處理日期和時間。Date 對象基于1970年1月1日(世界標準時間)起的毫秒數。

    // 獲取當前時間,UTC世界時間,距1970年1月1日(世界標準時間)起的毫秒數 var now = new Date(); console.log(now.valueOf()); // 獲取距1970年1月1日(世界標準時間)起的毫秒數Date構造函數的參數 1. 毫秒數 1498099000356 new Date(1498099000356) 2. 日期格式字符串 '2015-5-1' new Date('2015-5-1') 3. 年、月、日…… new Date(2015, 4, 1) // 月份從0開始
    • 獲取日期的毫秒形式
    var now = new Date(); // valueOf用于獲取對象的原始值 console.log(date.valueOf()) // HTML5中提供的方法,有兼容性問題 var now = Date.now(); // 不支持HTML5的瀏覽器,可以用下面這種方式(常用) var now = + new Date(); // 調用 Date對象的valueOf()
    • 日期格式化方法
    toString() // 轉換成字符串 valueOf() // 獲取毫秒值 // 下面格式化日期的方法,在不同瀏覽器可能表現不一致,一般不用 toDateString() toTimeString() toLocaleDateString() toLocaleTimeString()
    • 獲取日期指定部分
    getTime() // 返回毫秒數和valueOf()結果一樣,valueOf()內部調用的getTime() getSeconds() // 返回0-59 getMinutes() // 返回0-59 getHours() // 返回0-23 getDay() // 返回星期幾 0周日 6周6(需要特別注意) getDate() // 返回當前月的第幾天 getMonth() // 返回月份,***從0開始*** getFullYear() //返回4位的年份 如 2016

    10.2.2 案例

    • 案例1:寫一個函數,格式化日期對象,返回yyyy-MM-dd HH:mm:ss的形式
    function formatDate(d) {//如果date不是日期對象,返回if (!date instanceof Date) {return;}var year = d.getFullYear(),month = d.getMonth() + 1, date = d.getDate(), hour = d.getHours(), minute = d.getMinutes(), second = d.getSeconds();month = month < 10 ? '0' + month : month;date = date < 10 ? '0' + date : date;hour = hour < 10 ? '0' + hour : hour;minute = minute < 10 ? '0' + minute:minute;second = second < 10 ? '0' + second:second;return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second; }
    • 計算時間差,返回相差的天/時/分/秒
    function getInterval(start, end) {var day, hour, minute, second, interval;interval = end - start;interval /= 1000;day = Math.round(interval / 60 /60 / 24);hour = Math.round(interval / 60 /60 % 24);minute = Math.round(interval / 60 % 60);second = Math.round(interval % 60);return {day: day,hour: hour,minute: minute,second: second} } //將時間戳轉化為時分秒 //day = Math.round(總秒數 / 60 /60 / 24);獲得天數 //hour = Math.round(總秒數 / 60 /60 % 24);獲得小時數 //minute = Math.round(總秒數 / 60 % 60);獲得分鐘數 //second = Math.round(總秒數 % 60);獲得秒數

    Date對象 的方法。

    方法描述
    getDate 方法使用當地時間返回一個月某天的值。
    getDay 方法使用當地時間返回一個星期某天的值。
    getFullYear 方法使用當地時間返回年份值。
    getHours 方法使用當地時間返回小時值。
    getMilliseconds 方法使用當地時間返回毫秒值。
    getMinutes 方法使用當地時間返回分鐘值。
    getMonth 方法使用當地時間返回月份值。
    getSeconds 方法使用當地時間返回秒值。
    getTime 方法Date 對象中的時間值返回為自 1970 年 1 月 1 日午夜起經過的毫秒數。
    getTimezoneOffset 方法返回主機的時間與協調通用時間 (UTC) 之間的分鐘差值。
    getUTCDate 方法使用 UTC 返回一個月某天的值。
    getUTCDay 方法使用 UTC 返回一個星期某天的值。
    getUTCFullYear 方法使用 UTC 返回年份值。
    getUTCHours 方法使用 UTC 返回小時值。
    getUTCMilliseconds 方法使用 UTC 返回毫秒值。
    getUTCMinutes 方法使用 UTC 返回分鐘值。
    getUTCMonth 方法使用 UTC 返回月份值。
    getUTCSeconds 方法使用 UTC 返回秒值。
    getVarDate 方法Date 對象中的 VT_DATE 值返回。
    getYear 方法返回年份值。
    hasOwnProperty 方法返回一個布爾值,該值指示一個對象是否具有指定名稱的屬性。
    isPrototypeOf 方法返回一個布爾值,該值指示對象是否存在于另一個對象的原型鏈中。
    propertyIsEnumerable 方法返回一個布爾值,該值指示指定屬性是否為對象的一部分以及該屬性是否是可枚舉的。
    setDate 方法使用當地時間設置一個月中某一日的數值。
    setFullYear 方法使用當地時間設置年份值。
    setHours 方法使用當地時間設置小時值。
    setMilliseconds 方法使用當地時間設置毫秒值。
    setMinutes 方法使用當地時間設置分鐘值。
    setMonth 方法使用當地時間設置月份值。
    setSeconds 方法使用當地時間設置秒值。
    setTime 方法設置 Date 對象中的日期和時間值。
    setUTCDate 方法使用 UTC 設置一個月中某一日的數值。
    setUTCFullYear 方法使用 UTC 設置年份值。
    setUTCHours 方法使用 UTC 設置小時值。
    setUTCMilliseconds 方法使用 UTC 設置毫秒值。
    setUTCMinutes 方法使用 UTC 設置分鐘值。
    setUTCMonth 方法使用 UTC 設置月份值。
    setUTCSeconds 方法使用 UTC 設置秒值。
    setYear 方法使用當地時間設置年份值。
    toDateString 方法以字符串值的形式返回一個日期。
    toGMTString 方法返回使用格林尼治標準時間 (GMT) 轉換為字符串的日期。
    toISOString 方法以字符串值的形式返回采用 ISO 格式的日期。
    toJSON 方法用于在 JSON 序列化之前轉換目標類型的數據。
    toLocaleDateString 方法將一個日期以字符串值的形式返回,該字符串應適合于宿主環境的當前區域設置。
    toLocaleString 方法返回使用當前區域設置轉換為字符串的對象。
    toLocaleTimeString 方法以字符串值的形式返回一個時間,此字符串值應與宿主環境的當前區域設置相適應。
    toString 方法返回表示對象的字符串。
    toTimeString 方法以字符串值形式返回時間。
    toUTCString 方法返回使用 UTC 轉換為字符串的日期。
    valueOf 方法返回指定對象的原始值。

    10.3 Array對象

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

    10.3.1 數組對象的屬性及方法

    length屬性: 返回數組的成員數量。

    var arr = ['a', 'b']; console.log(arr.length) // 2

    數組對象的常用方法舉例

    • push方法用于在數組的末端添加一個或多個元素,并返回添加新元素后的數組長度。注意,該方法會改變原數組。

      var a = []; a.push(1) // 1 a.push('a') // 2 a.push(true, {}) // 4 console.log(a); //[1, 'a', true, {}]

      注:unshift方法用于在數組的最前面添加一個或多個元素,并返回添加新元素后的數組長度。方法會改變原數組。

    • pop方法用于刪除數組的最后一個元素,并返回該元素。注意,該方法會改變原數組

      var a = ['a', 'b', 'c']; a.pop() // 'c' console.log(a);// ['a', 'b']

      注:shift方法用于刪除數組的第一個元素,并返回該元素。注意,該方法會改變原數組

    • slice方法用于提取原數組的一部分(淺拷貝),返回一個新數組,原數組不變。

      它的第一個參數為起始位置(從0開始),第二個參數為終止位置(但該位置的元素本身不包括在內)。 如果省略第二個參數,則一直返回到原數組的最后一個成員。

      var a = ['a','b','c','d','e']; console.log(a.slice(0)) // ["a", "b", "c", "d", "e"] console.log(a.slice(1)) // ["b", "c", "d", "e"] console.log(a.slice(1,3)); // ["b", "c"]
    • 返回數組的字符串表示形式。

      var arr = [1, 2, 3, 4]; console.log(arr.toString()); //1,2,3,4
    • isArray()方法用于判斷某個數據是否為數組,H5新增方法。

    10.3.2 方法和屬性

    Array 對象的屬性。

    屬性描述
    constructor 屬性指定創建數組的函數。
    length 屬性(數組)返回一個整數值,此整數比數組中所定義的最高位元素大 1,是實際元素個數。
    prototype 屬性返回對數組的原型。

    Array 對象的方法。

    方法描述
    concat 方法(數組)返回由兩個數組組合而成的新數組。
    entries 方法返回包含數組的鍵/值對的迭代器。
    every 方法(常用)檢查定義的回調函數是否為數組中的所有元素返回 true。
    fill 方法使用指定值填充數組。
    filter 方法(常用)對數組的每個元素調用定義的回調函數,并返回回調函數為其返回 true 的值的數組。
    findIndex 方法(常用)返回滿足回調函數中指定的測試條件的第一個數組元素的索引值。
    forEach 方法(常用)為數組中的每個元素調用定義的回調函數。
    hasOwnProperty 方法返回一個布爾值,該值指示某個對象是否具有指定名稱的屬性。
    indexOf 方法(數組)(常用)返回某個值在數組中的第一個匹配項的索引。
    isPrototypeOf 方法返回一個布爾值,該值指示某個對象是否存在于另一個對象的原型鏈中。
    join 方法(常用)返回由一個數組的所有元素串聯而成的 String 對象。
    keys 方法返回包含數組的索引值的迭代器。
    lastIndexOf 方法(數組)返回指定值在數組中的最后一個匹配項的索引。
    map 方法(常用)對數組的每個元素調用定義的回調函數并返回包含結果的數組。
    pop 方法(常用)從數組中移除最后一個元素并將該元素返回。
    propertyIsEnumerable 方法返回一個布爾值,該值指示指定屬性是否為對象的一部分且是否可枚舉。
    push 方法(常用)將新元素追加到一個數組中,并返回數組的新長度。
    reduce 方法(常用)通過對數組中的所有元素調用定義的回調函數來累積單個結果。 回調函數的返回值是累積的結果,并且作為對回調函數的下一個調用中的參數提供。
    reduceRight 方法通過對數組中的所有元素調用定義的回調函數來按降序順序累積單個結果。 回調函數的返回值是累積的結果,并且作為對回調函數的下一個調用中的參數提供。
    reverse 方法(常用)將元素順序被反轉的 Array 對象返回。
    shift 方法(常用)從數組中移除第一個元素并將返回該元素。
    slice 方法(數組)(常用)返回一個數組中的一部分。
    some 方法(常用)檢查定義的回調函數是否為數組的任何元素返回 true
    sort 方法(常用)返回一個元素已經進行了排序的 Array 對象。
    splice 方法(常用)從一個數組中移除元素,如有必要,在所移除元素的位置上插入新元素,并返回所移除的元素。注意與slice方法的區別。
    toLocaleString 方法返回使用當前區域設置的字符串。
    toString 方法返回數組的字符串表示形式。
    unshift 方法(常用)在數組的開頭插入新元素。
    valueOf 方法獲取對數組的引用。
    values 方法返回包含數組的值的迭代器。

    10.4 String對象

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String

    var s = 'JavaScript'; // length屬性返回字符串的長度。 var i = s.length; //返回參數在字符串中第一次出現的位置 var i = s.indexOf('b'); //從原字符串取出子字符串并返回,不改變原字符串 var i = s.substr(2,4);//從下標第二個開始截取4個長度的字符串 //toLowerCase方法用于將一個字符串全部轉為小寫 //toUpperCase則是全部轉為大寫 var i = s.toLowerCase(); var i = s.toUpperCase();// 用于替換匹配的子字符串,只替換第一個匹配 var i = s.replace('a','b'); console.log(i);

    String 對象的屬性。

    屬性描述
    constructor 屬性指定用于創建對象的函數。
    length 屬性(字符串)返回 String 對象的長度。
    prototype 屬性為對象的類返回原型的引用。

    String 對象的方法。

    方法描述
    anchor 方法將具有 NAME 特性的 HTML 定位點放置在文本兩側。
    big 方法將 HTML 標記放置在文本兩側。
    blink 方法將 HTML 標記放置在文本兩側。
    bold 方法將 HTML 標記放置在文本兩側。
    charAt 方法(常用)返回指定索引處的字符。
    charCodeAt 方法(常用)返回指定字符的 Unicode 編碼。
    codePointAt 方法返回一個 Unicode UTF-16 字符的碼位。
    concat 方法(字符串)返回由提供的兩個字符串串聯而成的字符串。
    EndsWith 方法返回一個布爾值,該值指示字符串或子字符串是否以傳入字符串結尾。
    includes 方法(常用)返回一個布爾值,該值指示傳入字符串是否包含在字符串對象中。
    fixed 方法將 HTML 標記放置在文本兩側。
    fontcolor 方法將具有 COLOR 特性的 HTML 標記放置在文本兩側。
    fontsize 方法將具有 SIZE 特性的 HTML 標記放置在文本兩側。
    hasOwnProperty 方法(常用)返回一個布爾值,該值指示某個對象是否具有指定名稱的屬性。
    indexOf 方法(字符串)(常用)返回字符串內第一次出現子字符串的字符位置。
    isPrototypeOf 方法返回一個布爾值,該值指示某個對象是否存在于另一個對象的原型鏈中。
    italics 方法將 HTML 標記放置在文本兩側。
    lastIndexOf 方法(字符串)返回字符串內子字符串的最后一個匹配項。
    link 方法將具有 HREF 特性的 HTML 定位點放置在文本兩側。
    localeCompare 方法返回一個值,該值指示兩個字符串在當前區域設置中是否相等。
    match 方法通過使用提供的正則表達式對象來搜索字符串并以數組形式返回結果。
    normalize 方法返回指定字符串的 Unicode 范式。
    propertyIsEnumerable 方法返回一個布爾值,該值指示指定屬性是否為對象的一部分且是否可枚舉。
    repeat 方法返回一個新的字符串對象,它的值等于重復了指定次數的原始字符串。
    replace 方法使用正則表達式替換字符串中的文本并返回結果。
    search 方法返回正則表達式搜索中第一個子字符串匹配項的位置。
    slice 方法(字符串)(常用)返回字符串的片段。
    small 方法將 HTML 標記放置在文本兩側。
    split 方法返回一個字符串拆分為若干子字符串時所產生的字符串數組。
    StartsWith 方法返回一個布爾值,該值指示字符串或子字符串是否以傳入字符串開頭。
    strike 方法將 HTML 標記放置在文本兩側。
    sub 方法將 HTML 標記放置在文本兩側。
    substr 方法(常用)返回一個從指定位置開始且具有指定長度的子字符串。
    substring 方法返回 String 對象中指定位置處的子字符串。
    sup 方法將 HTML 標記放置在文本兩側。
    toLocaleLowerCase 方法返回一個字符串,其中所有字母字符都轉換為小寫形式,并將考慮主機環境的當前區域設置。
    toLocaleString 方法返回使用當前區域設置轉換為字符串的對象。
    toLocaleUpperCase 方法返回一個字符串,其中所有字母字符都轉換為大寫形式,并將考慮主機環境的當前區域設置。
    toLowerCase 方法返回一個字符串,其中所有字母字符都轉換為小寫形式。
    toString 方法返回字符串。
    toUpperCase 方法返回一個字符串,其中所有字母字符都轉換為大寫形式。
    trim 方法(常用)返回已移除前導空格、尾隨空格和行終止符的字符串。
    valueOf 方法返回字符串。

    10.5 包裝對象

    對象是 JavaScript 語言最主要的數據類型,三種原始類型的值——數值、字符串、布爾值——在一定條件下,也會自動轉為對象,也就是原始類型的“包裝對象”。

    所謂“包裝對象”,就是分別與數值、字符串、布爾值相對應的Number、String、Boolean三個原生對象。這三個原生對象可以把原始類型的值變成(包裝成)對象。

    var v1 = new Number(123); var v2 = new String('abc'); var v3 = new Boolean(true);typeof v1 // "object" typeof v2 // "object" typeof v3 // "object"v1 === 123 // false v2 === 'abc' // false v3 === true // false

    包裝對象的最大目的,首先是使得 JavaScript 的對象涵蓋所有的值,其次使得原始類型的值可以方便地調用某些方法。

    原始類型的值,可以自動當作對象調用,即調用各種對象的方法和參數。

    這時,JavaScript 引擎會自動將原始類型的值轉為包裝對象實例,在使用后立刻銷毀實例。

    比如,字符串可以調用length屬性,返回字符串的長度。

    'abc'.length // 3

    上面代碼中,abc是一個字符串,本身不是對象,不能調用length屬性。

    JavaScript 引擎自動將其轉為包裝對象,在這個對象上調用length屬性。

    調用結束后,這個臨時對象就會被銷毀。這就叫原始類型與實例對象的自動轉換。

    注意:JS的內置對象還有很多,我們只不過是學習了比較常用的幾個而已;

    在后面的學習中,我們還有講解使用其他類型的內置對象;

    可以查看狐火和微軟開發者社區,獲取更多知識……

    課外知識:

    如果有時間,在語言部分結束后,添加課程大綱外的擴展內容

    JS代碼規范&編程風格

    • 縮進:

      空格和tab鍵都可以,盡量保持一致,使用一種;

      兩個空格和四個空格都行,盡量保持一致就行,但是使用4個空格的多一些;
    • 分號:

      盡量不要忘記,每一行的結束都要加分號

      while 與 for 循環后面不要加分號if else、switch等分支語句后面不要加分號關鍵字聲明函數,后面不要加分號表達式聲明函數,函數后面加分號
    • 區塊:

      兩種寫法

    if(){}if() {}

    ? 理論上兩種都可以,但是盡量使用第一種,因為js會在行尾自動添加分號,有時會出現意外情況;

    • 圓括號

      函數的聲明和調用、表達式運算

      1:函數調用時,函數名和括號之間沒有空格

      2:函數聲明時,函數名和括號之間沒有空格

      3:參與表達式運算時,括號的前面和后面,都要加空格

    • 變量的聲明

      if (!x) {console.log(1); }//等同于 ↓ var x; if (!x) {console.log(1); }

      為了避免此種情況的出現,建議將所有在本作用域下聲明的變量都提到最前面聲明并賦值;

    • 自增自減運算

      因為 ++ 在前和++ 在后的運算結果不同,所以,盡量使用 +=1 -=1 替代,

      提高代碼的可讀性;

      你的團隊中一定有搞不明白++在前和在后的區別的二傻子;生活不易,請善待他們;

    • 賦值 =

      賦值前后加空格;

    變量命名和代碼縮進 規范,是一個程序員必備的基本編程素質;

    讓別人給你調試BUG的第一前提條件就是 縮進要規范

    調試工具

    代碼區、console控制臺、斷點調試、網絡、本地緩存、內存使用

    本文內容轉載至黑馬課程的學習筆記,對其中一些內容有添加和刪改。

    如果覺得對你有幫助的話,點個贊唄~

    總結

    以上是生活随笔為你收集整理的前端自学学习笔记——JavaScript的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产乱对白刺激视频在线观看女王 | 激情电影影院 | 91视频啪| 久久在线免费视频 | 国产天天综合 | 国产精品99久久久 | 国产精品不卡在线播放 | 久精品视频在线观看 | 在线免费黄网站 | 国产免费一区二区三区网站免费 | 99久久精品无免国产免费 | 天天草天天干天天射 | 亚洲高清av在线 | 欧美视屏一区二区 | 五月婷婷香蕉 | a在线视频v视频 | 久久精品高清 | 国产资源网站 | ,午夜性刺激免费看视频 | 日日夜夜噜噜噜 | 99视频精品在线 | 亚洲视频免费在线观看 | 日韩精品不卡在线观看 | 婷婷在线精品视频 | 91在线免费视频 | 国产精品不卡在线 | 色噜噜在线观看 | 日本性生活免费看 | 国产精品一区二区三区免费看 | 久久人人爽人人爽人人片 | 久久免费成人精品视频 | 天天av天天 | 色婷婷免费 | 97品白浆高清久久久久久 | 黄色一及电影 | 国产精品1区 | 亚洲电影第一页av | 亚洲精品永久免费视频 | 欧美精品免费在线观看 | 久久艹在线 | 草久久久| 久九视频 | 国产精品网址在线观看 | 成人精品一区二区三区电影免费 | 亚洲成人免费在线 | 日韩在线免费 | 日韩大片在线播放 | 久草免费色站 | 婷婷综合网 | 天天射天 | 久久久国产精品一区二区三区 | 色综合天天射 | 日韩1级片 | 在线免费国产视频 | 91亚洲精品久久久久图片蜜桃 | 日日夜夜免费精品视频 | 欧美日韩精品在线免费观看 | 五月婷婷操 | a电影免费看 | 91成人在线视频 | 在线观看视频一区二区三区 | 天天射射天天 | 午夜色婷婷 | 懂色av一区二区在线播放 | 亚洲精品理论片 | 日韩免费电影网站 | 天天操天天操天天操天天 | 中文字幕在线有码 | 久久久久免费精品视频 | 99tvdz@gmail.com| www.在线观看av | 18网站在线观看 | av在线影片| 日日爽| 精品国产诱惑 | www.久久色| 日韩精品2区| 激情欧美丁香 | 国产午夜一区二区 | 久久综合五月婷婷 | 久草精品视频在线播放 | 波多野结依在线观看 | 99色亚洲 | 精品一二| 国产不卡在线观看 | 久久色在线播放 | 黄色中文字幕在线 | 久艹在线播放 | 日本黄色黄网站 | 成人久久电影 | 韩日精品在线观看 | 黄色亚洲精品 | 欧美精品久久久久久 | 天天色播 | 97国产情侣爱久久免费观看 | 国产一区视频在线观看免费 | 精品在线一区二区三区 | www.com.日本一级 | 91精品国产99久久久久久红楼 | 97色综合| 激情综合中文娱乐网 | 92中文资源在线 | 日韩美女一级片 | 久久手机精品视频 | 美女免费视频观看网站 | 九九九免费视频 | 日本韩国精品在线 | 久久久久久久久久久精 | 亚洲国产网站 | 成人国产精品久久久 | 成人在线视频论坛 | 欧美一级xxxx | .国产精品成人自产拍在线观看6 | 天天色天天干天天色 | 国产精品婷婷 | 成人免费网视频 | 亚洲成人午夜在线 | 日韩二区三区在线 | 亚洲国产精品99久久久久久久久 | 男女靠逼app | 丁香婷婷成人 | 91香蕉视频 | 伊人色综合久久天天网 | 在线日韩一区 | 天堂在线视频中文网 | 国产黄色在线看 | 国产精品v a免费视频 | www亚洲精品| 久久试看 | 久久国产精品一区二区 | 2019中文字幕第一页 | 久久午夜免费视频 | 手机在线永久免费观看av片 | 中文字幕专区高清在线观看 | 日韩精品中文字幕久久臀 | 色91在线 | 久久久69 | 久久久精品综合 | 在线观看视频中文字幕 | 99久久夜色精品国产亚洲96 | av网址最新 | 国产大片黄色 | 黄色大片中国 | 日本99热 | www.天天操.com | 黄色av网站在线观看 | 久久亚洲私人国产精品va | av在线免费不卡 | www久久国产 | 亚洲精品免费在线观看视频 | 婷婷www| 国产免费美女 | 精品国模一区二区 | 精品国产一区二区三区久久 | 精品乱码一区二区三四区 | 在线播放 日韩专区 | 91在线文字幕 | 久久久人人爽 | av片子在线观看 | 狠狠躁夜夜a产精品视频 | 99电影 | 超碰成人av | 久久精品视频在线看 | 91九色在线视频 | 欧美一级片在线 | 日韩电影一区二区三区在线观看 | 国产日韩精品一区二区三区 | 色综合久久五月天 | 91大神在线观看视频 | 久久亚洲福利视频 | av天天干 | 国内精品久久久久久久 | 91九色porn在线资源 | 天天色天天射天天综合网 | 成人网大片 | 久久99精品视频 | 国产成人精品av在线观 | 91网站在线视频 | 婷婷成人综合 | 一区二区三区日韩视频在线观看 | 97在线视频免费看 | 中文字幕一区二区在线观看 | 久久国产视屏 | 久操视频在线播放 | 亚洲精品国产精品国自产观看浪潮 | 亚洲日本一区二区在线 | 这里只有精品视频在线观看 | 高清色免费 | 国产传媒中文字幕 | 国产日韩精品在线观看 | av片在线观看免费 | 国产在线看 | 久久福利影视 | 欧美性高跟鞋xxxxhd | 婷婷在线不卡 | 欧美ⅹxxxxxx | 久久国产精品二国产精品中国洋人 | 91亚洲精品在线观看 | 国产精品99久久久久久小说 | 青草视频在线 | 在线观看中文字幕第一页 | 一区三区视频在线观看 | 日韩精品无码一区二区三区 | 97国产精品久久 | 日韩激情在线视频 | 日韩三级在线 | 2019天天干天天色 | 国产精品久久久久一区 | 国内一区二区视频 | 黄色一级在线视频 | 国产91在线观 | 91在线一区二区 | 91看毛片 | 麻豆国产网站入口 | 日韩色在线| 国产精品久久精品 | www.久久久 | 亚洲五月激情 | 欧美在线观看小视频 | 在线免费观看羞羞视频 | 激情小说网站亚洲综合网 | 国产 日韩 在线 亚洲 字幕 中文 | 99精品视频在线观看免费 | 久草视频播放 | 正在播放国产精品 | www.五月天| 国产精品美女在线观看 | 欧美一级视频在线观看 | 在线激情网 | 亚洲视频www | 99视屏| 久久成人毛片 | 亚洲丝袜一区二区 | 97视频在线免费播放 | 色的网站在线观看 | 美女久久久久 | 91一区啪爱嗯打偷拍欧美 | 婷婷开心久久网 | 久草爱视频 | 国产精品白丝av | 97碰碰视频| 精品一区二区三区四区在线 | 在线亚洲午夜片av大片 | 成人av高清 | 日日爱av | 国产精品久久久999 国产91九色视频 | 国内精品久久久久影院男同志 | 精品女同一区二区三区在线观看 | 韩国在线视频一区 | 久日视频 | 久久久久亚洲精品国产 | 国产美女视频免费观看的网站 | 在线观看日韩精品视频 | 9i看片成人免费看片 | 一级性视频 | 亚洲欧美日韩中文在线 | 六月色| 视频一区二区视频 | 美女禁18| www欧美xxxx| 菠萝菠萝蜜在线播放 | 日韩国产在线观看 | 超碰日韩| 成人97视频一区二区 | 97电影院网 | 精品久久久久久久久久久院品网 | 91精品秘密在线观看 | 国产在线小视频 | 亚洲综合爱 | 水蜜桃亚洲一二三四在线 | 伊人干综合 | 色视频在线免费 | 久久久久久久久久电影 | 狠狠狠狠狠狠狠干 | 亚洲精品国产综合99久久夜夜嗨 | 国产资源网站 | 欧美色综合天天久久综合精品 | 天天躁天天躁天天躁婷 | 色婷婷激情电影 | 99久久精品午夜一区二区小说 | 亚洲播放一区 | 亚洲精品国产自产拍在线观看 | 国产精品黄色 | 97视频人人澡人人爽 | 亚洲欧洲一区二区在线观看 | 免费视频色 | 色av婷婷| 97av影院 | 操操色| 婷婷色伊人 | 国产精品美女久久久久久久久 | 超碰精品在线 | 2019免费中文字幕 | 九九九九热精品免费视频点播观看 | 999久久久| 欧美激情一区不卡 | 日韩一级成人av | 亚洲欧洲日韩在线观看 | 国产1区2 | 亚洲伊人色 | 中文字幕在线免费观看 | 婷婷综合电影 | 99热只有精品在线观看 | 天天操天天操天天操天天操 | 久热色超碰 | 日韩av成人在线观看 | 国产成人三级在线播放 | 91大神电影 | 香蕉97视频观看在线观看 | 在线观看免费中文字幕 | 丁香六月伊人 | 日韩午夜三级 | 国产在线精品国自产拍影院 | 美女视频黄,久久 | 免费福利视频导航 | 九九九在线观看视频 | 99这里只有久久精品视频 | 国产精美视频 | 欧美日韩网站 | 欧美激情第一页xxx 午夜性福利 | 国产高清中文字幕 | 欧美日韩色婷婷 | 国产一区二区三精品久久久无广告 | 香蕉视频在线观看免费 | 亚洲精品大片www | 2021国产视频| 最近最新中文字幕 | 中文字幕一区在线观看视频 | 国产免费一区二区三区网站免费 | 西西4444www大胆艺术 | 精品黄色视| www久久精品 | 国产一级性生活视频 | 中文字幕一区二区三区四区在线视频 | 夜夜爽天天爽 | 韩国av永久免费 | 国产成人在线免费观看 | 国产成人av网站 | 久久久久久久亚洲精品 | 国产成人精品免费在线观看 | 国产人成一区二区三区影院 | 久久精品视频在线播放 | 亚洲国产精久久久久久久 | 日韩电影精品 | 成人国产精品av | 亚洲激情六月 | 青青久视频 | 97手机电影网 | 精品女同一区二区三区在线观看 | 91视频免费 | 日韩中文字幕视频在线观看 | 在线视频观看你懂的 | 九九综合久久 | 中文字幕在线观看网站 | 激情偷乱人伦小说视频在线观看 | 中文字幕永久免费 | 高清av网 | 91视频免费国产 | 精品久久影院 | 欧美一区在线观看视频 | 亚洲国产成人精品电影在线观看 | 国产美女在线精品免费观看 | 欧美国产视频在线 | 久久免费片| 中文字幕 国产专区 | 亚洲1区 在线 | 正在播放国产91 | 成人永久免费 | 人人干人人艹 | 国产精品一区二区中文字幕 | 欧美日韩中文国产 | 91成人精品视频 | 亚洲婷婷综合色高清在线 | 成年人免费看的视频 | 91视频大全| 亚洲成人黄色在线观看 | 天天搞天天干 | 中文字幕中文字幕中文字幕 | 在线 成人 | 久久成熟 | 日韩视频免费在线 | 国内小视频 | 亚洲在线成人精品 | 在线成人观看 | 国产精品一区二区三区免费看 | 国产美女免费观看 | 视频一区二区三区视频 | 91av国产视频 | 国产中文字幕久久 | 中文字幕一区二区三区精华液 | 久久97久久 | 日日操夜夜操狠狠操 | 亚洲国产精品va在线看黑人动漫 | 精品在线观看免费 | 插婷婷 | 色综合久久久久综合99 | 亚洲精品高清视频在线观看 | 少妇bbbb搡bbbb搡bbbb | 在线视频免费观看 | 日本精品视频一区二区 | 免费看网站在线 | 免费看黄的视频 | 天天色中文 | 欧美一级视频免费看 | 毛片1000部免费看 | 午夜精品久久久99热福利 | 五月婷婷电影网 | 精品免费久久 | 91男人影院| 久久精品在线 | 99成人在线视频 | 亚洲综合在线五月天 | 黄色小说网站在线 | 综合成人在线 | 国产香蕉视频在线播放 | 午夜999| 亚洲国产偷 | 中文字幕 第二区 | 一区精品久久 | 国产精品理论片在线播放 | 色妞色视频一区二区三区四区 | 91看片黄色| 91在线亚洲| a黄色影院 | 欧美激情亚洲综合 | 国产精品毛片一区二区三区 | 欧美日韩免费观看一区二区三区 | 人人干天天干 | 亚洲高清免费在线 | av黄色在线播放 | 色香蕉视频 | 亚洲黄色在线播放 | 九九热免费在线观看 | 国产精品美女久久 | 国产麻豆剧传媒免费观看 | 精品久久久久久久久久久久 | 日韩av视屏在线观看 | 在线草 | 日韩三级成人 | 国产69久久久 | 亚洲成a人片综合在线 | 黄色成人91 | 永久精品视频 | 九九色在线观看 | 日韩偷拍精品 | 婷婷激情综合 | 国产精品第一 | 在线观看视频国产 | 日本三级香港三级人妇99 | 91日韩在线| 国产精品中文字幕在线播放 | 亚洲精品午夜久久久久久久久久久 | 国产精品久久久久久久久久久久午夜片 | 日韩极品视频在线观看 | 欧美精品v国产精品 | 一二三区视频在线 | 97色免费视频 | 美女免费视频一区 | 免费三级a | 在线91色| 婷婷av色综合 | 人人干人人模 | 午夜三级大片 | 久久国产视频网站 | 人人爱爱 | 免费观看v片在线观看 | 中文字幕色站 | 日韩精品一区二区三区水蜜桃 | 97在线影院 | 国产特级毛片 | 成人在线视频你懂的 | 在线观看911视频 | 日韩av电影中文字幕 | 99re中文字幕| 免费看的黄色 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | av在线亚洲天堂 | 国产精品久久久久久久久久不蜜月 | 国产不卡av在线 | 欧美久久精品 | av看片网 | 日韩电影一区二区在线 | av在线影片 | 91大神在线看 | 免费在线观看av电影 | 国产亚洲精品久久久久久 | 国产精品99久久99久久久二8 | 国产精品第一视频 | 久久在线 | 探花视频在线观看+在线播放 | 日韩精品视频在线免费观看 | 免费看黄的视频 | 久久成人在线视频 | 美女网色| 91精品久久久久久粉嫩 | 久草视频在线免费 | 欧美 亚洲 另类 激情 另类 | 久久一区二区三区超碰国产精品 | 久久综合狠狠综合久久激情 | 国产亚洲视频在线观看 | 国产九九精品视频 | 五月天婷婷丁香花 | 久草在线视频在线观看 | 一本一道久久a久久综合蜜桃 | 免费高清看电视网站 | 欧美日韩不卡一区二区三区 | 91精品国产一区二区在线观看 | 一区二区三区高清 | 亚洲天堂精品视频在线观看 | 中文字幕亚洲在线观看 | 香蕉视频一级 | 日韩精品一区二区三区丰满 | 国产九色91 | 精品美女在线视频 | www夜夜| 91激情视频在线观看 | 久久蜜桃av| 激情五月播播久久久精品 | www.五月婷婷 | 毛片精品免费在线观看 | 国产精品久久av | 免费亚洲精品视频 | 国产精品ssss在线亚洲 | 欧美一级高清片 | 国产在线久草 | 啪啪免费观看网站 | av电影在线免费观看 | 中文字幕 婷婷 | 在线免费色视频 | 国产高清一级 | 综合久久婷婷 | 国产原创91 | 国产亚洲日 | 99久久激情视频 | 欧美日韩国产一区二 | 国产黄色电影 | 精品国产一区二区三区四区vr | 亚洲九九九在线观看 | 国内视频在线观看 | 久久专区 | 中文字幕2021 | 999精品网| 亚洲精品资源在线 | 婷婷色网 | 人成免费网站 | 久久久首页 | 亚州精品在线视频 | 最新国产一区二区三区 | 亚洲做受高潮欧美裸体 | 亚洲五月六月 | 日本一区二区不卡高清 | 在线播放亚洲激情 | 亚洲激情综合网 | 深爱综合网 | 久草综合视频 | 日韩欧美一区二区三区视频 | 久久精品视频网 | 91资源在线观看 | 亚洲人成精品久久久久 | 91精品国产欧美一区二区成人 | 欧美特一级 | 亚洲va天堂va欧美ⅴa在线 | 丁香视频在线观看 | 欧美性色19p | 最近最新mv字幕免费观看 | 成人在线免费看视频 | 国产99久久精品 | 国产一级片免费视频 | 免费观看特级毛片 | 国产亚洲综合精品 | 麻豆 91 在线 | 丝袜制服综合网 | av免费观看网站 | 久久男女视频 | 九色视频自拍 | 视频国产精品 | 亚洲精品a区 | 美女视频免费一区二区 | 日韩在线视频观看免费 | 中文字幕一区二区三区乱码不卡 | 成人a级网站 | 国产在线精品二区 | 日本三级不卡视频 | 日本午夜在线亚洲.国产 | 久久尤物电影视频在线观看 | 日韩av影视在线观看 | 亚洲人成在线观看 | 国产精品久久久久久久久久久不卡 | 欧美激情视频一区 | 成人亚洲精品久久久久 | 亚洲美女在线一区 | 91福利影院在线观看 | 狠狠艹夜夜干 | 久久精品视 | 日韩亚洲在线视频 | 日韩精品播放 | 久久成人在线视频 | 六月丁香久久 | 在线电影91 | 97人人模人人爽人人喊网 | 在线视频区 | 免费看污网站 | 丁香六月网| 日韩视频免费 | 久久国产亚洲精品 | 成人免费观看网站 | www.黄色在线 | 精品99999 | 国产99中文字幕 | 日韩av电影中文字幕在线观看 | 九九天堂 | 97精品国产97久久久久久 | www.天天色.com | 欧美视频网址 | 五月天亚洲婷婷 | 成年人三级网站 | 在线午夜电影神马影院 | 久久99九九99精品 | 国产日韩欧美在线播放 | 欧美日韩网站 | 日韩精品在线看 | 免费成人在线观看视频 | 国产精品丝袜在线 | 日韩在线观看一区二区 | 久久久久看片 | 亚洲闷骚少妇在线观看网站 | 成年人免费电影 | 日韩av区| 亚洲理论片| 韩国三级在线一区 | 伊人五月综合 | 在线免费视频 你懂得 | 青青河边草免费观看完整版高清 | 亚洲国产精品成人综合 | 日韩精品无码一区二区三区 | 国产精品一区二 | 视频一区二区在线 | 国产麻豆视频免费观看 | 色综合天天在线 | 中文乱码视频在线观看 | av不卡免费看 | 久久国产福利 | 色婷婷久久久 | 日韩美女av在线 | 区一区二区三区中文字幕 | 天堂中文在线播放 | 亚洲国产精品va在线看黑人动漫 | 久久国产欧美日韩精品 | 国产亚洲久一区二区 | 国产黄在线免费观看 | 黄色a在线 | 国产精品国产精品 | 在线观看视频福利 | 久插视频 | 久操视频在线免费看 | 99久久免费看 | 久久96国产精品久久99软件 | 亚洲成熟女人毛片在线 | 婷婷色五| .精品久久久麻豆国产精品 亚洲va欧美 | 美女网站免费福利视频 | 国产精品视频大全 | 国产中文a| 摸阴视频 | 91亚洲国产成人 | 久久视 | a天堂在线看 | 在线免费国产 | 日韩高清在线一区 | 免费黄色看片 | 精品久久久久久久久亚洲 | 国产日韩欧美在线影视 | 国产精品日韩欧美 | 国产精品区一区 | 欧美一二三区在线观看 | 午夜少妇 | 国内精品中文字幕 | 爱射综合 | 久久精品国产一区二区电影 | 麻花传媒mv免费观看 | 在线观看91视频 | 国产一区二区三区久久久 | 中文字幕乱在线伦视频中文字幕乱码在线 | 黄色亚洲片 | 日韩视频 一区 | 天天操天天添天天吹 | 亚洲 欧美 另类人妖 | 亚洲国产精品va在线看黑人动漫 | 国产成人免费 | 亚洲有 在线 | 国产精品99页 | 久久国语 | 三级av免费观看 | 77国产精品 | 欧美精品亚洲精品 | va视频在线 | 日韩成片 | 欧美日韩精品电影 | 亚洲精品乱码久久久久久蜜桃欧美 | 最新中文字幕在线资源 | 国产日产高清dvd碟片 | 久久视频这里只有精品 | 天天操天天干天天操天天干 | 天天操操 | 亚洲波多野结衣 | 久久伦理 | 欧美日韩一区二区久久 | 91chinesexxx| 在线亚洲精品 | 午夜精品福利一区二区 | 国产黄色在线 | 久久久免费观看视频 | 国产精品爽爽爽 | 最新日韩电影 | 国产福利精品在线观看 | av黄网站 | 免费高清在线观看成人 | www视频在线播放 | 中文字幕视频在线播放 | 国产精品麻豆三级一区视频 | 国产日产亚洲精华av | 97品白浆高清久久久久久 | 亚洲天堂网在线视频观看 | 在线不卡中文字幕播放 | 免费一级黄色 | 国产精品久久久久aaaa | 日韩在线视频二区 | 亚洲一区动漫 | 日韩黄色免费看 | 日韩高清精品免费观看 | 亚洲涩涩色 | 一区二区 久久 | 天堂网中文在线 | 天天操天天干天天综合网 | 在线黄网站 | 黄色大片国产 | 99麻豆视频 | 999久久国精品免费观看网站 | 国产aa免费视频 | 五月天视频网站 | 国产一级片一区二区三区 | 欧美日韩伦理一区 | 天天干天天拍天天操天天拍 | 伊人久久电影网 | 激情久久综合网 | 国产黄色大片 | 国产在线1区 | 三上悠亚在线免费 | 美女精品在线观看 | 日韩一区二区三区视频在线 | 97精品国产91久久久久久久 | 亚洲狠狠丁香婷婷综合久久久 | 日韩 国产 | 99视频99| 伊人导航 | 免费成人黄色片 | 久久免费福利 | 色偷偷888欧美精品久久久 | 成人精品在线 | 亚洲婷婷在线 | av资源网在线播放 | 六月婷婷网 | 久艹在线播放 | 久久tv视频 | 久久久久在线视频 | 夜夜视频| 天天操天天操天天 | 我要色综合天天 | 久久69精品 | av大片网站| 视频在线观看一区 | 99免费在线观看视频 | 激情综合网五月 | 黄色电影小说 | 日韩激情中文字幕 | 婷婷丁香花五月天 | 伊人成人激情 | 久草国产精品 | 黄色大全视频 | 国产精品国产自产拍高清av | 天天躁日日 | 2020天天干天天操 | 波多野结衣精品 | 欧美性生爱| 免费看国产曰批40分钟 | 国产成人精品电影久久久 | 91精品小视频 | 成人av网站在线播放 | 婷婷久久丁香 | 久久公开视频 | 成人一级免费视频 | 国产精品99久久久久久久久久久久 | 97超碰在线免费观看 | 最新av在线播放 | 成人a级免费视频 | 亚洲精品激情 | 99精品电影 | 国产无遮挡又黄又爽在线观看 | 国产男女免费完整视频 | 99精品国产免费久久久久久下载 | 99视频黄| 激情大尺度视频 | 精品福利网 | 午夜av在线免费 | www.69xx| 国产视频一区在线播放 | 中文字幕资源网 | 丁香在线观看完整电影视频 | 免费av在线播放 | 久操97| 狠狠躁夜夜躁人人爽超碰91 | 婷婷激情综合五月天 | 亚洲国产中文字幕在线观看 | 免费看日韩片 | 美女网站视频免费都是黄 | 日韩久久影院 | 美女免费视频黄 | 国产不卡网站 | 麻豆传媒一区二区 | 97在线资源 | 国产清纯在线 | 在线观看www91 | 精品久久久久久亚洲综合网 | 日韩精品一区二区三区中文字幕 | 天天操天天射天天添 | 深爱综合网 | 黄色成人av | 精品影院一区二区久久久 | 999视频网 | 天天天综合网 | 欧美男男激情videos | 成人精品久久 | 九九精品久久 | 欧美a√大片 | 国产高清在线观看 | 国产精品99久久久久久武松影视 | 免费在线精品视频 | 一区二区精品国产 | 天堂久色 | 国产在线超碰 | av电影免费观看 | 久久69av | 91精品啪在线观看国产81旧版 | 最新午夜| 日韩av免费一区 | 中文字幕av免费观看 | 国产成人精品av在线 | 欧美一级特黄aaaaaa大片在线观看 | 亚洲美女免费精品视频在线观看 | 欧美日韩精品在线播放 | 国产视频精品免费播放 | 精品在线99 | 国产不卡在线视频 | 免费网站看av片 | 青春草免费视频 | 美女视频a美女大全免费下载蜜臀 | 国产精品2018 | 色偷偷88888欧美精品久久 | 欧美在线观看禁18 | 久久久穴 | 日韩久久午夜一级啪啪 | 国产亚洲免费的视频看 | 一本之道乱码区 | 久久成人在线视频 | 国产精品剧情在线亚洲 | 在线视频 区| 亚洲成年人在线播放 | 精品一区二区精品 | 很黄很色很污的网站 | 欧美做受高潮1 | 国产福利在线 | 午夜婷婷在线观看 | 天天综合色 | 99热 精品在线| 美女网站色在线观看 | 伊人网av | 欧美在一区 | 久99久在线视频 | 中文字幕在线观看第一页 | 欧美日韩亚洲第一页 | 国产成人61精品免费看片 | www.夜夜爱 | 五月婷婷六月丁香 | 嫩草伊人久久精品少妇av | 外国av网 | 日韩欧美一区二区在线观看 | 国产精品女主播一区二区三区 | 国语黄色片| 美女黄视频免费看 | 国产人成精品一区二区三 | 九九在线视频 | 一区二区三区在线观看免费 | 日日夜夜天天久久 | 亚洲欧美国产精品va在线观看 | 五月在线视频 | 成年人在线播放视频 | 午夜视频免费在线观看 | 国产99久久精品一区二区永久免费 | 超碰97av在线 | av一级一片 | 日本成人免费在线观看 | 亚洲最大免费成人网 | 激情导航 | 亚洲成av人片在线观看香蕉 | 在线视频观看成人 | 国产美女网 | 狠狠干夜夜爽 | 午夜色大片在线观看 | 色视频国产直接看 | 国产精品69av | 日韩精品中文字幕有码 | 91福利视频网站 | 免费一级片在线 | 97人人澡人人添人人爽超碰 | 精品久久国产一区 | 色狠狠久久av五月综合 | 国产精品丝袜久久久久久久不卡 | 男女全黄一级一级高潮免费看 | 色综合网在线 | 五月天网站在线 | 国产精品剧情在线亚洲 | 久久精品国产第一区二区三区 | 国产精品一区二区av | 狠狠干天天 | 国产亚洲精品无 | 国产精品嫩草69影院 | 日本护士撒尿xxxx18 | 91看片网址 | 国产不卡在线观看视频 | 99久久精品免费看国产四区 | 免费在线观看的av网站 | 亚洲综合成人专区片 | 亚洲精品午夜国产va久久成人 | 久久精品久久久久电影 | 欧美午夜精品久久久久久孕妇 | 国产精品久久久久久久久久东京 | 免费视频你懂的 | 午夜色大片在线观看 | 久久综合久久综合这里只有精品 | 国产黄色av网站 | 美女黄网站视频免费 | 91综合色| 精品久久久久久综合日本 | 日本资源中文字幕在线 | 久草网站在线观看 | av看片在线观看 | 久久久亚洲网站 | 91精品一区国产高清在线gif | 激情网色| 亚洲欧洲一级 | 国产香蕉久久精品综合网 | 黄色亚洲免费 | www.久久色 | 国产精品国产精品 | 中文字幕欧美日韩va免费视频 | 精品久久片| 中文字幕在线观看三区 | 日韩理论在线播放 | 91精品免费看 | 久久综合天天 | 欧美一二三区在线播放 | 色综合久久悠悠 | 亚洲精品在线视频网站 | 一区二区三区在线观看 | 国产精品久久久久永久免费看 | 青青河边草免费 | 久久久高清视频 | 国产在线观看你懂得 | 国产精品99久久久久久有的能看 | av大片网址 | 99精品国产高清在线观看 | 日本三级香港三级人妇99 | 成人av免费在线播放 | 亚洲国产激情 | 欧美精品黑人性xxxx | 狠狠操操 | www.精选视频.com | 国产99在线免费 | 国产乱码精品一区二区三区介绍 | 婷婷五综合 | 久操操| 国产福利一区二区三区在线观看 | 国产一区在线播放 | 国产一级三级 | 中文字幕2021 | 欧美久久久久 | 手机av在线网站 | 日韩精品视频在线免费观看 | 97天天干 | 日本午夜在线亚洲.国产 | 亚洲无在线 | 国内精品在线观看视频 | 欧美国产一区二区 | 一级黄色毛片 | 一区二区 不卡 | 一区二区不卡在线观看 | 成人黄色小视频 | 国产一二区精品 |