js的復(fù)習(xí)與鞏固(一)

一、類型轉(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;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容