一、類型轉(zhuǎn)換方法
1、Boolean()
所有非0都為true,所有非空的字符也為true;0,undefined,null,!true為false。
如:Boolean(2)==> true;
Boolean(0.1)==> true;
2、Number()
不是純數(shù)字的字符串以及undefined會(huì)轉(zhuǎn)換為NaN。
3、parseInt()
(1)若參數(shù)為數(shù)字,則可以取整【只取整數(shù)部分,忽略小數(shù)部分】
例如:parseInt(0.8)==> 0
(2)若參數(shù)為不全為數(shù)字,從左往右只取數(shù)字,碰到非數(shù)字就停止遍歷。若開頭就是非數(shù)字,則返回NaN。
4、[].slice.call(obj)
將偽數(shù)組轉(zhuǎn)換為數(shù)組。常用于使用jquery獲取dom的時(shí)候。
原理:利用call方法的特性,將調(diào)用call方法的函數(shù)內(nèi)部的this指向call方法參數(shù)中的第一個(gè)對(duì)象,由于數(shù)組的slice方法接收兩個(gè)參數(shù)start、end,用于創(chuàng)建一個(gè)新數(shù)組用來(lái)保存原數(shù)組截取下來(lái)的值,當(dāng)沒有參數(shù)傳遞時(shí),start默認(rèn)為0,end默認(rèn)為數(shù)組末尾,所以默認(rèn)截取原數(shù)組全部的值。由于偽數(shù)組也有l(wèi)ength屬性,而且call方法改變了slice函數(shù)內(nèi)this的指向,所以slice函數(shù)內(nèi)部創(chuàng)建并返回的數(shù)組的值是循環(huán)遍歷偽數(shù)組中的值。
5、+ 加號(hào)
(1)任何類型的值與String類型的值相加都轉(zhuǎn)化為字符串。
(2)數(shù)字與引用數(shù)據(jù)類型或regexp類型相加,會(huì)轉(zhuǎn)換為String類型。
例如:console.log(3 + [1, 2]); // 31, 2
console.log(3 + obj); // 3[object Object]
(3)數(shù)字與Boolean值,null,undefined相加為Number類型。
true會(huì)轉(zhuǎn)換為1,null,false會(huì)轉(zhuǎn)換為0。
例如: 1 + true = 2;
1 + undefined = NaN;? 類型同樣為Number
二、不同類型間的比較
1、==
只比較值,不比較類型,會(huì)將純數(shù)字字符串轉(zhuǎn)換為數(shù)字。
+0 == -0
null == undefined
NaN != NaN
2、===
要求類型以及值完全相等。
+0 === -0
null !== undefined
3、Object.is()
與===類似,不進(jìn)行強(qiáng)制轉(zhuǎn)換,也存在不同:
Object.is(+0, -0); // false
Object.is(NaN, NaN); // true
三、進(jìn)制間的轉(zhuǎn)換
1、二進(jìn)制轉(zhuǎn)換為八進(jìn)制
110 100 (從右向左每三位一組,不足三位的用0補(bǔ)齊,得出來(lái)的數(shù)字就為對(duì)應(yīng)的八進(jìn)制)
110 100 ==>64(八進(jìn)制)==>52(十進(jìn)制)
2、二進(jìn)制轉(zhuǎn)換為十六進(jìn)制
(從右向左每四位一組,不足四位的用0補(bǔ)齊,得出來(lái)的數(shù)字就為對(duì)應(yīng)的十六進(jìn)制)
四、數(shù)組
1、創(chuàng)建數(shù)組
var arr = new Array(1,true,"hello world");
var arr = Array(1,true,"hello world");
var arr = [1,true,"hello world"];
當(dāng)參數(shù)只有一個(gè),且為數(shù)字時(shí),是代表該數(shù)組的長(zhǎng)度。如 var arr = new Array(10); 代表長(zhǎng)度為10
2、數(shù)組遍歷
(1)for循環(huán)
(2)for...in 快速遍歷
for(var i(下標(biāo))in arr(數(shù)組名))
3、常用方法
(1)arr.push(要添加的元素);作用為添加元素到末尾,例如:arr.push(“鋼鐵俠”,“綠巨人”);
參數(shù)個(gè)數(shù)隨意,返回值為添加后數(shù)組的長(zhǎng)度。
(2)arr.pop();作用為移除數(shù)組最后一個(gè)元素,返回值為被移除的元素的值。
(3)arr.shift(); 作用為從頭部取下一個(gè)元素,返回值為被取下元素的值。
(4)arr.unshift(要添加的元素); 作用為從數(shù)據(jù)的頭部添加元素。參數(shù)個(gè)數(shù)隨意,返回值為添加后數(shù)組的長(zhǎng)度。
(5)arr1.concat(arr2):作用為生成一個(gè)新數(shù)組用于拼接二個(gè)數(shù)組【也可用于字符串拼接】
格式: var arr1 = [“鋼鐵俠”,“綠巨人”];
var arr2 = [“黑寡婦”,“洛基”];
var arr = arr1.concat(arr2);
arr中的數(shù)據(jù)為[“鋼鐵俠”,“綠巨人”,“黑寡婦”,“洛基”];
(6)arr.slice():作用為生成一個(gè)新數(shù)組用于截取原數(shù)組,但原數(shù)組被截取后并不改變。
格式:arr1.slice(start,end) 截取的元素不包括end下標(biāo)的元素
例子:var arr1 = [“鋼鐵俠”,“綠巨人”,“黑寡婦”,“洛基”];
var arr = arr1.slice(1,3);
arr = [“綠巨人”,“黑寡婦”]; 并不包括arr1[3]元素
無(wú)參數(shù)時(shí),start默認(rèn)為0,end默認(rèn)為arr.length。
(7)arr.splice():作用可以完成刪除,插入,替換操作
格式:數(shù)組.splice(截取的開始下標(biāo),截取的長(zhǎng)度,在截取的開始下標(biāo)位置插入的元素【個(gè)數(shù)隨意】)
截取后會(huì)改變?cè)瓟?shù)組的排列,所以可以完成刪除操作,返回值為被刪除的元素形成的數(shù)組。

(8)arr.join():作用為將數(shù)組中的元素用提供的拼接符拼接起來(lái),
格式:數(shù)組.join(“拼接符”);
返回值為拼接后的字符串。
例如:var arr = [10,20,30];
var res = arr.join("+");? ?// res = 10+20+30;
4、數(shù)組排序
(1)arr.sort()? 從小到大排列
(2)arr.reverse() 從大到小排列
(3)冒泡排序
原理:每相鄰二個(gè)數(shù)兩兩進(jìn)行比較,如果符合交換條件則進(jìn)行交換,直到最后一個(gè)元素比較完成。每輪選出最大的數(shù)放在最后,下一輪比較次數(shù)減少,不與最后一個(gè)元素比較,選出第二大的數(shù)放在這一輪的最后,以此類推。
(4)選擇排序
原理:第一個(gè)元素依次與每個(gè)元素進(jìn)行比較,誰(shuí)更小誰(shuí)就放在第一位,第二輪就繼續(xù)跳過第一個(gè)數(shù),將第二個(gè)數(shù)依次與其他數(shù)比較,選出這些數(shù)中最小的,以此類推。
五、字符串
1、str.indexOf(str1,開始查找的位置下標(biāo)【選填】):返回查找字符串【str1】第一次出現(xiàn)的下標(biāo)
2、str.lastIndexOf(str1):返回查找字符串【str1】最后一次出現(xiàn)的下標(biāo)
3、str.subString(start, end):截取字符串,不截取尾部下標(biāo)位置的值,返回值為截取的新字符串。
4、str.replace(舊值【可以為正則表達(dá)式】,新值):將字符串中對(duì)應(yīng)的舊值替換為新值。
5、str.search(查找的字符串【可以為正則表達(dá)式】):返回參數(shù)字符或者字符串出現(xiàn)的第一個(gè)位置。
6、str.split(符號(hào)):以split中的參數(shù)來(lái)分割字符串,由分割后的每個(gè)字符串組成數(shù)組。參數(shù)為空時(shí)將每個(gè)單個(gè)字符分割組成數(shù)組。
六、Math對(duì)象
1、Math.min()、Math.max() : 選出參數(shù)列表中最小、最大值。
2、Math.ceil()、Math.floor():將參數(shù)向上、向下取整。
3、Math.round():將參數(shù)四舍五入。
4、Math.pow(x, y):x的y次方。
5、Math.sqrt(x):x開平方。
【計(jì)算機(jī)計(jì)算小數(shù)時(shí)會(huì)不準(zhǔn)確【二進(jìn)制轉(zhuǎn)換十進(jìn)制問題】】
6、Math.sin(x)/cos(x)/tan(x)? x為弧度
1弧度=Math.PI / 180;? ? 【2π為一個(gè)圓周長(zhǎng)即360弧度,所以π為180弧度】
30弧度=30* Math.PI / 180
七、Date對(duì)象
1、日期對(duì)象的創(chuàng)建
var date=new date();
var date=new date(x);? x為毫秒數(shù),返回從1970年1月1號(hào)8點(diǎn)開始經(jīng)過x毫秒的時(shí)間
2、日期對(duì)象的獲取和設(shè)置方法
date.set/getDate();? 獲取當(dāng)前的日
date.set/getDay();? 獲取當(dāng)前的星期數(shù),0為周日
date.set/getMonth();? 獲取當(dāng)前的月份,從0開始
date.set/getFullYear();? 獲取當(dāng)前的年份
date.set/getHours();? 獲取當(dāng)前的時(shí)
date.set/getMinutes();? 獲取當(dāng)前的分
date.set/getSeconds();? 獲取當(dāng)前的秒
date.getTime();? 獲取從1970年1月1日8點(diǎn)到現(xiàn)在的毫秒數(shù)
date.parse(x); 返回從1970年1月1日8點(diǎn)經(jīng)過x毫秒后的時(shí)間
date.toLocalString():將date顯示為 2020/3/16 下午5:59:50 本地格式
八、setInterval和setTimeout
1、setInterval
setInterval(函數(shù)名或者匿名函數(shù),毫秒數(shù));
clearInterval(setInterval的ID)
setInterval的id:? var setid = setInterval(函數(shù)名或者匿名函數(shù),毫秒數(shù));
2、setTimeout
setTimeout(函數(shù)名或者匿名函數(shù),毫秒數(shù));
clearTimeout(setTimeout的ID)
setTimeout的ID:var id =?setTimeout(函數(shù)名或者匿名函數(shù),毫秒數(shù));
九、三種系統(tǒng)窗口
1、alert():警告框

2、confirm("框內(nèi)顯示的值");【存在二個(gè)按鈕】

點(diǎn)擊確定時(shí),返回true;
點(diǎn)擊關(guān)閉時(shí),返回false;
3、prompt("輸入框上方顯示的內(nèi)容","文本框內(nèi)默認(rèn)的值");


點(diǎn)擊確定時(shí),返回文本框中的值;
點(diǎn)擊關(guān)閉時(shí),返回null;