摘要:這個(gè)時(shí)候我就有點(diǎn)犯迷糊了,為什么邏輯運(yùn)算符能這么用呢由于是出身,所以對(duì)這樣用感覺(jué)很奇怪。
這篇文章主要介紹了js中的 || 與 && 運(yùn)算符詳解,需要的朋友可以參考下
一
js中邏輯運(yùn)算符在開(kāi)發(fā)中可以算是比較常見(jiàn)的運(yùn)算符了,主要有三種:邏輯與&&、邏輯或||和邏輯非!。
當(dāng)&&和|| 連接語(yǔ)句時(shí),兩邊的語(yǔ)句會(huì)轉(zhuǎn)化為布爾類型(Boolean),然后再進(jìn)行運(yùn)算,具體的運(yùn)算規(guī)則如下:
兩邊條件都為true時(shí),結(jié)果才為true;
如果有一個(gè)為false,結(jié)果就為false;
當(dāng)?shù)谝粋€(gè)條件為false時(shí),就不再判斷后面的條件
注意
當(dāng)數(shù)值參與邏輯與運(yùn)算時(shí),結(jié)果為true,那么會(huì)返回的會(huì)是第二個(gè)為真的值;如果結(jié)果為false,返回的會(huì)是第一個(gè)為假的值。
二.
只要有一個(gè)條件為true時(shí),結(jié)果就為true;
當(dāng)兩個(gè)條件都為false時(shí),結(jié)果才為false;
當(dāng)一個(gè)條件為true時(shí),后面的條件不再判斷
注意:當(dāng)數(shù)值參與邏輯或運(yùn)算時(shí),結(jié)果為true,會(huì)返回第一個(gè)為真的值;如果結(jié)果為false,會(huì)返回第二個(gè)為假的值;
三.
當(dāng)條件為false時(shí),結(jié)果為true;反之亦然。
上代碼說(shuō)明:
`` `` `` `` `demo ` `` `` `` `` ``
補(bǔ)充:邏輯與的優(yōu)先級(jí)是高于邏輯或的;
比如console.log(3||2&&5||0),會(huì)先算2&&5的值為5,然后再3||5----3,最后再3||0----3,所以最終結(jié)果為3.
補(bǔ)充
表達(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é)果;
轉(zhuǎn)換規(guī)則:
對(duì)象為true;
非零數(shù)字為true;
零為false;
非空字符串為true;
空字符串為法false;
其他為false;
例如
var a = obj || " " ; //如果 obj 為空,a就賦值為 " " ;
var a = check() && do(); //如果check()返回為真,就執(zhí)行do(),并將結(jié)果賦值給 a;
其他網(wǎng)友的補(bǔ)充
今天復(fù)習(xí)js繼承的時(shí)候發(fā)現(xiàn)了一個(gè)問(wèn)題,先上代碼了
`` ```
在執(zhí)行構(gòu)造函數(shù)的時(shí)候,無(wú)參的構(gòu)造函數(shù)返回的name是"mama",有參數(shù)時(shí),實(shí)例的name就是參數(shù)值了。 >這個(gè)時(shí)候我就有點(diǎn)犯迷糊了,為什么>邏輯運(yùn)算符||能這么用呢?
由于是C#出身,所以對(duì)js ||這樣用感覺(jué)很奇怪。
沒(méi)轍,不懂先研究,實(shí)驗(yàn)實(shí)驗(yàn)就知道了。
`var` `b, c, d;` `b =` `true` `|| 0;``//b=true;` `c =` `false` `|| 0;``//c=0;` `d = 1 || 0;``//d=1;`
換成別的呢?
`var` `b, c, d;` `b = 1-1 || 1+1;` `//b=2` `c =` `function` `() {` `return` `undefined } ||` `function` `() {` `return` `1};``//c=function();` `d = c();``//d=undefined` `var` `b, c, d;` `b = 1-1 || 1+1;` `//b=2` `c =` `function` `() {` `return` `1 } ||` `function` `() {` `return` `undefined};``//c=function();` `d = c();``//d=1` `b = {} || { a: 1, getA:` `function` `() {` `return` `this``.a}};` `//b=object` image `var` `b, c, d;` `b = { a: 1, getA:` `function` `() {` `return` `this``.a } } || {};` `//b=object` `c = b.getA();``//c=1;`
通過(guò)這幾個(gè)實(shí)驗(yàn),可以看出,JS的||并不是像C#里面的||一樣 單純的返回一個(gè)布爾類型。
大家都知道js的布爾類型判定是對(duì)象是true,非零是true,非空字符串是true其余的都是false
由此得出
邏輯或
表達(dá)式 | 表達(dá)式2 | a取值 |
---|---|---|
1 | 0 | 表達(dá)式1結(jié)果值 |
1 | 1 | 表達(dá)式1結(jié)果值 |
0 | 1 | 表達(dá)式2結(jié)果值 |
0 | 0 | 表達(dá)式2結(jié)果值 |
邏輯與 && :
var a = 表達(dá)式1 && 表達(dá)式2
表達(dá)式1 | 表達(dá)式2 | a取值 |
---|---|---|
1 | 0 | 表達(dá)式2結(jié)果值 |
1 | 1 | 表達(dá)式2結(jié)果值 |
0 | 1 | 表達(dá)式1結(jié)果值 |
0 | 0 | 表達(dá)式1結(jié)果值 |
主要原因是因?yàn)槎搪?,邏輯?/td> | 在前面有一個(gè)ture的時(shí)候則不看后面直接停止,邏輯與&&同理。 |
然后計(jì)算賦值和我們平時(shí)一樣之獲取最新的一次計(jì)算結(jié)果值。
例如
b = (1 + 1, 2 + 2, 3 + 3);`//b=6;`
嘛嘛,當(dāng)然只是猜測(cè)。
以上僅供參考。萌新一只,望各位大佬輕批。了解更多
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99175.html
摘要:這個(gè)時(shí)候我就有點(diǎn)犯迷糊了,為什么邏輯運(yùn)算符能這么用呢由于是出身,所以對(duì)這樣用感覺(jué)很奇怪。 這篇文章主要介紹了js中的 || 與 && 運(yùn)算符詳解,需要的朋友可以參考下 一 js中邏輯運(yùn)算符在開(kāi)發(fā)中可以算是比較常見(jiàn)的運(yùn)算符了,主要有三種:邏輯與&&、邏輯或||和邏輯非!。 當(dāng)&&和|| 連接語(yǔ)句時(shí),兩邊的語(yǔ)句會(huì)轉(zhuǎn)化為布爾類型(Boolean),然后再進(jìn)行運(yùn)算,具體的運(yùn)算規(guī)則如下: 兩邊條...
位運(yùn)算就是直接對(duì)整數(shù)在內(nèi)存中對(duì)應(yīng)的二進(jìn)制位進(jìn)行操作,一般是將數(shù)字化為二進(jìn)制數(shù)后進(jìn)行操作。本文將利用Python語(yǔ)言實(shí)現(xiàn)位運(yùn)算,感興趣的可以了解一下 簡(jiǎn)介 程序中的數(shù)在計(jì)算機(jī)內(nèi)存中都是以二進(jìn)制的形式存在的,位運(yùn)算就是直接對(duì)整數(shù)在內(nèi)存中對(duì)應(yīng)的二進(jìn)制位進(jìn)行操作,一般是將數(shù)字化為二進(jìn)制數(shù)后進(jìn)行操作。 應(yīng)用場(chǎng)景 在常規(guī)操作和位運(yùn)算的操作中使用位運(yùn)算,可以提升性能。但是會(huì)造成代碼難以理解,建議合理...
nvm(全名node.js version management),是一個(gè)node的版本管理工具,它和npm不同點(diǎn)在于,它是依賴包的管理工具。 它主要是用來(lái)解決不同項(xiàng)目所需node.js版本不一致時(shí)管理的麻煩,舉例,hexo主題,不同的主題需要的nodejs版本不一致,假如沒(méi)有管理的話,就要安裝卸載nodejs安裝對(duì)應(yīng)的版本 有了nvm就可以簡(jiǎn)單操作node版本的切換、安裝、查看等. 一...
此篇文章主要是給大家介紹了Caffe神經(jīng)網(wǎng)絡(luò)視覺(jué)效果層VisionLayers及主要參數(shù)詳細(xì)說(shuō)明,感興趣的小伙伴可以參考參考一下,希望可以有一定的幫助,祝愿大家多多的發(fā)展,盡早漲薪 前言 每一個(gè)層都有著的主要參數(shù),如name,type,bottom,top和transform_param請(qǐng)參考我前篇文章:Caffe神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)訪問(wèn)層及主要參數(shù) 文中只解讀視覺(jué)效果層(VisionLayer...
閱讀 2973·2021-10-20 13:46
閱讀 2520·2021-08-12 13:22
閱讀 2705·2019-08-30 15:54
閱讀 2343·2019-08-30 15:53
閱讀 549·2019-08-30 13:47
閱讀 3582·2019-08-23 16:56
閱讀 1733·2019-08-23 13:02
閱讀 1799·2019-08-23 12:25