js高手進(jìn)階實(shí)用語(yǔ)法的高級(jí)寫(xiě)法
一、常見(jiàn)寫(xiě)法優(yōu)化
名稱(chēng) | 一般寫(xiě)法 | 優(yōu)化 |
| 取整(不四舍五入) | var a='12.534324' parseInt(a,10); Math.floor(a); a>>0; //12 | ~~a; //12 a|0; |
| 取整(四舍五入) | var a='12.534324' Math.round(a); | a+.5|0; //13 |
| 未定義 | undefined; | void 0; // 快 0[0]; // 略慢 |
| 布爾值短寫(xiě)法 | true; | !0; |
| 串連字符串 | var a='a',b=4,c='c'; ''+a+b+c; | ''.concat(a, b, c); |
| 字符串截取 | var str='apple' str.charAt(0); | str[0] |
| 獲取數(shù)組是否存在元素 | for循環(huán) | [1, 2, 3].indexOf(2); |
二、優(yōu)化嵌套的條件語(yǔ)句
可優(yōu)化大量的ifelse switch語(yǔ)句
before:
//method1
if (color) {
if (color === 'black') {
printBlackBackground();
} else if (color === 'red') {
printRedBackground();
} else if (color === 'blue') {
printBlueBackground();
} else if (color === 'green') {
printGreenBackground();
} else {
printYellowBackground();
}
}//method2
switch(color) {
case 'black':
printBlackBackground();
break;
case 'red':
printRedBackground();
break;
case 'blue':
printBlueBackground();
break;
case 'green':
printGreenBackground();
break;
default:
printYellowBackground();
}//method3
switch(true) {
case (typeof color === 'string' && color === 'black'):
printBlackBackground();
break;
case (typeof color === 'string' && color === 'red'):
printRedBackground();
break;
case (typeof color === 'string' && color === 'blue'):
printBlueBackground();
break;
case (typeof color === 'string' && color === 'green'):
printGreenBackground();
break;
case (typeof color === 'string' && color === 'yellow'):
printYellowBackground();
break;
}優(yōu)化后
//method4
var colorObj = {
'black': printBlackBackground,
'red': printRedBackground,
'blue': printBlueBackground,
'green': printGreenBackground,
'yellow': printYellowBackground
};
if (color in colorObj) {
colorObj[color]();
}三、檢查某對(duì)象是否有某屬性
使用 hasOwnProperty和in
before:
var myObject = {
name: '@tips_js'
};
if (myObject.name) { }after:
myObject.hasOwnProperty('name'); // true
'name' in myObject; // true
myObject.hasOwnProperty('valueOf'); // false, valueOf 繼承自原型鏈
'valueOf' in myObject; // true四、更簡(jiǎn)單的使用indexOf實(shí)現(xiàn)contains功能
before:
var someText = 'javascript rules';
if (someText.indexOf('javascript') !== -1) {
}after:
!!~someText.indexOf('tex'); // someText contains "tex" - false!!~someText.indexOf('java'); // - true五、將有l(wèi)ength屬性的對(duì)象轉(zhuǎn)化為數(shù)組
比如帶有l(wèi)ength屬性的自定義對(duì)象,NodeList,parameters等。
轉(zhuǎn)化:
var? arr? = { length : 2 , 0 : 'first' , 1 : 'second' };
1、Array. prototype . slice . call (arr) //["first", "second"]
2、Array.from(arr) //["first", "second"]
六、獲取DOM元素在父類(lèi)中的索引
//html
<ul>
<li></li>
<li onclick="getIndex()"></li>
</ul>
//js
function getIndex() {
var evt = window.event;
var target = evt.target;
return [].indexOf.call(document.querySelectorAll('li'), target);// 返回1
}
七、判斷類(lèi)型 instanceof
1 2 |
|
八、if else 高級(jí)寫(xiě)法
if(a >=5){
alert("你好");
}
//可以寫(xiě)成:
a >= 5 && alert("你好");
var attr = true && 4 && "aaa";
//運(yùn)行的結(jié)果不是簡(jiǎn)單的true或這false,而是”aaa”代碼:var attr = attr || “”;這個(gè)運(yùn)算經(jīng)常用來(lái)判斷一個(gè)變量是否已定義,如果沒(méi)有定義就給他一個(gè)初始值,這在給函數(shù)的參數(shù)定義一個(gè)默認(rèn)值的時(shí)候比較有用。
到此這篇關(guān)于js高手進(jìn)階實(shí)用語(yǔ)法的高級(jí)寫(xiě)法的文章就介紹到這了,更多相關(guān)js高級(jí)寫(xiě)法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS for循環(huán)中i++ 和 ++i的區(qū)別介紹
這篇文章主要介紹了JS for循環(huán)中i++ 和 ++i的區(qū)別介紹的相關(guān)資料,需要的朋友可以參考下2016-07-07
純js代碼制作的網(wǎng)頁(yè)時(shí)鐘特效【附實(shí)例】
下面小編就為大家?guī)?lái)一篇純js代碼制作的網(wǎng)頁(yè)時(shí)鐘特效【附實(shí)例】。小編覺(jué)得聽(tīng)錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-03-03
Javascript-Mozilla和IE中的一個(gè)函數(shù)直接量的問(wèn)題
Javascript-Mozilla和IE中的一個(gè)函數(shù)直接量的問(wèn)題...2007-01-01
javasciprt下jquery函數(shù)$.post執(zhí)行無(wú)響應(yīng)的解決方法
這篇文章主要介紹了javasciprt下jquery函數(shù)$.post執(zhí)行無(wú)響應(yīng)的解決方法,需要的朋友可以參考下2014-03-03
javascript 單例模式詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了javascript 單例模式詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02
JavaScrip實(shí)現(xiàn)圖片壓縮與分辨率等比例縮放
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScrip實(shí)現(xiàn)圖片壓縮與分辨率等比例縮放,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
Javascript下的urlencode編碼解碼方法附decodeURIComponent
而本文,就大概說(shuō)說(shuō)如何在js中通過(guò)系統(tǒng)自帶的函數(shù)去解決這個(gè)問(wèn)題。2010-04-04
JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別實(shí)例分析
這篇文章主要介紹了JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別,結(jié)合額實(shí)例形式分析了JavaScript直接調(diào)用函數(shù)與call調(diào)用的基本用法、區(qū)別及相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05

