JS基礎(chǔ)回顧

數(shù)據(jù)類(lèi)型

Number :不分整數(shù)、浮點(diǎn)數(shù)
字符串:?jiǎn)我?hào)、雙引號(hào)
布爾:true false
運(yùn)算符:&& 、 || 、!、

任意倆個(gè)數(shù)據(jù)類(lèi)型都可以做比較:
false == 0 雙等號(hào)會(huì)自動(dòng)轉(zhuǎn)換類(lèi)型再比較
false === 0 三等號(hào)不會(huì)自動(dòng)轉(zhuǎn)換類(lèi)型,數(shù)據(jù)類(lèi)型不一致返回false
所以比較時(shí)直接用===比較安全

NaN:是一種特殊的Number,和任何值都不等,包括它自己
NaN === NaN; // false
isNaN(NaN); // true

比較長(zhǎng)的浮點(diǎn)數(shù)比較
1/3 === (1 - 2 / 3); false
因?yàn)橛?jì)算機(jī)無(wú)法精確表示無(wú)限循環(huán)小數(shù)
Math.abs(1/3 -(1 - 2 / 3)) < 0.00001
空值:null 未定義值:undefined

trict模式

Js設(shè)計(jì)之初,不通過(guò)var申明變了,i = 20來(lái)申明變量,i就變成了全局變量了,同一個(gè)頁(yè)面的不同js文件如使用了同一個(gè)全局變量名,將會(huì)報(bào)錯(cuò)。
在js文件的第一行加上‘use strict’;編譯器會(huì)要求強(qiáng)制要求使用var 申明變量。

字符串

\n \t \

‘\x41’ 是ASCII字符的16進(jìn)制的表示形式
‘\u4e2d’是Unicode字符的16進(jìn)制

ES6中多行字符串雙引號(hào)表示多行

模版字符串:
拼接字符串用 + , ES6中可以在字符串中使用 ${name} 來(lái)組裝字符串。var message = 你好, ${name}, 你今年${age}歲了!;

字符串操作

var s = ‘hello, world!’;
s.length;
s[2]
字符串是不可變的,對(duì)字符串某個(gè)索引賦值不會(huì)有任何變化。
s[1] = H

toUpperCase() 字符串轉(zhuǎn)大寫(xiě)
toLowerCase() 字符串轉(zhuǎn)小寫(xiě)

indexOf()
s.indexOf(world);  // 7
沒(méi)有找到返回 -1
substring()

數(shù)組

創(chuàng)建
var arr = [1, 2, 3, 4];
New Array (1, 2, 3, 4);

Arr.length 賦值會(huì)是數(shù)組的大小發(fā)生變化。增加undefined原屬或者刪除元素

arr[1] = 4;
賦值時(shí)索引越界會(huì)使數(shù)組大小變大。

arr.indexOf()
arr.slice(0, 3); 截取0 - 3的元素
arr.slice(3); 截取 3至結(jié)束

Arr.push(1, 2) 向末尾添加若干元素
Arr.pop()  刪除最后一個(gè)元素

Arr.unshift(1, 2);  向頭部添加若干元素
Arr.shift();  將第一個(gè)元素刪除

arr.sort();   arr.reverse()

Arr,splice(2, 4, ‘a(chǎn)’, ‘b’, ‘c’); 刪除索引位置的元素,并在此處添加若干元素

var addArr = arr.concat(arr1);  拼接數(shù)組,并返回新數(shù)組
arr.join(‘-’) 用指定元素拼接數(shù)組中的元素,返回字符串

對(duì)象

對(duì)象是一組無(wú)序的鍵值對(duì), 實(shí)際上所有屬性名都是string類(lèi)型

var people = {
    name: ‘bob’,
    age: 20,
    vipcode: null
    ‘book_name’: ‘ddd’
}

訪問(wèn)屬性,people.name
含有特殊字符的屬性名用單引號(hào)。訪問(wèn)時(shí)用 people[‘book_name’]

可以動(dòng)態(tài)綁定屬性。people.frend = ‘xiaoming’
刪除屬性, delete people.age;

判斷是含有一個(gè)屬性 name in xiaoming
判斷是不是自己的屬性,而不是繼承的屬性 xiaoming.hasOwnProperty(‘a(chǎn)ge’)

Map (ES6標(biāo)準(zhǔn))

類(lèi)似于字典。創(chuàng)建Map需要傳入一個(gè)二維數(shù)組

var m = new Map([[’michael’, 95], [‘xiaoli’, 93], [‘a(chǎn)obama’, 89], [‘lois’, 98]]);
Var m = new Map();

m.set(‘a(chǎn)lice’, 78);
m.get(‘michael’);
M.has(‘’)
m.delete(‘’)

Set (ES6標(biāo)準(zhǔn))

Set 和 map 類(lèi)似,set中只有key,且會(huì)自動(dòng)過(guò)濾重復(fù)元素
創(chuàng)建Set需要傳入一個(gè)一維數(shù)組

var s = new Set();
Var s = new Set([1, 3, 5]);

iterable (ES6標(biāo)準(zhǔn))

Map 和 Set 不能使用帶下標(biāo)的for循環(huán)來(lái)遍歷,需要用for .. of ..來(lái)遍歷,因?yàn)锳rray、Map、Set都是iterable類(lèi)型。

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of m) { // 遍歷Map
    console.log(x[0] + '=' + x[1]);
}

for of 與 for in 的區(qū)別:
for of 只會(huì)遍歷Array的元首,for in 會(huì)遍歷Array的所有屬性。

由于Array其實(shí)也是一個(gè)對(duì)象,每一元素都是Array的屬性,可以動(dòng)態(tài)的添加屬性,但是動(dòng)態(tài)添加的屬性卻不是Array的元素。

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
    console.log(x); // '0', '1', '2', 'name'
}

iterable類(lèi)型自帶forEach(callBack)函數(shù), ES5.1標(biāo)準(zhǔn)

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
    console.log(value);
});

Map的回調(diào)函數(shù)參數(shù)依次為value、key和map本身

Set與Array類(lèi)似,但Set沒(méi)有索引,因此回調(diào)函數(shù)的前兩個(gè)參數(shù)都是元素本身

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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