日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
別客氣,11種在教程中難以找到的JavaScript技巧,請(qǐng)收下

 今天,小芯給大家整理11條非常好用的JavaScript技巧。

買不了吃虧,買不了上當(dāng),快來看看吧~

1.獲取數(shù)組的最后一項(xiàng)

設(shè)置起始參數(shù)和終止參數(shù)時(shí),Array.prototype.slice(begin,end)具有剪切數(shù)組的功能。但是,如果未設(shè)置終止參數(shù),該功能將自動(dòng)設(shè)置為數(shù)組的最大值。

該功能可接受負(fù)值,我想很多人對(duì)此并不了解,而且如果將起始參數(shù)設(shè)定為負(fù)數(shù),那么會(huì)得到數(shù)組的最后幾個(gè)元素:

 
 
 
  1. vararray = [1,2,3,4,5,6]; 
  2.  
  3. console.log(array.slice(-1)); // [6] 
  4.  
  5. console.log(array.slice(-2)); // [5,6] 
  6.  
  7. console.log(array.slice(-3)); // [4,5,6] 

 

2.用||運(yùn)算符默認(rèn)某值

目前的ES6有默認(rèn)參數(shù)功能。為了在舊版瀏覽器中模擬該功能,你可以用||(OR運(yùn)算符)默認(rèn)某值,將其作為第二個(gè)可用的參數(shù)。

如果第一個(gè)參數(shù)返回到了false,那么第二個(gè)參數(shù)就會(huì)被視為默認(rèn)值。請(qǐng)看這個(gè)例子:

 
 
 
  1. function User(name, age) { 
  2. this.name = name || "OliverQueen"; 
  3. this.age = age || 27; 
  4. }var user1 = new User(); 
  5. console.log(user1.name); // Oliver Queen 
  6. console.log(user1.age); // 27var user2 = new User("Barry Allen", 25); 
  7. console.log(user2.name); // Barry Allen 
  8. console.log(user2.age); // 25 

3.重組數(shù)組元素

想不用Lodash這樣的外部工具庫就能重組數(shù)組元素?試試下面這個(gè)神奇的函數(shù):

 
 
 
  1. var list= [1,2,3]; 
  2. console.log(list.sort(function() { Math.random() - 0.5 })); // [2,1,3] 

 

4.短路條件

如果你看到一個(gè)代碼類似于:

 
 
 
  1. if (connected) { login(); 

 

可以通過結(jié)合使用變量(會(huì)被驗(yàn)證)和函數(shù)之間的&&(AND運(yùn)算符)來縮短上述代碼。比如,上述代碼可以縮短為一行:

 
 
 
  1. connected && login(); 

你可以執(zhí)行相同操作來檢查對(duì)象中是否存在屬性或函數(shù)。與以下代碼類似:

 
 
 
  1. user && user.login(); 

5.截取數(shù)組

這項(xiàng)技巧可以鎖定數(shù)組的大小,能夠根據(jù)你要設(shè)置的元素?cái)?shù)目從數(shù)組中刪除某些元素,十分有用。

比如,如果有一個(gè)含有10個(gè)元素的數(shù)組,但是你只想要

前五個(gè),那就可以截取數(shù)組,通過設(shè)置array.length=5讓它變小。請(qǐng)看下面的例子:

 
 
 
  1. var array = [1,2,3,4,5,6]; 
  2. console.log(array.length); // 6 
  3. array.length = 3; 
  4. console.log(array.length); // 3 
  5. console.log(array); // [1,2,3] 

6.用+運(yùn)算符轉(zhuǎn)換為數(shù)字

這種技巧真是太棒了!它操作起來非常簡(jiǎn)單,不過只適用于str函數(shù),否則它會(huì)返回到NaN(非數(shù)字)。請(qǐng)看下面的例子:

 
 
 
  1. functiontoNumber(strNumber) { 
  2.  
  3. return +strNumber; 
  4.  
  5. }console.log(toNumber("1234")); // 1234 
  6.  
  7. console.log(toNumber("ACB")); // NaN 

 

這種技巧同樣適用于日期,在這種情況下,它會(huì)返回到時(shí)間戳:

 
 
 
  1. console.log(+new Date()) //1461288164385 

7.合并數(shù)組

如果需要將兩個(gè)數(shù)組合并,那么可以用Array.contat()函數(shù):

 
 
 
  1. var array1 = [1,2,3]; 
  2.  
  3. var array2 = [4,5,6]; 
  4.  
  5. console.log(array1.concat(array2)); // [1,2,3,4,5,6]; 

 

但是,該函數(shù)并不是合并大型數(shù)組比較好的工具,因?yàn)樗鼊?chuàng)建新數(shù)組時(shí)會(huì)占用大量?jī)?nèi)存。

在這種情況下,可以用Array.push.apply(arr1, arr2),而不用創(chuàng)建新數(shù)組。這種函數(shù)會(huì)將第二個(gè)數(shù)組并入第一個(gè)數(shù)組,不會(huì)占用太多內(nèi)存:

 
 
 
  1. vararray1 = [1,2,3]; 
  2.  
  3. var array2 = [4,5,6]; 
  4.  
  5. console.log(array1.push.apply(array1, array2)); // [1,2,3,4,5,6]; 

 

8.在循環(huán)中緩存array.length

這個(gè)技巧很簡(jiǎn)單,但在循環(huán)中處理大型數(shù)組時(shí),它會(huì)對(duì)性能產(chǎn)生很大影響。為了迭代數(shù)組,幾乎每個(gè)人都會(huì)同時(shí)寫出這樣的代碼:

 
 
 
  1. for(vari = 0; i < array.length; i++) { 
  2.  
  3. console.log(array[i]); 
  4.  

 

如果處理的是小型數(shù)組,那沒問題,可是如果處理的是大型數(shù)組,那么代碼會(huì)在循環(huán)的每一次迭代中重新計(jì)算數(shù)組的大小,從而造成延遲。

為了避免此種情況,可以將要用的array.length緩存在某個(gè)變量中,而不用在循環(huán)的每一次迭代中都調(diào)用它:

 
 
 
  1. var length = array.length; 
  2.  
  3. for(var i = 0; i < length; i++) { 
  4.  
  5. console.log(array[i]); 
  6.  

 

想讓它變短一些?這樣寫就可以:

 
 
 
  1. for(var i = 0, length = array.length;i < length; i++) { 
  2.  
  3. console.log(array[i]); 
  4.  

 

9.全部替換

String.replace()函數(shù)允許使用字符串和正則表達(dá)式替換字符串;在本機(jī)中該函數(shù)只能替換第一次。但是可以在正則表達(dá)式的末尾使用/g,從而模擬replaceAll()函數(shù):

 
 
 
  1. varstring = "john john"; 
  2.  
  3. console.log(string.replace(/hn/, "ana")); // "joana john" 
  4.  
  5. console.log(string.replace(/hn/g, "ana")); // "joana joana" 

 

10.用!!運(yùn)算符轉(zhuǎn)換為布爾值

有時(shí)候,為將變量看作真值,我們需要檢查一個(gè)變量是否存在或是否具有有效值。在此驗(yàn)證過程中,你可以用!!(雙重否定運(yùn)算符)。

一個(gè)簡(jiǎn)單的!!variable會(huì)自動(dòng)將數(shù)據(jù)轉(zhuǎn)換為布爾值,而且該變量只有在含有0、null、""、undefined或NaN這樣的值時(shí)才會(huì)返回到false,否則會(huì)返回到true。

為了在實(shí)踐中理解這一過程,我們來看一看下面這個(gè)簡(jiǎn)單的例子:

 
 
 
  1. function Account(cash) { 
  2.  
  3. this.cash = cash; 
  4.  
  5. this.hasMoney = !!cash; 
  6.  
  7.  
  8. var account = new Account(100.50); 
  9.  
  10. console.log(account.cash); // 100.50 
  11.  
  12. console.log(account.hasMoney); // true 
  13.  
  14. var emptyAccount = new Account(0); 
  15.  
  16. console.log(emptyAccount.cash); // 0 
  17.  
  18. console.log(emptyAccount.hasMoney); // false 

 

該例中,如果account.cash的值大于零,那么account.hasMoney就是true。

11.將NodeList轉(zhuǎn)換為Arrays

如果運(yùn)行document.querySelectorAll("p")函數(shù),那么它有可能會(huì)返回到DOM元素?cái)?shù)組,即NodeList對(duì)象。但是該對(duì)象并不具有數(shù)組的全部函數(shù),比如sort()、reduce()、map()和filter()。

為了運(yùn)行以上函數(shù)以及其他自帶的數(shù)組函數(shù),需要將NodeList轉(zhuǎn)化為Arrays。想試試這個(gè)技巧?用下面這個(gè)函數(shù)就可以:[].slice.call(elements):

 
 
 
  1. var elements = document.querySelectorAll("p");// NodeList 
  2.  
  3. var arrayElements = [].slice.call(elements); // Now the NodeList is an array//This is another way of converting NodeList to Arrayvar arrayElements =Array.from(elements); 

文章題目:別客氣,11種在教程中難以找到的JavaScript技巧,請(qǐng)收下
標(biāo)題路徑:http://www.5511xx.com/article/coohjdi.html