2018-06-01-js-logic-compute

title layout categories tags excerpt
JavaScript邏輯運算符“&&”和“||”短路原則的應用
post
JavaScript
javascript邏輯運算 短路原則
javas中邏輯運算符的介紹,短路原則的介紹與應用

邏輯運算符

在Javascript中,有邏輯運算符 與 &&, 或 ||, 非 !,常在條件句或循環中進行邏輯判斷。

例如:

var a = 1, b = 1, c = 2;
if (a = b && (b = c || a != c)) 
{
	alert("true");
} else 
{
	alert("false");
}

括號中表達式值爲,最後提示“true”。

短路原則

在邏輯運算中,這是一個通用的原則,這是由於表達式從左到右執行的特性,爲了減少運算量而給運算器規定的操作。主要針對 &&|| 兩種運算。

  • && 的判斷是同真爲真,一假爲假,則運算如果左邊的表達式值爲 false,那麼就不會再執行右邊的表達式了,如果左表達式爲 true,就會繼續執行右表達式;

  • || 的判斷是一真爲真,同假爲假,則運算如果坐表達式值爲 true,那麼就不用執行右邊的表達式了,如果左表達式爲 false,就會繼續執行右表達式;

舉例說明:

(1 == 1) && alert("msg1");
(1 != 1) && alert("msg2");
(1 == 1) || alert("msg3");
(1 != 1) || alert("msg4");

結果是提示**“msg1”“msg4”**。原理如上述。

因此,如果有以下表達式:

var a = 9;
if (a > 0) 
{
	alert("true");
} else 
{
	alert("false");
}

也許你會使用三目運算簡化成這樣:

var a = 9;
(a > 0) ? alert("true") : alert("false");

其實也可以這樣寫:

var a = 9;
(a > 0) && alert("true");
(a > 0) || alert("false");

Javascript中的應用

在javascript中,只有對象(Object)和布爾值true爲真,其它例如 undefined, NaN, false 等,值爲 false。爲被定義的對象或未賦值變量也是 false,因爲其值都是 undefined,這裏就可以應用於檢查某變量是否已定義

舉例說明:

var a = 1;
var o = new Object();
var b;
a && alert("defined");       //已定義a,提示“defined”
o && alert("defined");       //已定義對象o,提示“defined”
Object && alert("defined");  //Object是一個已知的全局對象,提示“defined”
b || alert("not defined");   //b未賦值,提示“not defined”
p || alert("not defined");   //未定義p,提示“not defined”

除了這個也能衍生出其它相同原理的應用,類似於判斷賦值 var a = (b > 0) && '9' 或判斷定義變量 var abc = abc || "" 等。

js中使用這種方法可以減少代碼量,提示性能,但同時也降低了代碼可讀性,比如個人覺得還是看以下代碼比較舒適:

var a = 1;
if (a > 1)
{
	alert("true");
}

方法的選擇就要視情況而權衡了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章