1.變數 var num=10; var num1,num2,num3; num1=10; num2=20; num3=30; var num1=10,num2=20,num3=30; 註意點: console.log(a); //報錯 var b; console.log(b); //undefi ...
1.變數 | |
var num=10; | |
var num1,num2,num3; | |
num1=10; | |
num2=20; | |
num3=30; | |
var num1=10,num2=20,num3=30; | |
註意點: | |
console.log(a); //報錯 | |
var b; | |
console.log(b); //undefined | |
c=10; | |
console.log(c); //10 會預設為全局變數,正常輸出,不推薦這種寫法 | |
2.數據類型 | |
var num=10; //數值類型 | |
var str='123'; //字元串類型 | |
var flag=true; //布爾類型 | |
var obj = {} //對象類型,預設值null | |
var undefined = undefined; //未定義類型 | |
數據類型的轉換: | |
轉換成字元串類型: | |
str.toString() //大部分類型都有toString()方法 | |
String(str) //undefined,null等特殊值,需要用到String() | |
轉換成數值類型: | |
parseInt() 123.123abc // 123 | |
parseFloat() 123.123abc //123.123 | |
Number() 123.123abc //報錯 | |
轉換成布爾類型: | |
Boolean() | |
轉換為false的五種情況: 0 '' null undefined NaN | |
其他的值都轉換為true: 非0和非空都為true | |
隱式轉換: | |
任意類型+ 字元串 會轉換為字元串 | |
任意的類型 - * / 會轉換為數值 | |
特殊情況: | |
NaN : 不是一個數字 | |
isNaN(); 不是人 | |
數據類型檢測: | |
typeof str | |
3.條件判斷 | |
單向判斷 | |
if(條件滿足){ | |
//執行語句 | |
} | |
雙向判斷 | |
if(條件滿足){ | |
//執行語句 | |
}else{ | |
//條件不滿足執行 | |
} | |
多向判斷 | |
if(條件1滿足){ | |
//執行語句1 | |
}else if(條件2滿足){ | |
//執行語句2 | |
}else if(條件3滿足){ | |
//執行語句3 | |
}else{ | |
//以上都不滿足,執行這裡 | |
} | |
精準判斷 | |
switch(條件){ | |
case 條件1: | |
語句1; | |
break; | |
case 條件2: | |
語句2; | |
break; | |
default: | |
最後的語句; | |
break; | |
} | |
三元運算符 | |
條件 ? 條件滿足返回 : 條件不滿足返回 | |
總結: | |
if和switch的區別? | |
if適合用於確定範圍的判斷 | |
switch適合用於確定的具體值判斷 | |
2.switch的註意點 | |
switch的條件比較是全等(===) | |
break可以省略,但是會穿透執行. | |
4.迴圈 | |
迴圈都必須有三個條件: 開始條件,條件範圍,條件增量 | |
for迴圈 | |
var sum=0; | |
for(var i=1; i<=100; i++){ | |
sum+=i; | |
} | |
while迴圈 | |
var sum = 0; | |
var i=1; | |
while(i<=100){ | |
sum+=i; | |
i++; | |
} | |
do-while迴圈 | |
var sum =0; | |
var i=1; | |
do{ | |
sum+=i; | |
i++; | |
}while(i<=100) | |
總結: | |
1.三種迴圈之間的區別? | |
for適用於迴圈次數確定的情況,while和do-while適用於迴圈次數未知的情況 | |
while是先判斷,再執行, do-while是先執行一次,再判斷 | |
2.continue 和 break | |
continue 跳過當前迴圈 | |
break 跳出整個迴圈 | |
5.數組 | |
var arr=[]; 數組的基本語法 | |
var arr[1,2,3,4,5]; 數組可以存多個值,建議存同類型的值,但是可以存任意類型的值. | |
arr.length 數組的長度 | |
arr[0] 表示數組中的第一個元素 | |
arr[1] 表示數組中的第二個元素 | |
arr[0]=10; 表示將數組中的第一個元素修改或者賦值為0 | |
動態增加數組 arr[arr.length] | |
6.函數 | |
函數的作用: 封裝功能,可以復用. | |
函數的語法: 定義 + 調用 | |
函數的定義: | |
function 函數名(參數){ | |
//執行語句 | |
return 結果; | |
} | |
函數的調用: | |
函數名(值); //可以將函數的返回值存到變數中使用 | |
形參: 函數定義的時候的參數,本質上是一個局部變數 | |
實參: 函數調用的時候的參數,需要傳入一個具體的值. | |
註意; 形參和實參建議一一對應 | |
內置實參對象: arguments 使用中括弧數組的方式獲取實參 | |
函數的其他寫法: | |
匿名函數: function(){} | |
函數表達式: var fn=function(){} fn(); | |
自調用函數: (function(){})() | |
7.對象 | |
對象: 就是將現實事物抽象為功能代碼. 將現實世界的東西,用對象的語法格式來表示. | |
對象的語法: 對象中有屬性和方法 | |
對象的三種寫法: | |
1.字面量寫法 | |
var zs={ | |
name:'張三', | |
age:18, | |
sayHi:function(){ | |
console.log("你好"); | |
} | |
} | |
zs.name | |
zs.age | |
zs.sayHi() | |
2.new Object()寫法 | |
var zs = new Object(); | |
zs.name='張三'; | |
zs.age=18; | |
zs.sayHi=function(){} | |
3.構造函數寫法 | |
function Person(name,age){ | |
this.name= name; | |
this.age=age; | |
this.sayHi=function(){} | |
} | |
var zs = new Person('張三',18); | |
對象的遍歷: for-in | |
for(var key in Obj){ | |
console.log(key+'--'+Obj[key]); | |
} | |
8.內置對象 | |
Math對象 : 數學對象 Math.random() Math.floor() Math.ceil() Math.max() Math.min() | |
任意區間隨機數公式:Math.floor(Math.random() * (max - min + 1) + min); | |
Date()時間對象: | |
var date = new Date(); //獲取當前時間 | |
var date = new Date('2018-8-8 12:12:12'); //獲取當前時間 | |
var date = new Date('2018/8/8'); //獲取當前時間 | |
var date = new Date(2018,7,6); //獲取時間,月份會大1 ,7 表示8月份 | |
1.先轉換成毫秒,然後再轉換成年月日,時分秒 | |
date.getTime() | |
date.Valueof() | |
date.now() | |
2.通過對象的內置方法,直接獲取年月日,時分秒 | |
date.getFullYear(); //年 | |
date.getMonth(); //月 0 一月份 1 二月份 | |
date.getDate(); //日 | |
date.getDay(); //星期幾, 0 周日 1周一 6周六 | |
date.getHours(); //小時 | |
date.getMinutes(); //分鐘 | |
date.getSeconds(); //秒數 | |
3.會計算時間差. | |
1.毫秒相減 ,除以1000,變成秒數差 | |
2.計算天,時,分,秒 | |
d = parseInt(總秒數/ 60/60 /24); // 計算天數 | |
h = parseInt(總秒數/ 60/60 %24) // 計算小時 | |
m = parseInt(總秒數 /60 %60 ); // 計算分數 | |
s = parseInt(總秒數%60); // 計算當前秒數 | |
3.判斷是否個位數,然後補0 | |
h = h<10? '0'+h : h; | |
字元串對象 | |
1.indexOf(要查找的字元,開始位置) 開始位置不寫預設從0開始,找不到返回-1 ----查找字元 | |
2.charAt(字元位置) 給一個位置,返回該位置的字元 ----獲取字元 | |
3.subStr(開始位置,截取個數) 返回截取的字元串結果 ----截取字元 | |
4.replace(要替換的字元,替換的新字元) ----替換字元 | |
5.join(連接符) 將數組通過連接符連接,返回字元串 ----連接字元 | |
6.split(連接符) 將字元根據連接符分割成多個值的數組,返回數組 ----分割字元 | |
7.toUpperCase() 將字元串轉換為大寫 ----轉換成大寫 | |
8.toLowerCase() 將字元串轉換為小寫 ----轉換成小寫 | |
數組對象: | |
1.push() 後面添加元素 | |
2.pop() 後面刪除元素 | |
3.unshift() 前面添加元素 | |
4.shift() 前面刪除元素 | |
5.reverse() 翻轉數組 | |
6.sort() 排序數組 | |
arr.sort(function(a,b){ | |
return a-b; //升序 | |
}) | |
arr.sort(function(a,b){ | |
return b-a; //降序 | |
}); | |
7.concat() 合併數組 | |
var arr3 = arr1.concat(arr2); | |
8.splice 刪除/修改/添加數組 | |
arr.splice(開始位置); //從開始位置刪除到最後 | |
arr.splice(開始位置,刪除個數); //從開始位置刪除幾個 | |
//新增內容 | |
arr.splice(開始位置,0,新增元素); | |
arr.splice(1,0,'a','b'); //在索引1元素之前插入a和b | |
//替換內容 | |
arr.splice(開始位置,刪除個數,新增元素); | |
arr.splice(1,1,'d'); //在索引為1開始刪除一個元素,替換為 | |
9.indexOf() 查找數組 | |
查找數組中的元素位置 | |
arr.indexOf(元素); //返回元素的索引位置,如果沒有返回-1 | |
arr.indexOf(元素,開始位置); //從開始位置繼續向後找. | |
arr.lastIndexOf(元素) //返回元素索引位置,如果沒有返回-1,從後往前找 | |
10.tostring() 轉換為字元串 | |
數組轉換為字元串 | |
arr.toString(); 將數組中的每個元素用逗號鏈接成字元串 | |
11.join() 數組拼接分隔符 | |
arr.join(); //預設以逗號連接數組,拼接成字元串 | |
arr.join(分隔符); //以分隔符連接數組元素,拼接成字元串 | |
9.其他 | |
1.變數的命名規範 | |
1.字母,數字,下劃線,$等組合, | |
2.數字不能開頭 | |
3.不能是關鍵字 | |
4.不能是中文 | |
5.建議使用駝峰命名 | |
2.輸出列印 | |
alert() | |
console.log() | |
prompt(); | |
3.轉義字元 | |
\n 換行 | |
\t tab製表符 | |
4.預解析 | |
變數聲明和函數聲明提前 | |
5.作用域和作用域鏈 | |
作用域:變數的作用範圍 | |
作用域鏈: 人外有人,天外有天 | |
6.局部變數和全局變數 | |
全局變數有兩種: | |
1.在括弧外面直接寫的變數 | |
2.在函數內部,未使用var聲明但直接賦值的變數 | |
局部變數: | |
1.形參就是局部變數 | |
2.函數內部的變數就是局部變數 | |
註意:js中沒有塊級作用域 | |
{ | |
var a=1; | |
} | |
7.this和new的理解 | |
this的指向問題: | |
1.函數在定義this的時候是不確定的,只有在調用的時候才可以確定 | |
2.一般函數直接執行,內部this指向全局window | |
3.this的指向,誰調用指向誰 | |
4.構造函數中的this 對象的實例 | |
new在執行時會做四件事情 | |
1.new會在記憶體中創建一個新的空對象 | |
2.new會讓this指向這個新的對象 | |
3.執行構造函數裡面的代碼,目的是給這個新對象加屬性和方法 | |
4.new會返回這個新對象,所以構造函數裡面不需要return | |
8.運算符和優先順序 | |
1.() | |
2.++ -- ! | |
3.先* / % 後+ - | |
4.< > <= >= == != === !== | |
5.先&& 後|| | |
6.賦值運算符 | |
註意: 等於和不等於 == === != !== | |
++a 和 a++ | |
&& 並且 | |
|| 或者 | |
! 取反 | |