摘要:反之左操作數(shù)值為真,整個表達(dá)式的值則依賴于右操作數(shù)。以上的這種特性稱為運算符的短路行為,根據(jù)這個特性我們可以有效減少語句的使用,還可以增強程序的健壯性。數(shù)值上一個空串,會轉(zhuǎn)換為字符串字符串減會轉(zhuǎn)換為數(shù)值,如失敗則返回。
&&、||運算的高級用法
??在JavaSript中,“&&”運算符除了可以對布爾值進行與(AND)運算之外,還可以對真假值進行與(AND)運算。JavaScript中所有值都可以當(dāng)成真值和假值,除了false、null、undefined、0、-0、NaN和""其它值都是真值。
??運算符首先讓計算左操作數(shù)的值,如果為假,則整個表達(dá)式一定是假,因此“&&”這時簡單地返回左操作數(shù)的值,不會計算右操作數(shù)的值。反之左操作數(shù)值為真,整個表達(dá)式的值則依賴于右操作數(shù)。所以會繼續(xù)計算右操作數(shù)的值,并將其返回做為整個表達(dá)式的計算結(jié)果。
??以上的這種特性稱為“&&”運算符的 “短路”(short circuiting)行為,根據(jù)這個特性我們可以有效減少if語句的使用,還可以增強程序的健壯性。
//減少if使用 if(a==b) stop();//只有a==b時才調(diào)用stop() (a==b) && stop();//可以實現(xiàn)同上的效果 a==b && stop();//也同上實現(xiàn)同上的效果(關(guān)系運算的優(yōu)先級是高于邏輯運算的) //增加程序健壯性 function a(o){ //我們希望調(diào)用函數(shù)a事傳遞過來的實參是一個對象 //當(dāng)對象包含一個值不為假的屬性x時,我們執(zhí)行一段相關(guān)代碼 ) if(o&&o.x){ //但是我們有時無法控制傳遞過來的實參是什么 //如果是null或者沒有傳遞實參過來(undefined) //這時再對o進行屬性訪問運算,就會拋出類型異常 //這時使用“&&”運算符進行一下短路處理 //當(dāng)實參是null或者undefined就不會拋出異常了 //null和undefined為假值,根據(jù)短路特性右操作數(shù)不會被計算 /*執(zhí)行相關(guān)代碼*/ }else{ /*這里不可以添加一些友好的殺錯誤提示*/ } }
??“||”運算符和“&&”一樣也有更復(fù)雜的行為。它會首先計算左操作數(shù)的值,如果為真,直接返回這個真值。否則再計算右操作數(shù)的值,并返回這個表達(dá)式的計算結(jié)果。利用這一特性,可以給函數(shù)參數(shù)設(shè)置默認(rèn)值。
//copy函數(shù)實現(xiàn)將o的成員屬性復(fù)制到p中,并返回p function copy(o,p){ p=p||{};//如果向參數(shù)p沒有傳入任何對象,則使用一個新創(chuàng)建的對象 //函數(shù)實現(xiàn)相關(guān)代碼 }使用Array.join()生成重復(fù)的字串
??有時我們需要生成重復(fù)的字串,比如需要生成一個包含100個div標(biāo)簽對的字符串。大家更多的想到的是使用循環(huán)來實現(xiàn)。其實還有更簡單的方式。
var str=new Array(101).join("");//就是這么簡單使用 setXXX()方法安心實現(xiàn)日期加法
??有時需要對日期時間進行一些加減運算,除了將日期時間轉(zhuǎn)換毫秒再進行運算之外,我們還可以使用日期的方法更方便的進行日期時間加減運算操作。
var now=new Date("2017-06-11 23:00:00");//now:Mon Jun 11 2017 00:21:47 GMT+0800 (中國標(biāo)準(zhǔn)時間) now.setDate(now.getDate()+10); //加十天 //now:Wed Jun 21 2017 23:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時間) now.setDate(now.getDate()-30) //減三十天 //Mon May 22 2017 23:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時間) now.setSeconds(now.getSeconds()+300); //加300s //Mon May 22 2017 23:05:00 GMT+0800 (中國標(biāo)準(zhǔn)時間) //還可以 //setMonth() 設(shè)置月份 //setFullYear() 設(shè)置年份 //setHours() 設(shè)置小時 //setMinutes() 設(shè)置分鐘 //setMilliseconds() 設(shè)置毫秒巧用變量類型隱式轉(zhuǎn)換
??JavaScript變量類型轉(zhuǎn)換有相應(yīng)的方法,但我們也可以使用隱式轉(zhuǎn)換來實現(xiàn)類型轉(zhuǎn)換。也需要了解這些隱式的類型轉(zhuǎn)換才能讓程序達(dá)到你想要的運行效果。
1+""; //數(shù)值+上一個空串,會轉(zhuǎn)換為字符串 "1.5"-0;//字符串減1會轉(zhuǎn)換為數(shù)值,如失敗則返回NaN。"*1"也可以實現(xiàn)
??
暫時這些,以后記起啥了再來補充。也歡迎大家留言補充。
??
??
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/87050.html
摘要:的幾個小技巧盡早將無效的用例盡早返回,避免意外和不必要的代碼處理。要添加一種新的就需要再添加一個分支判斷多重判斷時使用或者,避免過長邏輯判斷改進后一次循環(huán)兩個數(shù)組 JavaScript 的幾個小技巧 1. 盡早 return function transformData(rawData) { // check if no data if (!rawData) { ret...
摘要:我們知道在中多了幾個對數(shù)組使用的新特性。這里我們舉兩個實際的例子吧例子一仔細(xì)體會。例子二看到了吧,可以直接在循環(huán)中指定變量,然后在循環(huán)體中來使用,是不是很簡單好了本文就這些內(nèi)容了,歡迎繼續(xù)關(guān)注。更多知識,請前往 我們知道在PHP7.1中多了幾個對數(shù)組使用的新特性。 這里我們舉兩個實際的例子吧: 例子一: // PHP 7.1+ $options = [enabled => true, ...
摘要:利用的一些輔助函數(shù)進行類型轉(zhuǎn)換的函數(shù)和復(fù)雜的自定函數(shù)之間有一個中間段,那就是的一些輔助函數(shù)。這些輔助函數(shù)對于某些特定數(shù)據(jù)類型的轉(zhuǎn)換非常有用如。 利用Pandas進行數(shù)據(jù)分析時,確保使用正確的數(shù)據(jù)類型是非常重要的,否則可能會導(dǎo)致一些不可預(yù)知的錯誤發(fā)生。筆者使用Pandas已經(jīng)有一段時間了,但是還是會在一些小問題上犯錯誤,追根溯源發(fā)現(xiàn)在對數(shù)據(jù)進行操作時某些特征列并不是Pandas所能處理的...
摘要:短信發(fā)送平臺現(xiàn)在是各行業(yè)領(lǐng)域中使用相對較為廣泛的一種推廣方式,企業(yè)在有營銷推廣需求的時候,都是會依靠短信平臺。短信發(fā)送平臺發(fā)送推廣短信的技巧短信平臺發(fā)送短信小技巧 短信發(fā)送平臺現(xiàn)在是各行業(yè)領(lǐng)域中使用相對較為廣泛的一種推廣方式,企業(yè)在有營銷推廣需求的時候,都是會依靠短信平臺。為何短信發(fā)送會受到如此重視呢?這主要是由于短信發(fā)送擁有的優(yōu)勢可以解決諸多企業(yè)推廣所面臨的諸...
摘要:數(shù)獨技巧直觀法候選數(shù)法相關(guān)二十格一個數(shù)字只與其所在行列及小九宮格的二十格相關(guān)我的思路精心設(shè)計了有效性判定函數(shù),最多一次遍歷個小單元格就能做出方案的有效性判定。 看《算法的樂趣》,試著用非遞歸窮舉來解數(shù)獨,看效率如何! 數(shù)獨規(guī)則 數(shù)獨游戲,經(jīng)典的為9×9=81個單元格組成的九宮格,同時也形成了3×3=9個小九宮格,要求在81個小單元格中填入數(shù)字1~9,并且數(shù)字在每行每列及每個小九宮格中都...
閱讀 960·2021-10-09 09:58
閱讀 794·2021-08-27 16:24
閱讀 1870·2019-08-30 14:15
閱讀 2520·2019-08-30 11:04
閱讀 2246·2019-08-29 18:43
閱讀 2307·2019-08-29 15:20
閱讀 2867·2019-08-26 12:20
閱讀 1782·2019-08-26 11:44