天天看點

2020-08-29---周總結day1 JavaScript基本文法

js第一周總結

  • day1 JavaScript基本文法
    • 一、JavaScript概述
    • 二、如何引入就js?
    • 三、如何輸出?(面試)
    • 四、如何換行?
    • 五、注釋
    • 六、資料類型
    • 七、辨別符命名規則
    • 八、變量或常量
    • 九、運算符與表達式
      • 1. ++ -- 遞增遞減運算符
      • 2. 算數運算符
        • * / % -
        • +
      • 3.關系運算符
        • > < >= <=
        • == !== === !==
      • 4.邏輯運算符
      • 5.三元(三目)運算符
      • 6.指派運算符
      • 7.特殊運算符
    • 十、内置函數
      • 1.isNaN():判斷是否為NaN
      • 2.evel():解析字元串為表達式并傳回表達式的結果
      • 3.parseInt('字元串',2-36)
      • 4.parseFloat('字元串')
      • 5.number('字元串')
      • 十一、代碼規範
    • day2 邏輯分支
      • 一、程式控制的三大結構
      • 二、實作選擇結構的語句有哪些?
        • if
          • 單分支選擇
          • 雙分支
          • 多分支
        • switch
    • day3 循環結構
      • 一、循環結構
      • 二、循環思想(循環三要素)
      • 三、實作循環的語句?
      • 四、文法
        • while:當型循環
        • do while:直到型循環
        • for:多功能循環
      • 五、額外的格式
      • 六、無限循環(死循環):條件永遠為真
      • 七、循環之間的差別
        • 1.while
        • 2.do while
        • 3.for
      • 八、break continue
        • break
        • continue
    • day4 函數(上)
      • 一、什麼是函數
      • 二、好處
      • 三、函數的分類
      • 四、函數的類型
      • 五、函數的聲明
      • 六、調用函數
      • 七、函數的參數
      • 八、函數的傳回值
      • 九、事件相關概念
    • day5 函數(下)
      • 一、遞歸
      • 二、如何建立對象?
      • 三、如何通路對象中的屬性和方法

day1 JavaScript基本文法

一、JavaScript概述

  1. 什麼是JavaScript?

    是一門基于對象和事件驅動的用戶端腳本語言。

  2. 哪一年?哪個公司?誰?第一個名字叫什麼?

    1995年 網景 布蘭登 livescript

  3. ECMA提出的第一套W3C标準:

    ECMA-262

  4. js包含哪幾部分?

    ECMAScript

    BOM

    DOM

二、如何引入就js?

  1. 行内腳本(通過事件驅動)
  2. 内部腳本
  • 外部腳本

注:如果是外部引入,那麼在script标簽中不要寫任何妮兒,因為寫了也不執行。

三、如何輸出?(面試)

  1. alert():以警告框的形式輸出。但是會中斷後續語句的執行。通常在排錯時使用。
  2. document.write():輸出在頁面中,會影響頁面布局。
  3. console.log():在控制台輸出。輸出對象的詳細資訊。

四、如何換行?

  1. 頁面中換行 ‘< br >’
  2. 非頁面中換行 \n

    注:轉義字元 \ :将特殊含義的符号轉成普通字元。

    \t : 表示橫向跳格(一次跳8個空格)

五、注釋

  • HTML < !-- – >
  • CSS / * * /
  • JS

    單行注釋 //

    多行注釋 / * * /

六、資料類型

基本資料類型:number(數字) string(字元串) Boolean(布爾) null(空) undefined(未定義)

複合資料類型:object(對象)

七、辨別符命名規則

  1. 隻能包含:字母、數字、下劃線、$
  2. 不能以數字開頭
  3. 不能是關鍵字或保留字
  4. 語義化
  5. 駝峰命名

    (1)大駝峰: HowAreYou (構造函數、類名)

    (2)小駝峰:howAreYou (函數名)

    how_are_you(變量名)

  6. 匈牙利命名
  • 整數:i_num
  • 小數:f_num
  • 字元串:s_str
  • 字元:ch
  • 布爾值:bo
  • 數組:arr
  • 函數:fn
  • 對象:o_div

八、變量或常量

  1. 什麼是變量?

    在記憶體中開辟空間,用于存儲資料,而随着程式的運作,這個空間的資料會發生變化,是以稱為變量。

  2. 如何聲明變量?

    (1)顯示聲明:var 變量名,變量名,變量名;

    (2)隐式聲明:變量名 = 值;

  3. 如何給變量指派?

    (1)初始化變量值:聲明變量的同時給它指派

    (2)先聲明,後指派

  4. 什麼是常量?

    3 true false ‘3’

九、運算符與表達式

1. ++ – 遞增遞減運算符

從左到右,如果先看到變量,則先取出變量中的值參與其它運算,變量中的值再+1或-1。

從左到右,如果先看到運算符,則先将變量中的值+1或-1,再參與其它運算。

2. 算數運算符

* / % -

規則

  1. 如果是number類型之間的運算,直接運算
  2. 如果是不同類型資料之間運算,則先轉成數字,再運算。(轉成功,則直接運算;轉失敗,轉為NaN,運算結果直接是NaN)
  3. true(轉為1) false(轉為0) null(轉為0)
  4. undefined NaN 結果一定是NaN(not a number )

注:

  • 0除以非0 的數 :0
  • 非0的數除以0 : infinity
  • 0除以0:NaN
  • 0模非0的數 : 0
  • 非0的數模0 : NaN
  • 0模0 :NaN

+

規則

如果+兩邊有字元串,就連接配接成新的字元串

3.關系運算符

> < >= <=

  1. 相同類型比較,直接比較
  2. 字元串比較,從左到右依次比較
  3. true(1) false(0) null(0)
  4. undefined(false) NaN(false)
console.log(4 > '3');  //true
console.log(NaN >= NaN)  //false
           

== !== === !==

  • == !== :隻比較結果,不看類型
  • === !== :先比較資料類型,再比較結果

//切記

console.log(null == false); //false
console.log(null == 0); //false
console.log(null == ''); //false
console.log(null == undefined); //true
console.log(null === undefined); //false
console.log(NaN == NaN); //false
           

4.邏輯運算符

false,0,null,undefined,NaN天然為假

  • !: 非真即假,非假即真 。 !“ ” false
  • && : 如果&&左邊表達式的值為true時,傳回右邊表達式的值;如果&&左邊表達式的值為false時,發生短路,不在執行右邊的表達式,直接傳回左邊表達式的值。(要特别注意,傳回的是表達式的值,不一定是true或false)
  • || : 如果||左邊表達式的值為false時,發生短路,不在執行右邊的表達式,直接傳回左邊表達式的值;如果||左邊表達式的值為true時,傳回右邊表達式的值。

5.三元(三目)運算符

  • 一進制(單目):!、++、 - - 、 +(正)、-(負)
  • 二進制(雙目):* 、/ 、%、 +(加)、 -(減)&& 、 || 、關系運算符
  • 三元(三目):?:

    文法:條件?語句:語句

    當條件為true時,執行:前面的語句

    當條件為false時,執行:後面的語句

    擴充

prompt(‘提示性語句’,‘預設值’):彈出一個使用者輸入的框。
//第二個參數可以省略
           

6.指派運算符

  1. 簡單指派 =
  2. 複合算數指派 += 、-= 、*= 、/= 、%=

    規則:先取 運算符左邊變量中的值 與 運算符右邊表達式的值 進行相應的 算術運算,最後将結果指派給左邊的變量。

7.特殊運算符

  1. new : 用于建立對象

    文法:new 構造函數()

var o_num = new number();
var o_obj = new object();
           
  1. typeof 用于檢測資料類型

    typeof後輸出的值為字元串類型

console.log(typeof 4);//'unmber'
console.log(typeof '4');  //'string'
console.log(typeof true); //'boolean'
console.log(typeof null); //'object'
console.log(typeof undefined); //'undefined'
console.log(typeof NaN);      //'number'
console.log(typeof typeof 3);  //'string'
           

十、内置函數

1.isNaN():判斷是否為NaN

console.log(isNaN('8 8'));//true
console.log(isNaN('3.4.2'));//true
console.log(isNaN(0 / 0));//true
console.log(isNaN(3 / 0));//false
           

2.evel():解析字元串為表達式并傳回表達式的結果

3.parseInt(‘字元串’,2-36)

将字元串左邊有效的數字部分,轉為整數。如果第一個字元是非有效數字,則轉NaN

第二個參數是用于限制第一個參數的進制範圍。

  1. 如果省略第二個參數或第二個參數為0時,表示十進制
  2. 如果第二個參數是小于2或者大于36,結果為NaN
  3. 如果第一個參數不符合第二個參數的進制範圍,結果為NaN
<script>
        console.log(parseInt("5 5")); //5 
        console.log(parseInt("3.256"));//3
        console.log(parseInt("3a"));//3
        console.log(parseInt("a3"));//NaN
        console.log(parseInt("0x56"));//86    //0x :表示十六進制數
        console.log(parseInt("3",2));//NaN
        console.log(parseInt("3a",1));//NaN
    </script>
           

4.parseFloat(‘字元串’)

将字元串左邊有效的數字部分,轉為小數。如果第一個字元是非有效數字,則為NaN

console.log(parseFloat('3.4.5'));  //3.4
console.log(parseFloat('4 23'));  //4
console.log(parseFloat('a34.3')); //NaN
           

5.number(‘字元串’)

将有效數字字元串轉為數字。如果其中有一個非有效數字,則轉為NaN

console.log(Number('3.4.5'));  //NaN
console.log(Number('3 4'));  //NaN
console.log(Number('3a')); //NaN
           

十一、代碼規範

  1. 運算符兩邊加一個空格
  2. 語句結束加分号
  3. 如果在{}中,縮進一個tab
  4. 小括号嵌套,加空格( () )

day2 邏輯分支

一、程式控制的三大結構

  1. 順序結構

    從上到下,從左到右依次執行每一條語句,不允許跳過任何一條語句。

  2. 選擇結構

    根據條件判斷,執行某一段代碼

  3. 循環結構

    滿足一定條件。重複執行一段代碼

二、實作選擇結構的語句有哪些?

  1. ?:
  2. if
  3. switch

if

單分支選擇
if(條件){
	語句組;
}
           
雙分支
if(條件){
	語句組;
}else{
	語句組;
}
           
多分支
if(條件){
	語句組;
}else if(條件){
	語句組;
}else if{
	語句組;
}
...
else if(條件){
	語句組;
}else{
	語句組;
}
           

switch

switch(表達式){
	case 表達式 : 語句組;[break];
	case 表達式 : 語句組;[break];
	case 表達式 : 語句組;[break];
	...
	case 表達式 : 語句組;[break];
	default : 語句組;
}
           

規則:先計算switch後表達式的值,該值如果與某個case後表達式的值一緻,則執行該case後的語句組,如果後面有break,則退出switch語句。如果沒有break,則繼續執行後面所有的語句組,知道遇到break或右大括号結束。

day3 循環結構

一、循環結構

滿足某一條件,重複執行某一段代碼。

二、循環思想(循環三要素)

  1. 從哪裡開始
  2. 到哪裡結束
  3. 步長(步進)

三、實作循環的語句?

  1. while
  2. do while
  3. for

四、文法

while:當型循環

循環初值;
while(循環條件){
	語句組;
	步長;
}
           

do while:直到型循環

循環初值;
do{
	語句組;
	步長;
}while(循環條件);

           

for:多功能循環

for(循環初值;循環條件;步長){
	語句組;
}
           

五、額外的格式

循環初值;
for(;循環條件;步長){
	語句組;
}

循環初值;
for(;循環條件;){
	語句組;
	步長;
}
           

六、無限循環(死循環):條件永遠為真

while(1){}

do{} while(1);

for(;1;){}

七、循環之間的差別

1.while

  1. 當型循環,先判斷條件,後執行語句
  2. 第一次條件為false是,一次都不執行
  3. 當循環次數不确定時,建議使用

2.do while

  1. 直到型循環,先執行語句,後判斷條件
  2. 第一次條件為false時,至少執行一次。
  3. 當循環次數不确定時,建議使用

3.for

  1. 當型循環,先判斷條件,後執行語句
  2. 是哪個第一次條件為false時,一次都不執行
  3. 當循環次數确定時,建議使用。

八、break continue

break

  1. 用于switch語句中,跳出switch語句
  2. 用于循環語句中,跳出目前循環

continue

用于循環語句,跳出本次循環,提前進入下一次循環。

day4 函數(上)

一、什麼是函數

反複使用 功能代碼 封裝

二、好處

  1. 程式可控
  2. 一次封裝,多次使用(複用)
  3. 随處可調

三、函數的分類

  1. 内置(庫、系統)函數
  2. 自定義函數

四、函數的類型

function

五、函數的聲明

  1. 語句定義法:任意位置都可調用
function 函數名([參數]){
	//實作的功能代碼
}
           
  1. 表達式定義法:隻能先聲明,後調用
var 函數名 = function([參數]){
	//實作的功能代碼
}
           

六、調用函數

  1. 一般調用:函數名([參數])
  2. 事件調用

七、函數的參數

  1. 實際參數(實參):調用函數時使用的參數,可以包括常量、變量、表達式
  2. 形式參數(形參):定義函數時使用的參數,隻能是變量。

    注:

    當實參數量多于形參數量時,多于的實參忽略

    當實參數量少于形參數量時,多于的形參值為undefined

八、函數的傳回值

return:

  1. 将函數的處理結果傳回到調用該函數的地方
  2. 退出函數

九、事件相關概念

o_div.onclick = function(){
	console.log('我點選了滑鼠');
}
/*
o_div:事件監聽的對象
click:點選事件(名詞)
onclick:事件驅動
function(){}事件處理程式
*/
/*
綁定事件的文法
對象.事件驅動 = 事件處理程式
*/
           
onload : 加載事件
    表單
    onfocus : 得焦事件
    onblur : 失焦事件
    onchange : 改變事件

    滑鼠
    onclick :點選事件
    ondblclick : 輕按兩下事件
    onmousedown : 滑鼠按下事件
    onmouseup : 滑鼠彈起事件
    onmouseover : 滑鼠移入事件
    onmouseout : 滑鼠移出事件
    onmouseenter : 滑鼠移入事件
    onmouseleave : 滑鼠移出事件
    onmousemove : 滑鼠移動事件

    鍵盤
    onkeydown : 鍵盤按下事件
    onkeyup : 鍵盤彈起事件
    onkeypress : 鍵盤按過事件
           

day5 函數(下)

一、遞歸

自己調用自己

遞歸的本質:循環(初始值,條件,步長)

二、如何建立對象?

  1. 字面量的方式

    {key:value,key:value}

    當隻需要一個對象的時候使用

  2. new 内置構造函數()

    new object();

  3. new 自定義構造函數()

    new 函數名();

    批量建立對象時使用

構造函數文法

function 函數名([參數]){
	this.屬性 = 值;
	this.方法 = function(){
	...
	}
}
           

三、如何通路對象中的屬性和方法

  1. 對象.屬性 對象.方法
  2. 對象[‘屬性’] 對象’方法’
h5