1、使用var聲明變量如果給一個沒有聲明的變量賦值,默認(rèn)會作為一個全局變量(即使在函數(shù)內(nèi)賦值)。要盡量避免不必要的全局變量。2、行尾使用分號雖然JavaScript允許省略行尾的分號,但是有時不注意的省略...
1、使用var聲明變量
如果給一個沒有聲明的變量賦值,默認(rèn)會作為一個全局變量(即使在函數(shù)內(nèi)賦值)。要盡量避免不必要的全局變量。
2、行尾使用分號
雖然JavaScript允許省略行尾的分號,但是有時不注意的省略,會導(dǎo)致不必要的錯誤。建議在可用可不用行尾分號的地方加上分號。
3、獲取指定范圍內(nèi)的隨機(jī)數(shù)
var getRandom = function(max, min) {min = arguments[1] || 0;return Math.floor(Math.random() * (max - min + 1) + min);};
上面的函數(shù)接受一個你希望的隨機(jī)最大數(shù)和一個你希望的隨機(jī)最小數(shù)。
4、打亂數(shù)字?jǐn)?shù)組的順序
var sortArray = array.sort(function(){ return Math.random() - 0.5;});
5、取出數(shù)組中的隨機(jī)項(xiàng)
var ran = array[Math.floor(Math.random() * array.length)];
6、去除字符串的首尾空格
var s = string.trim();
7、類數(shù)組對象轉(zhuǎn)為數(shù)組
比如:類數(shù)組對象遍歷:
Array.prototype.forEach.call(argumens,function(value){})
DOM的NodeList和HTMLCollection也是類數(shù)組對象
8、獲取數(shù)組中的最大值和最小值
var max = Math.max.apply(Math, array);var min = Math.min.apply(Math, array);
9、清空數(shù)組
array.length = 0;
array = [];
10、保留指定小數(shù)位
var num = num.toFixed(2);
返回字符串,保留兩位小數(shù)
11、使用for-in循環(huán)來遍歷對象的屬性
for(var key in object) { // object[key]}
不要用for-in來遍歷數(shù)據(jù)
12、獲取某月天數(shù)
function getMonthDay(date){ date = date || new Date(); if(typeof date === 'string') { date = new Date(date); }; date.setDate(32); return 32 - date.getDate();}
傳入date參數(shù),可以是字符串、日期對象實(shí)例;為空表示當(dāng)月天數(shù)
13、浮點(diǎn)數(shù)問題
0.1 + 0.2 = 0.30000000000000004 != 0.3
JavaScript的數(shù)字都遵循IEEE 754標(biāo)準(zhǔn)構(gòu)建,在內(nèi)部都是64位浮點(diǎn)小數(shù)表示
14、JSON序列化和反序列化
使用JSON.stringify()
來將JavaScript對象序列化為有效的字符串。
使用JSON.parse()
來將有效的字符串轉(zhuǎn)換為JavaScript對象。
在AJAX傳輸數(shù)據(jù)時很有用
15、使用“===”替換“==”
相等運(yùn)算符(==)在比較時會將操作數(shù)進(jìn)行相應(yīng)的類型轉(zhuǎn)換,而全等運(yùn)算符(===)不會進(jìn)行類型轉(zhuǎn)換。
16、避免使用with()
使用with()可以把變量加入到全局作用域中,因此,如果有其它的同名變量,一來容易混淆,二來值也會被覆蓋。
17、不要使用eval()或函數(shù)構(gòu)造器
eval()和函數(shù)構(gòu)造器(Function consturctor)的開銷較大,每次調(diào)用,JavaScript引擎都要將源代碼轉(zhuǎn)換為可執(zhí)行的代碼。
18、簡化if語句
if (condition) { fn();}
可替換成:
condition && fn();
19、給可能省略的參數(shù)賦默認(rèn)值
function test(a, b){ a = a || '1';}
20、給數(shù)組循環(huán)中緩存length的值
如果你確定循環(huán)中數(shù)組的長度不會變化,那么你可以這樣:
var length = array.length;for(var i = 0; i < length; i++) {}
可以避免在每次迭代都將會重新計(jì)算數(shù)組的大小,提高效率
21、合并數(shù)組
對于小數(shù)組,我們可以這樣:
var arr1 = [1,2,3];var arr2 = [4,5,6];var arr3 = arr1.concat(arr2); // [1,2,3,4,5,6]
不過,concat()這個函數(shù)并不適合用來合并兩個大型的數(shù)組,因?yàn)槠鋵⑾拇罅康膬?nèi)存來存儲新創(chuàng)建的數(shù)組。在這種情況之個,可以使用Array.prototype.push.apply(arr1,arr2)
來替代創(chuàng)建一個新數(shù)組。
這種方法不是用來創(chuàng)建一個新的數(shù)組,其只是將第一個第二個數(shù)組合并在一起,同時減少內(nèi)存的使用:
Array.prototype.push.apply(arr1, arr2);
console.log(arr1); // [1,2,3,4,5,6]
22 枚舉對象“自身”的屬性
for...in除了枚舉對象“自身”的屬性外,還會枚舉出繼承過來的屬性。
var hasOwn = Object.prototype.hasOwnProperty;var obj = {name: 'tg', age: 24};for(var name in obj) { if (hasOwn.call(obj, name)) { console.log(name + ':' + obj[name]); }}// name:tg// age:24
來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺,并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點(diǎn)保持中立,對所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計(jì)