1、||(or運(yùn)算符)設(shè)置默認(rèn)值
這個(gè)運(yùn)算經(jīng)常用來(lái)判斷一個(gè)變量是否已定義拾徙,如果沒(méi)有定義就設(shè)置一個(gè)初始值
function Person(name, age) {
this.name = name || 'wx';
this.age = age || 23;
}
var person = new Person('lfl',28);
var person1 = new Person();
console.log(person.name); //lfl
console.log(person1.name); //wx
2误续、&&(and運(yùn)算符)
if(type > 0){
console.log('第一種情況');
}
等同于:
type > 0 && console.log('第一種情況');
3、!!(雙重否定運(yùn)算符)變量轉(zhuǎn)換布爾類型值
它自動(dòng)將任何類型的數(shù)據(jù)轉(zhuǎn)換為布爾值定拟,除0于微、null、""青自、undefined株依、NaN返回false,其余都返回true延窜。常用作檢查一些變量是否存在恋腕,或者它是否具有有效值,從而將它們的值視為true逆瑞。
function Person(name) {
this.name = name;
this.hasName = !!name;
}
var person = new Person('wx');
var person1 = new Person();
console.log(person.hasName);//true
console.log(person1.hasName);//false
4荠藤、+運(yùn)算符 變量轉(zhuǎn)換數(shù)字
它只適用于數(shù)字型字符串,不然會(huì)返回NaN(不是數(shù)字)获高。
function toNumber(str) {
return +str;
}
toNumber('123') //123
它還可以用于date哈肖,返回時(shí)間戳。
console.log(+new Date()); //1499759034063
5念秧、在循環(huán)中緩存array.length
將數(shù)組長(zhǎng)度array.length賦值淤井,防止每次循環(huán)中都要計(jì)算。
for(var i = 0,l = array.length; i<l; i++){
console.log(i);
}
6摊趾、in運(yùn)算符 判斷對(duì)象屬性
用in來(lái)判斷某個(gè)屬性是否術(shù)語(yǔ)某個(gè)數(shù)組或?qū)ο蟊液荩敿?xì)用法往期《Javascript中in的用法》文章已舉例。
7严就、數(shù)組元素隨機(jī)排序
sort()方法本身按照字符串排序总寻,不過(guò)它可以接收一個(gè)比較函數(shù)作為參數(shù)來(lái)實(shí)現(xiàn)數(shù)字大小排序,比較函數(shù)接收兩個(gè)參數(shù)梢为,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之前則返回一個(gè)負(fù)數(shù)渐行,如果兩個(gè)參數(shù)相等則返回0,如果一個(gè)參數(shù)應(yīng)該位于第二個(gè)之后則返回一個(gè)正數(shù)铸董。 因此可以利用Math.random()-0.5這個(gè)方法隨機(jī)得到正數(shù)負(fù)數(shù)祟印,實(shí)現(xiàn)數(shù)組隨機(jī)排序。
var arr = [1,2,3,4,5,10];
arr.sort(function (a, b) {
return Math.random() - 0.5;
});
console.log(arr);//(隨機(jī)結(jié)果)
8粟害、獲取數(shù)組最后n個(gè)元素
slice(start,end)方法用于截取數(shù)組蕴忆,接收兩個(gè)參數(shù),開(kāi)始截取的元素索引值及結(jié)束元素的索引值悲幅,第二個(gè)參數(shù)可選套鹅,不傳的話返回到最后一個(gè)站蝠。如果傳負(fù)值,將從最后截取卓鹿。
var arr = [1,2,3,4,5,10];
console.log(arr.slice(-1));//[10]
console.log(arr.slice(-3));//[4,5,10]
9菱魔、NodeList轉(zhuǎn)換數(shù)組
有時(shí)候會(huì)獲取到一個(gè)DOM數(shù)組,即NodeList對(duì)象吟孙,只有轉(zhuǎn)換為真正到數(shù)組澜倦,才可以調(diào)用數(shù)組的方法。
var elements = document.getElementsByTagName("p"); // NodeList
var arrayElements = [].slice.call(elements);//方法1
var arrayElements = Array.from(elements); // 方法2
10杰妓、合并數(shù)組
數(shù)組自帶方法concat( )方法可以合并藻治,但是返回時(shí)創(chuàng)建一個(gè)新的數(shù)組,對(duì)于較大的數(shù)組來(lái)說(shuō)會(huì)消耗內(nèi)存巷挥。
當(dāng)數(shù)組較大且不必要產(chǎn)生新數(shù)組時(shí)桩卵,可以用Array.push.apply(arr1,arr2)實(shí)現(xiàn)合并。
var array1 = [1,2,3];
var array2 = [4,5,10];
array1.push.apply(array1, array2);
console.log(array1); // [1,2,3,4,5,10];