第5章、引用類型

引用類型的值(對象)是引用類型的一個實例,在ECMAScript中,引用類型是一種數(shù)據(jù)結構,用于將數(shù)據(jù)和功能組織在一起。新對象是使用new操作符后跟一個構造函數(shù)來創(chuàng)建。

var a = new Object();

5.1 Object類型

大多數(shù)引用類型都是Object類型的實例,Object也是使用的最多的引用類型。一般通過字面量創(chuàng)建。

var a = {
    x: 1,
    y: 2
};

一般通過點表示法訪問對象的屬性,也可以使用方括號語法,方括號語法的優(yōu)點在于可以通過變量來訪問屬性。

a.x;
a["x"];
a[name];

5.2 Array類型

ECMAScript中的數(shù)組可以保存任何類型的數(shù)據(jù),并且大小可以動態(tài)調(diào)整,可以隨著數(shù)據(jù)的添加自動增長以容納新增數(shù)據(jù)。

var a = [];

數(shù)組的項數(shù)保存在length屬性當中,這個屬性始終返回0或者更大的值,它不是只讀的,可以修改,修改它會直接修改數(shù)組的長度。
數(shù)組的最后一項索引始終是length-1,因此下一個新項的位置就是length。

5.2.1 檢測數(shù)組

對于一個網(wǎng)頁或者一個全局作用域而言,使用instanceof操作符檢測數(shù)組。

if (value instanceof Array){
    // 執(zhí)行操作
}

當存在多個框架,即當存在多個全局作用域時,兩個全局作用域之間互相傳遞的數(shù)組不是來源于同一個構造函數(shù),所以會返回false。ECMAScript5新增方法isArray()用來檢測數(shù)組。

if (Array.isArray(value)){
    // 執(zhí)行操作
}
5.2.2 轉(zhuǎn)換方法

數(shù)組的toString()方法返回由數(shù)組中每個值的字符串形式拼接而成,并以逗號隔開的一個字符串(實際上是每一項分別調(diào)用toString()方法后再拼接)。數(shù)組的valueOf()方法返回數(shù)組本身。toLocaleString()方法返回與toString()方法相同,區(qū)別是每一項分別調(diào)用toLocaleString()方法。

var a =[1,2,3];
console.log(a.toString());  // "1,2,3"
console.log(a.valueOf());  // [1, 2, 3]

數(shù)組的join()方法返回與toString()方法相同,但可以接收一個參數(shù),參數(shù)表示每一項之間的分隔符。

var a =[1,2,3];
console.log(a.join("|"));  // 1|2|3

null和undefined的項在上述4個方法中返回空字符串。

5.2.3 棧方法

數(shù)組的push()方法可以接收任意數(shù)量的參數(shù),把它們逐個添加到數(shù)組的末尾,并返回修改后的數(shù)組的長度。而pop()方法則從數(shù)組末尾移除最后一項,減少數(shù)組的length值,然后返回移除的項

var a =[1,2,3];
var b = a.push("x","y");
var c = a.pop();

console.log(b);  // 5
console.log(c);  // "y"
5.2.4 隊列方法

數(shù)組的shift()方法用來移除數(shù)組的第一項并將其返回,unshift()方法用來在數(shù)組的前端添加任意項并返回新數(shù)組的長度。

var a =[1,2,3];
var b = a.shift();
var c = a.unshift("x","y");

console.log(b);  // 1
console.log(c);  // 4
5.2.5 重排序方法

數(shù)組的reverse()方法用來反轉(zhuǎn)整個數(shù)組的順序,并返回排序之后的數(shù)組。

var a =[1,2,3];
var b = a.reverse();

console.log(b);  // [3,2,1]

數(shù)組的sort()方法在默認情況下按升序排列,即最小值在最前面,最大值在最后面,但排序時是調(diào)用每一項的toString()方法,所以"10"會在"5"的前面。sort()方法可以接收一個比較函數(shù),根據(jù)整個函數(shù)的返回值來進行排序,返回負數(shù)則表示第一個值要位于第二個值前,返回0則表示兩個值相等,返回正數(shù)則表示第一個值要位于第二個值之后。完成排序之后返回排序之后的數(shù)組。

var a =[5,1,10];
var b = a.sort();
// 默認不傳參數(shù)
console.log(b);  // [1,10,5]
// 傳遞一個比較函數(shù)
var a =[5,1,10];
function arr(v1, v2) {
    return v1 - v2;
}
var b = a.sort(arr);

console.log(b);  // [1,5,10]
5.2.6 操作方法

數(shù)組的concat()方法可以基于當前數(shù)組中的所有項創(chuàng)建一個新數(shù)組,當未傳參數(shù)時,復制當前數(shù)組并返回副本。當傳入任意參數(shù)時,先創(chuàng)建一個當前數(shù)組的副本,然后將接收到的參數(shù)添加到這個副本的末尾,最后返回新構建的數(shù)組,參數(shù)可以是其他數(shù)組,會將其他數(shù)組的每一項都添加到創(chuàng)建的副本當中。

var a =[1,2,3];
var b = a.concat();
var c = a.concat("x",["y","z"]);

console.log(b);  // [1, 2, 3]
console.log(c);  // [1, 2, 3, "x", "y", "z"]

數(shù)組的slice()方法用于返回當前數(shù)組的一個部分,接收一個或兩個參數(shù),當傳入一個參數(shù)時,表示要返回的起始位置,返回從該起始位置到數(shù)組末尾的所有項。當傳入兩個參數(shù)時,返回起始位置與結束位置之間的所有項(不包括結束位置)。當傳遞的參數(shù)是負值的時候,會使用數(shù)組的長度加上該負值來確定相應的位置。如果結束位置小于起始位置,則返回空數(shù)組。

var a =[1,2,3,4,5];
var b = a.slice(1);
var c = a.slice(1,4);
var d = a.slice(-3,-1);

console.log(b);  // [2, 3, 4, 5]
console.log(c);  // [2, 3, 4]
console.log(d);  // [3, 4]

數(shù)組的splice()方法有多種用法,主要用途是向數(shù)組的中部插入項。使用這種方法的方式有3種:
刪除:指定兩個參數(shù),要刪除的第一項的位置和要刪除的項數(shù)。返回被刪除的項組成的數(shù)組,會修改原數(shù)組。

var a =[1,2,3,4,5];
var b = a.splice(1,2);

console.log(a);  // [1, 4, 5]
console.log(b);  // [2, 3]

插入:提供3個參數(shù),起始位置、0(即要刪除的項數(shù)為0,表示不刪除)、要插入的項。如果要插入多個項,則繼續(xù)傳遞第4第5以至任意多項參數(shù)(傳遞的參數(shù)為數(shù)組時,不會像concat()方法一樣將數(shù)組拆散,而是直接將整個數(shù)組作為一項插入),因為沒有項被刪除,所以修改完原數(shù)組之后返回一個空數(shù)組

var a =[1,2,3,4,5];
var b = a.splice(2,0,"x",["y","z"]);

console.log(a);  // [1, 2, "x", ["x","y"], 3, 4, 5]
console.log(b);  // []

替換:即當插入用法中的第二個參數(shù)不為0時,先刪除對應的項,再將后續(xù)的項插入,以達到傳遞的參數(shù)項替換數(shù)組中原項的效果。

var a =[1,2,3,4,5];
var b = a.splice(2,2,"x",["y","z"]);

console.log(a);  // [1, 2, "x", ["x","y"], 5]
console.log(b);  // [3, 4]

上述3種用法中的第一個參數(shù)同樣接收負值,負值用法與slice()方法相同。

5.2.7 位置方法

數(shù)組有兩個位置查詢方法,indexOf()和lastIndexOf(),indexOf()表示從數(shù)組的開頭開始查詢,lastIndexOf()表示從數(shù)組的末尾開始查詢。傳入的參數(shù)為需要查詢的項,在查詢比較時,使用的是全等(===)符號,返回查詢到第一個符合條件的項的索引,未查詢到則返回-1。

var a =[1,2,3,4,5,4];

console.log(a.indexOf(4));  // 3
console.log(a.lastIndexOf(4));  // 5
console.log(a.indexOf(6)); // -1
5.2.8 迭代方法

數(shù)組有5個迭代方法,每個方法都接收兩個參數(shù):要在每一項上運行的函數(shù)和運行該函數(shù)的作用域?qū)ο螅ǖ诙€參數(shù)是可選的,主要影響第一個參數(shù)所傳的函數(shù)中的this值)。傳入的函數(shù)接收3個參數(shù):數(shù)組的項的值,該項在數(shù)組中的位置,數(shù)組本身。
every()方法:對數(shù)組的每一項運行傳入的函數(shù),若每一項都返回true,則返回true。

var a =[1,2,3,4,5];
var b = a.every(function (item,index,arr) {
    return item>0;
});

console.log(b);  // true

filter()方法:對數(shù)組的每一項運行傳入的函數(shù),返回該運行該函數(shù)會返回true的項組成的新數(shù)組。

var a =[1,2,3,4,5];
var b = a.filter(function (item,index,arr) {
    return item>3;
});

console.log(b);  // [4,5]

forEach()方法:對數(shù)組的每一項運行傳入的函數(shù),沒有返回值。

var a =[1,2,3,4,5];
a.forEach(function (item,index,arr) {
    arr[index] = ++item;
});

console.log(a);  // [2, 3, 4, 5, 6]

map()方法:對數(shù)組的每一項運行傳入的函數(shù),返回每次函數(shù)調(diào)用結果組成的數(shù)組。

var a =[1,2,3,4,5];
var b = a.map(function (item,index,arr) {
    return item*index;
});

console.log(b);  // [0, 2, 6, 12, 20]

some()方法:對數(shù)組的每一項運行傳入的函數(shù),如果該函數(shù)的任意一項返回true,則返回true

var a =[1,2,3,4,5];
var b = a.some(function (item,index,arr) {
    return item>3;
});

console.log(b);  // true
5.2.8 歸并方法

數(shù)組的reduce()和reduceRight()方法用來歸并數(shù)組,reduce()方法從數(shù)組的第一項開始,逐個遍歷到最后,而reduceRight()方法則從最后一項開始,逐個遍歷到第一項。兩個方法都接收兩個參數(shù):一個在每一次歸并時調(diào)用的函數(shù)和作為歸并基礎的初始值(可選)。傳給兩個方法的函數(shù)會接受4個參數(shù):前一個值,當前值,當前項的索引和數(shù)組對象,逐個函數(shù)的返回值都會作為下一次迭代時函數(shù)的第一個參數(shù),因此第一次迭代發(fā)生在數(shù)組的第二項上,第一個參數(shù)是數(shù)組第一項,第二個參數(shù)是數(shù)組第二項。

var a =[1,2,3,4,5];
var b = a.reduce(function (prev, cur, index, arr) {
    return prev + cur;
});

console.log(b);  // 15

5.3 Date類型

ECMAScript中的Date類型使用UTC標準來保存日期,即從1970年1月1日午夜0時開始經(jīng)過的毫秒數(shù)。

// 創(chuàng)建日期對象
var a = new Date(); // 獲取當前日期
var b = new Date("2017/09/26 12:0:0");  // 獲取指定時間,傳遞字符串參數(shù)
var c = new Date(2017,8,26,12,0,0);  // // 獲取指定時間,傳遞數(shù)值參數(shù)

console.log(a);  // Tue Sep 26 2017 14:27:32 GMT+0800 (中國標準時間)
console.log(b);  // Tue Sep 26 2017 12:00:00 GMT+0800 (中國標準時間)
console.log(c);  // Tue Sep 26 2017 12:00:00 GMT+0800 (中國標準時間)

Date.now()方法直接獲取執(zhí)行這條代碼的時的時間,返回毫秒數(shù)。

var a = Date.now();

console.log(a);  // 1506407948177
5.3.1 繼承的方法

Date類型的valueOf()方法返回日期的毫秒表示,所以Date類型可以直接進行比較。

var a = new Date("2017");
var b = new Date("2016");

console.log(a>b);  // true 日期越晚,毫秒數(shù)值就越大。
5.3.2 日期/時間組件方法

所有方法文檔。
主要方法有幾個:

var a =new Date();

// 返回日期毫秒數(shù)
console.log(a.getTime());  // 1506408603633
// 返回日期4位數(shù)的年份
console.log(a.getFullYear());  // 2017
// 返回日期的月份,0~11表示1月~12月
console.log(a.getMonth());  // 8
// 返回日期月份中的天數(shù),1~31
console.log(a.getDate());  // 26
// 返回日期的星期數(shù),星期日為0
console.log(a.getDay());  // 2
// 返回日期的小時數(shù),0~23
console.log(a.getHours());  // 14
// 返回日期的分數(shù),0~59
console.log(a.getMinutes());  // 50
// 返回日期的秒數(shù),0~59
console.log(a.getSeconds());  // 3

5.4 RegExp類型

鏈接


5.5 Function類型

兩種方式定義函數(shù)

// 函數(shù)聲明
function a() {}
// 函數(shù)表達式
var a = function () {}

函數(shù)聲明會被解析器率先讀取,并使其在執(zhí)行任何代碼之前可用。表達式必須等到解析器解析到他所在的代碼行時才會執(zhí)行。
函數(shù)沒有重載,同名函數(shù)會被覆蓋。

5.5.1作為值的函數(shù)

函數(shù)本身也可以作為值來使用,不僅可以把一個函數(shù)作為參數(shù)傳遞給另一個函數(shù),而且可以將一個函數(shù)作為另一個函數(shù)的結果返回。要訪問函數(shù)的指針而不執(zhí)行函數(shù)的話,必須去掉函數(shù)名后面的那對括號。

// 定義一個根據(jù)對象的指定屬性的值來排序的函數(shù)
function pro(proName) {
    return function (obj1, obj2) {
        var val1 = obj1[proName];
        var val2 = obj2[proName];
        if(val1<val2){
            return -1;
        }else if(val1>val2){
            return 1;
        }else{
            return 0;
        }
    }
}

var data = [{a:"x",b:2},{a:"y",b:1}];
data.sort(pro("b"));
console.log(data[0].a); // y
5.5.2 函數(shù)內(nèi)部屬性

函數(shù)內(nèi)部有兩個特殊的對象,argument和this,argument是一個類數(shù)組對象,它保存著傳入函數(shù)中的所有參數(shù),它還擁有一個callee的屬性,該屬性是一個指針,指向擁有這個argument對象的函數(shù)。

// 經(jīng)典階乘函數(shù)
function a(num) {
    if(num<=1){
        return 1;
    }else{
        return num * arguments.callee(num - 1);
    }
}

console.log(a(5));  // 120

this引用的是當前函數(shù)執(zhí)行的環(huán)境對象,在全局作用域中調(diào)用函數(shù)時,this對象引用的就是window對象。
函數(shù)本身還有一個caller屬性,他表示調(diào)用當前函數(shù)的函數(shù)的引用,即是哪個函數(shù)調(diào)用了當前函數(shù)。

function a() {
    console.log(arguments.callee.caller);
}
function b() {
    a();
}
// 因為b函數(shù)調(diào)用了a函數(shù),所以執(zhí)行b函數(shù)時,a函數(shù)的caller屬性會指向b函數(shù)
b();  // ? b() { a(); }

argument對象還有caller屬性,但這個屬性在非嚴格模式下始終是undefined,在嚴格模式下訪問會導致錯誤,定義這個屬性是為了區(qū)分函數(shù)本身的caller屬性。

5.5.3 函數(shù)屬性和方法

函數(shù)包含兩個屬性,length和prototype,length表示函數(shù)希望接收的命名參數(shù)的個數(shù)。
函數(shù)包含兩個方法,apply()和call(),apply()方法接收兩個參數(shù),一個是在其中運行函數(shù)的作用域,另一個是函數(shù)的參數(shù)數(shù)組。第二個參數(shù)可以是Array的實例,也可以是argument對象。

var x = "xyz";
var a = {x:"abc"};
function fun() {
    console.log(this.x);
}
fun();  // xyz
fun.apply(a);  // abc

call()方法與apply()方法的作用相同,區(qū)別僅在于接收參數(shù)方式不同,call()方法第一個參數(shù)也是在其中運行函數(shù)的作用域,之后的參數(shù)為需要傳遞給函數(shù)的逐個參數(shù)。使用apply()和call()能夠擴充函數(shù)的運行的作用域。
ECMAScript5新定義了bind()方法,這個方法會創(chuàng)建一個函數(shù)的實例,這個函數(shù)的this值會被綁定到傳給bind()函數(shù)的值。

var a = {x:"abc"};
function fun() {
    console.log(this.x);
}
var b = fun.bind(a);
// b已經(jīng)是一個函數(shù)的實例,其this值為a對象。
b();  // abc

5.6 基本包裝類型

ECMAScript提供了3個特殊的引用類型,Boolean、Number和String。這些基本包裝類型與各自的基本類型值相對應,每當讀取一個基本類型值時,后臺會自動創(chuàng)建一個對應的基本包裝類型的對象,從而讓我們能夠?qū)绢愋椭凳褂媚承┓椒?。引用類型和基本包裝類型的區(qū)別就在于對象的生存期,使用new操作符創(chuàng)建的引用類型實例,在執(zhí)行流離開當前作用域之前都一直保存在內(nèi)存中,而讀取基本類型值時創(chuàng)建的基本包裝類型的對象,在執(zhí)行代碼的瞬間結束后就被銷毀了,所以不能對基本類型值添加屬性和方法。

5.6.1 Boolean類型

永遠不要使用Boolean類型

5.6.2 Number類型

Number類型的valueOf()方法返回基本類型值的數(shù)值,toString()和toLocaleString()方法返回數(shù)值的字符串表示。

var a = 10;
console.log(a.valueOf()+10);  // 20
console.log(a.toString()+10);  // 1010
console.log(a.toLocaleString()+10);  // 1010

toFixed()方法返回指定小數(shù)位的字符串形式,本身小數(shù)位小于參數(shù)則補0,大于參數(shù)則舍入。

var a = 10.005;
var b = 10;
console.log(a.toFixed(2));  // 10.01
console.log(b.toFixed(2));  // 10.00

toExponential()方法返回指數(shù)表示法的字符串形式。

var a = 10;
console.log(a.toExponential(2));  // 1.00e+1

toPrecision()會根據(jù)處理的數(shù)值來決定到底是使用toFixed()還是toExponential()

var a = 10;
console.log(a.toPrecision(1));  // 1e+1
console.log(a.toPrecision(2));  // 10
console.log(a.toPrecision(3));  // 10.0
5.6.3 String類型

每個String類型都有一個length屬性,表示字符串包含多少個字符。雙字節(jié)符也算一個字符。

var a = "Hello world";
console.log(a.length);  // 11

字符方法:charAt()和charCodeAt(),這兩個方法接收一個參數(shù),即基于0的字符位置,charAt()返回指定位置的字符的字符串。charCodeAt()返回指定位置的字符的字符編碼。

var a = "Hello world";
console.log(a.charAt(1));  // e
console.log(a.charCodeAt(1));  // 101

字符串操作方法:concat(),用于將一個或多個字符串拼接起來,不會改變原字符串。實際操作中使用+拼接字符串更方便。

var a = "Hello";
var b = " world";
var c = "!";
var d = a.concat(b,c);
console.log(d);  // Hello world!

slice()、substr()、substring()三個方法返回被操作字符串的一個子字符串,都接收一個或兩個參數(shù),第一個參數(shù)指定子字符串開始的位置,第二個參數(shù)表示子字符串到哪里結束。
slice()和substring()第二個參數(shù)指定的是子字符串最后一個字符后面的位置,substr()第二個參數(shù)指定的是返回字字符串的字符個數(shù)。如果這3個方法沒有指定第二個參數(shù),則以字符串長度作為結束位置。這3個方法都不會修改原字符串。

var a = "Hello world!";
console.log(a.slice(1,3));  // el
console.log(a.substr(1,3));  // ell
console.log(a.substring(1,3));  // el

再給這3個方法傳遞負值時,slice()方法會將傳入的負值與字符串的長度想加,substr()方法將負的第一個參數(shù)加上字符串的長度,負的第二個參數(shù)直接轉(zhuǎn)為0,substring()方法會把所有負值參數(shù)都轉(zhuǎn)為0。

var a = "Hello world!";
console.log(a.slice(-5,-1));  // orld
console.log(a.substr(-5,3));  // orld
console.log(a.substring(-5,-1));  // 

substring()方法會比較兩個參數(shù),會將較小數(shù)作為起始位置,較大數(shù)作為結束位置。

var a = "Hello world!";
//  相當于調(diào)用a.substring(0,3)
console.log(a.substring(3,-4));  // Hel 

字符串位置方法:indexOf()和lastIndexOf()兩個方法都是從一個字符串中搜索給定的子字符串,然后返回子字符串的位置,沒有找到則返回-1。indexOf()從開頭開始查找,lastIndexOf()從結尾開始查找。

var a = "Hello world!";
console.log(a.indexOf("o"));  // 4
console.log(a.lastIndexOf("o"));  // 7

兩個方法都接收第二個參數(shù),表示字符串從哪個位置開始查找,indexOf()會忽略參數(shù)之前的所有字符,lastIndexOf()會忽略參數(shù)之后的所有字符。

var a = "Hello world!";
console.log(a.indexOf("o",6));  // 7
console.log(a.lastIndexOf("o",6));  // 4

字符串去除空格方法:trim()方法用來去除字符串開頭和結尾的空格,返回的是子字符串,不會改變原字符串。

var a = "   Hello world!   ";
console.log(a.trim());  // Hello world!

字符串大小寫轉(zhuǎn)換方法:toLowerCase()、toUpperCase()、toLocaleLowerCase()、toLocaleUpperCase()四個方法,toLowerCase()、toUpperCase()分別用來轉(zhuǎn)化為小寫和大寫,toLocaleLowerCase()、toLocaleUpperCase()兩個方法則是針對特定地區(qū)的大小寫轉(zhuǎn)換方法。大小寫轉(zhuǎn)換返回的都是子字符串,不會改變原字符串。

var a = "Hello world!";
console.log(a.toLowerCase());  // hello world!
console.log(a.toUpperCase());  // HELLO WORLD!

字符串匹配方法,match()方法接收一個正則表達式,返回一個匹配相關數(shù)組。全局匹配時返回所有匹配成功項組成的數(shù)組。

var a = "Hello world!";
var b = a.match(/o/);
console.log(b);  // ["o", index: 4, input: "Hello world!"]

var c = a.match(/o/g);
console.log(c);  // ["o", "o"]

search()方法接收一個正則表達式,返回字符串中第一個匹配項的索引,沒有找到則返回-1。

var a = "Hello world!";
var b = a.search(/o/g);
console.log(b);  // 4

字符串替換方法:replace(),可以接收兩個參數(shù),第一個參數(shù)可以是一個正則表達式或者一個字符串,第二個參數(shù)可以是一個字符串或者一個函數(shù)。如果第一個參數(shù)是一個字符串,則只會替換第一個匹配的子字符串,使用正則表達式并且?guī)в術標識符,才能替換全部匹配的子字符串。

var a = "cat,fat,sat,bat";
var b = a.replace(/at/g,"xy");
console.log(b);  // cxy,fxy,sxy,bxy

第二個參數(shù)是一個函數(shù)時,在只有一個匹配項的情況下,會向函數(shù)傳遞3個參數(shù):模式的匹配項、模式匹配項在字符串中的位置,原始字符串。在定義了多個捕獲組的情況下,傳遞給函數(shù)的參數(shù)依次是模式的匹配項、每個捕獲組的匹配項,最后兩個參數(shù)依然是模式匹配項在字符串中的位置和原始字符串。

var a = "Hello world";
var b = a.replace(/e/,function (match,pos,str) {
    console.log(match,pos,str);  // e 1 Hello world
});

split()方法可以基于指定的分隔符將一個字符串分割成多個子字符串,并將結果放在一個數(shù)組中。分隔符可以是一個字符串,也可以是一個正則表達式。這個方法還接收第二個可選的參數(shù),用來限制分割后的數(shù)組長度。

var a = "cat,fat,sat,bat";
var b = a.split(",",3);
console.log(b);  // ["cat", "fat", "sat"]

字符串的比較方法:localeCompare()方法用來比較兩個字符串,根據(jù)字符串在字母表中的排序來返回,小于參數(shù)則返回-1,等于參數(shù)返回0,大于參數(shù)返回1

var a = "hello";
var b = a.localeCompare("hallo");
var c = a.localeCompare("hello");
var d = a.localeCompare("hfllo");
console.log(b);  // 1
console.log(c);  // 0
console.log(d);  // -1

String構造函數(shù)本身還有一個fromCharCode()方法,接收一個或多個字符編碼,將其轉(zhuǎn)為字符串。

var a = String.fromCharCode(104,101,108,108,111);
console.log(a);  // hello

5.7 單體內(nèi)置對象

5.7.1 Global對象

在web瀏覽器中Global對象即window對象。

5.7.2 Math對象

Math對象用來保存數(shù)學公式和信息,所有屬性和方法文檔。
利用Math的求最大最小值方法來求數(shù)組中的最大最小值:

var a = [1,2,3,4,5];
var b = Math.min.apply(Math,a);
console.log(b);  // 1

舍入方法:Math.ceil()執(zhí)行向上舍入,Math.floor()執(zhí)行向下舍入,Math.round()執(zhí)行標準舍入,即四舍五入。

var a = 1.5;
var b = Math.ceil(a);
var c = Math.floor(a);
var d = Math.round(a);
console.log(b);  // 2
console.log(c);  // 1
console.log(d);  // 2

利用Math的求隨機值方法從某個范圍中取一個隨機值:

//  從1到10之間取一個隨機整數(shù)
var a = Math.floor(Math.random()*10+1);
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,685評論 0 4
  • 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 782評論 0 0
  • 剛放暑假,我的生活里就多了一只小狗,我們很想給這只小狗起的名字,但是就是想不出來。但是我想到了一點,那就是我和弟弟...
    20小石頭常詩彥閱讀 201評論 0 0
  • 不知道,要過八個路口才能寄出一封信, 不知道,一封信要貼六張郵票才能到達。 不知道,這封信要多久你才能收到, 不知...
    暮七閱讀 267評論 0 0
  • 牛腩洗凈,放2匙鹽腌制10分鐘 土豆去皮,番茄去皮,切塊洗凈瀝水,姜切片洗凈 起油鍋,下姜片,翻一下,下牛腩,翻炒...
    爆炸的沉默92閱讀 165評論 0 0

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