2017.9.25 javascript邏輯運(yùn)算符“||”和“&&” 和東野圭吾

分享人:周倩宇

1. ||(邏輯或)


從字面上來說,只有前后都是false的時(shí)候才返回false,否則返回true。

alert(true||false);    // true
alert(false||true);    // true
alert(true||true);     // true
alert(false||false);    // false

但是,從深層意義上來說的話,卻有另一番天地,試下面代碼

alert(0||1); 前面0意味著false,而后面1意味著true,那么上面的結(jié)果應(yīng)該是true,而事實(shí)返回的結(jié)果是1。
alert(2||1); 前面2是true,后面1也是true,那返回結(jié)果又是什么呢?測試結(jié)果是2
alert('a'||1); 同樣,前面'a'是true,后面1也是true;測試結(jié)果是'a'
alert(''||1); 我們知道前面''是false,后面1是true,而返回結(jié)果是1。
alert('a'||0); 前面'a'是true,而后面0是false,返回結(jié)果是'a'
alert('a'||'b'); 前面'a'是true,后面'b'是false,返回結(jié)果是'a'
alert(''||0); 前面''是false,后面0同樣是false,返回結(jié)果是0
alert(0||''); 前面0是false,后面''是false,返回結(jié)果是''

這就意味
1、只要“||”前面為false,不管“||”后面是true還是false,都返回“||”后面的值。
2、只要“||”前面為true,不管“||”后面是true還是false,都返回“||”前面的值。

2. &&(邏輯與)


從字面上來說,只有前后都是true的時(shí)候才返回true,否則返回false。

alert(true&&false);    // false
alert(true&&true);    // true
alert(false&&false);    // false
alert(false&&true);    // false

然后,根據(jù)上面經(jīng)驗(yàn),我們看看“&&”號(hào)前后,不單單是布爾類型的情況。

alert(''&&1); 結(jié)果是返回'',“&&”前面''是false,后面是1是true。
alert(''&&0); 結(jié)果是返回'',“&&”前面''是false,后面是0也是false。
alert('a'&&1); 結(jié)果是返回1,“&&”前面''a是true,后面是1也是true。
alert('a'&&0); 結(jié)果是返回0,“&&”前面''a是true,后面是0是false。
alert('a'&&''); 結(jié)是返回'',“&&”前面''a是true,后面是''是false。
alert(0&&'a'); 結(jié)果是返回0,“&&”前面''0是false,后面是'a'是true。
alert(0&&''); 結(jié)果是返回0,“&&”前面''0是false,后面是''也是false。

這意味著
1、只要“&&”前面是false,無論“&&”后面是true還是false,結(jié)果都將返“&&”前面的值;
2、只要“&&”前面是true,無論“&&”后面是true還是false,結(jié)果都將返“&&”后面的值;

3. 總結(jié):


表達(dá)式a && 表達(dá)式b: 計(jì)算表達(dá)式a(也可以是函數(shù))的運(yùn)算結(jié)果,
如果為 True, 執(zhí)行表達(dá)式b(或函數(shù)),并返回b的結(jié)果;
如果為 False,返回a的結(jié)果;

表達(dá)式a || 表達(dá)式b : 計(jì)算表達(dá)式a(也可以是函數(shù))的運(yùn)算結(jié)果,
如果為 Fasle, 執(zhí)行表達(dá)式b(或函數(shù)),并返回b的結(jié)果;
如果為 True,返回a的結(jié)果;

由上兩個(gè)測試可知,邏輯運(yùn)算符,“||”和“&&”都是遵行短路原則,只要確定符號(hào)前面的真假,既可確定返回值。如果為第一個(gè)為:true,則取第一個(gè)的值,如果第一個(gè)為false,則取第二個(gè)的值。

在js邏輯運(yùn)算中,0、““、null、false、undefined、NaN都會(huì)判為false,其他都為true。
例如:

var  a =  obj || " "  ;     //如果 obj 為空,a就賦值為 “ ” ;
var  a = check() &&  do();    //如果check()返回為真,就執(zhí)行do(),并將結(jié)果賦值給 a;

需要說明的是“&&”的優(yōu)先級是高于“||”的,
測試:

alert(1||'a'&&2);

返回結(jié)果是1。

根據(jù)反證原理,我們假設(shè)“||”的優(yōu)先級不低于“&&”(這里只所以用“不低于”,是為了同時(shí)證明等級相同的情況)。

根據(jù)上面我們得出的結(jié)論(1),(1||'a')將返回前面的值1,(1&&2)根據(jù)結(jié)論(4)應(yīng)該返回后面的值2。這顯然不對,由此可知“&&”的優(yōu)先級是高于“||”的。

這里順便提下:看到很多代碼if(!!attr),為什么不直接寫if(attr);其實(shí)這是一種更嚴(yán)謹(jǐn)?shù)膶懛ǎ赫垳y試 typeof 5和typeof !!5的區(qū)別。

!!的作用是把一個(gè)其他類型的變量轉(zhuǎn)成的bool類型。

  • 在開發(fā)中的應(yīng)用,下面三段代碼等價(jià):

    • a=a||"defaultValue";
    • if(!a) { a="defaultValue"; }
    • if(a==null||a==""||a==undefined) { a="defaultValue"; }
      你愿意用哪一個(gè)呢?
  • callback&&callback()
    在回調(diào)中,經(jīng)常這么寫,更嚴(yán)謹(jǐn),先判斷 callback 是不是存在,如果存在就執(zhí)行,這樣寫的目的是為了防止報(bào)錯(cuò),如果直接寫 callback(); 當(dāng)callback不存在時(shí),代碼就會(huì)報(bào)錯(cuò)。


東野圭吾的部分語錄:

01-09《解憂雜貨店》
10-21《變身》
21-34《時(shí)生》
35-40《盛夏的方程式》

  1. 人與人之間情斷義絕,并不需要什么具體的理由。就算表面上有,也很可能只是心已經(jīng)離開的結(jié)果,事后才編造出的借口而已。因?yàn)樘热粜臎]有離開,當(dāng)將會(huì)導(dǎo)致關(guān)系破裂的事態(tài)發(fā)生時(shí),理應(yīng)有人努力去挽救。如果沒有,說明其實(shí)關(guān)系早已破裂。

  2. 其實(shí)很久以前我就知道自己應(yīng)該怎樣選擇,只是一直無法下決心舍棄夢想。到現(xiàn)在,我依然不知道怎樣才能做到這一點(diǎn)。打個(gè)比方,這就如同單相思的感覺,明知戀情不會(huì)有結(jié)果,卻還是忘不了對方。

  3. 雖然至今為止的道路絕非一片坦途,但想到正因?yàn)榛钪庞袡C(jī)會(huì)感受到痛楚,我就成功克服了種種困難。

  4. 滿腦子天真想法的人,在社會(huì)上吃點(diǎn)苦頭也是好事。

  5. 就算是恨,也是一種很抽象的感情。

  6. 我的回答之所以發(fā)揮了作用,原因不是別的,是因?yàn)樗麄冏约汉芘ΑH绻约翰幌敕e極認(rèn)真地生活,不管得到什么樣的回答都沒用。

  7. 他覺得一個(gè)人奮斗更輕松自在。跟沒有干勁的人在一起廝混,只會(huì)徒增壓力。

  8. “不管是騷擾還是惡作劇,寫這些信給浪矢雜貨店的人,和普通咨詢者在本質(zhì)上是一樣的。他們都是內(nèi)心破了個(gè)洞,重要的東西正從那個(gè)破洞逐漸流失。證據(jù)就是,這樣的人也一定會(huì)來拿回信,他會(huì)查看牛奶箱。因?yàn)樗芟胫?,浪矢爺爺?huì)怎樣回復(fù)自己的信。你想想看,就算是瞎編的煩惱,要一口氣想出三十個(gè)也不簡單。既然費(fèi)了那么多心思,怎么可能不想知道答案?所以我不但要寫回信,而且要好好思考后再寫。人的心聲是絕對不能無視的?!?/p>

  9. 這么多年咨詢信看下來,讓我逐漸明白一件事。很多時(shí)候,咨詢的人心里已經(jīng)有了答案,來咨詢只是想確認(rèn)自己的決定是對的。所以有些人讀過回信后,會(huì)再次寫信過來,大概就是因?yàn)榛卮鸬膬?nèi)容和他的想法不一樣?!督鈶n雜貨店》

  10. 即使我變得不再是我,即使我已變身為嗜血的兇徒,即使整個(gè)世界已變成廢墟,我仍然會(huì)用全部生命來愛你,至死不渝…… —— 《變身》

  11. 所謂活著并不是單純的呼吸,心臟跳動(dòng),也不是腦電波,而是在這個(gè)世界上留下痕跡。要能看見自己一路走來的腳印,并確信那些都是自己留下的印記,這才叫活著。

  12. 你不會(huì)懂的。胡說什么腦不是特殊存在的你,怎么會(huì)懂?腦畢竟還是特殊的。你能想象得到么?今天的自己和昨天的自己不同,而明天睜開眼的時(shí)候,站在那兒的又不是今天的自己了。我只能感覺,那些遙遠(yuǎn)的往事都成了別人的回憶,那些花了好長時(shí)間培養(yǎng)的東西正在一點(diǎn)一滴地消失。你知道那意味著什么么?我告訴你吧——死亡!所謂活著并不是單純的呼吸、心臟跳動(dòng),也不是有腦電波,而是在這個(gè)世界上留下痕跡。要能看見自己一路走過來的腳印,并確信那些都是自己留下的印記,這才叫活著。

  13. 總之,低能無聊的人太多。說他們勤勉,不過是因?yàn)椴粫?huì)合理分配時(shí)間;說他們積極,不過是逃避其他困難工作而已。即便說工作只是生存手段,也沒見他們有什么拿得出手的愛好或特長。我真是每天都在失望。低能無聊的人要是邊不滿邊罵著自己的低能無聊卻不愿做出任何改變,那就真是自尋煩惱、自掘墳?zāi)沽?。—?《變身》

  14. 世上莫名其妙走霉運(yùn)的人多的是,都在一邊為命運(yùn)生氣,一邊化憤怒為力量地活著。

  15. 別人對我稍稍親熱一點(diǎn),我就頭腦發(fā)昏,產(chǎn)生對方對自己有意的錯(cuò)覺。每當(dāng)意識(shí)到那不過是好感,或者是社交辭令,我就會(huì)厭惡自己,覺得受到傷害。 —— 《變身》

  16. 軟弱的人總是怕被說穿事實(shí),而且討厭說真話的人。 —— 《變身》

  17. 即使我們所知道的生命反應(yīng)全都消失,人也許還在悄悄地,以我們完全想象不到的方式活著?!?《變身》

  18. 別為難自己,活得像你自己就行了?!蹦赣H生前這么說。她了解我,我也像母親說的那樣活著,平凡,默默無聞,這樣比較適合我?!?《變身》

  19. 我愛你,她重復(fù)著。不能相信這種虛無的臺(tái)詞,假面之下不知道會(huì)洶涌著怎樣的欲望。

  20. 雙重人格者擁有兩種人格,大多數(shù)情況下不記得另一種狀態(tài)。 —— 《變身》

  21. 你說以前留下的痕跡已經(jīng)不歸現(xiàn)在的你所有了,那又有什么不好呢?重生的你一定會(huì)有屬于你自己的新足跡。 —— 《變身》

  22. 夢總是突然醒的,就像泡沫一般,越吹越大,最后啪地破滅,什么也沒有,除了空虛。沒有腳踏實(shí)地的建立起來的東西,就無法形成精神和物質(zhì)上的支撐。 —— 《時(shí)生》

  23. 確信喜歡的人能好好活著 即便面對死亡 也有如看到了未來 未來不僅僅是明天 未來能在人的心中 只要心中有未來 人就能幸福 —— 《時(shí)生》

  24. 他知道過去是改變不了的,但也無法袖手旁觀。” —— 《時(shí)生》

  25. 悲觀也沒用。誰都想生在好人家,可無法選擇父母。發(fā)給你什么樣的牌,你就只能盡量打好它。 —— 《時(shí)生》

  26. 只要想到你能活下去,即便在現(xiàn)在這一瞬間,我也已經(jīng)感受到了未來。確信自己喜歡的人能夠好好地活著,即便面對死亡,也看到了未來。對你父親來說,你母親就是未來。人不論在什么時(shí)候都會(huì)感受到未來。無論是怎樣短暫的一個(gè)瞬間,只要有活著的感覺,就有未來。 ——《時(shí)生》

  27. 確信自己喜歡的人能好好地活著,即使面對死亡,也看到了未來。 —— 《時(shí)生》

  28. 「沒有腳踏實(shí)地建立起來的東西,就無法形成精神和物質(zhì)上的支撐?!?—— 《時(shí)生》

  29. 「今后你也會(huì)喜歡各種各樣的人,正因?yàn)榛钪拍苓@樣?!?—— 《時(shí)生》

  30. “真了不起!竹美,真看不出你吃過這么多苦。” “吃了苦就掛在臉上那才叫慘哪。再說,悲觀也沒用。誰都想生在好人家,可無法選擇父母。發(fā)給你什么牌,你就只能盡量打好它?!彼戳丝赐貙?shí),“小學(xué)里學(xué)不學(xué)英語又怎樣?這點(diǎn)小事就能改變?nèi)松???拓實(shí)低下頭。看來竹美聽見了他的話。 —— 《時(shí)生》

  31. 夢總是突然醒的,就像泡沫一般,越吹越大,最后啪地破滅,什么也沒有,除了空虛。 —— 《時(shí)生》

  32. 確信自己喜歡的人能夠好好地活著,即便面對死亡,也看到了未來。對你父親來說,你母親就是未來。人不論在什么時(shí)候都會(huì)感受到未來。無論是怎樣短暫的一個(gè)瞬間,只要有活著的感覺,就有未來。我告訴你,未來不僅僅是明天。未來在人心中。只要心中有未來,人就能幸福起來。因?yàn)橛腥私塘四隳赣H這個(gè),她才將你生下來??赡憧纯醋约?,整天牢騷滿腹,不思進(jìn)取。你感受不到未來不能怪自己,要怪你自己,因?yàn)槟闶莻€(gè)混蛋 —— 《時(shí)生》

  33. “其實(shí),我現(xiàn)在這個(gè)樣子是借來的,借用了生在當(dāng)代的某人的身體,至于為什么會(huì)這樣,我也不明白。估計(jì)多想也沒用,并且,我有事情要做,就是找到你,線索只有花屋敷一條,但已經(jīng)足夠——已經(jīng)找到你了,命運(yùn)還真不錯(cuò)?!?—— 《時(shí)生》

  34. 只要想到你能活下去,即便在現(xiàn)在這一瞬間,我也已經(jīng)感受到了未來。 —— 《時(shí)生》

  35. 不管什么問題,都必然存在著答案。 —— 《盛夏的方程式》

  36. “不光只是坐到前排的問題,視線也有很大的關(guān)系。比方說,當(dāng)車子行駛在彎道比較多的路上時(shí),身體就會(huì)因?yàn)殡x心力的作用而向著外側(cè)甩出去。這種時(shí)候,如果你的視線也跟著甩動(dòng)的話,那么半規(guī)管的情報(bào)和視線情所就會(huì)變得不再一致,大腦也就會(huì)出現(xiàn)混亂。這樣一來,人就會(huì)暈車。如果你把目光固定到車子前進(jìn)的方向上去,那么就不容易出現(xiàn)這種癥狀了。那些會(huì)暈車的人在自己開車時(shí)沒事,也是因?yàn)樗麄兊哪抗庖恢倍级⒅胺健!?—— 《盛夏的方程式》

  37. 學(xué)者遇到研究瓶頸的時(shí)候,其原因一般都不會(huì)出在研究本身上,大多數(shù)的原因都是環(huán)境或者人際關(guān)系這類和研究毫無關(guān)系的問題。 —— 《盛夏的方程式》

  38. "不管什么問題,都必然存在著答案。"湯川兩眼盯著恭平,"但是,答案卻未必都是能夠立即導(dǎo)出的。這一點(diǎn)同樣適用于人生。今后,或許你還會(huì)遇到許多無法得出答案的問題。為了尋求答案,很多時(shí)候你必須讓自己長大。所以,人必須學(xué)習(xí)、努力、磨練自我。" —— 《盛夏的方程式》

  39. "你不喜歡理科,那倒也無所謂。不過你最好記住一點(diǎn),如果你還是覺得'不知道的事就是不知道'的話,那么遲早有一天,你會(huì)犯下大錯(cuò)的。" —— 《盛夏的方程式》

  40. “你的任務(wù),就是珍惜你自己的人生。而且還要比之前更加珍惜?!?—— 《盛夏的方程式》

東野圭吾文集 鏈接: https://pan.baidu.com/s/1skERy8l 密碼: 53yw

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • 關(guān)系運(yùn)算符 為什么要學(xué)習(xí)關(guān)系運(yùn)算符?默認(rèn)情況下,我們在程序中寫的每一句正確代碼都會(huì)被執(zhí)行。但很多時(shí)候,我們想在某個(gè)...
    極客江南閱讀 2,409評論 3 23
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,322評論 0 17
  • 簡單來說就是 因?yàn)閐iv寬度是width+padding+border,width不是純寬度,如果不想算,就把wi...
    西涼0閱讀 250評論 0 1
  • 話說秦孝公任用衛(wèi)鞅后,打算變更法度,又恐怕天下人議論自己。朝廷上有老臣們,秦國又百姓,變法會(huì)涉及到老臣和貴族的特權(quán)...
    昨日學(xué)堂閱讀 887評論 1 1

友情鏈接更多精彩內(nèi)容