作者zpl ()
看板Web_Design
標題Re: [問題] &&=和||=的意思?
時間Thu Oct 10 21:50:15 2013
※ 引述《Adicia (愛迪希亞)》之銘言:
: &&=
: 進行&&運算,並將運算結果指定給左邊的運算式
: 例如,下面的運算是相同的:
: x&&=y;
: x=x&&y;
: ||=
: 進行||運算,並將運算結果指定給左邊的運算式
: 例如,下面的運算是相同的
: x||=y;
: x=x||y;
: 摘自-張亞飛《Javascript +jQuery全能權威指南》
: 以上的解說和範例完全看不懂@@
: 我知道&&是and,||是or的意思
: 它不是比較前後,最後得出的是布林值嗎?
: 它可以進行什麼樣的運算呢?相加之類的嗎?
: 新手學習中... 請多多指點,謝謝~~
更正 ||= 與 &&= 是as3才能用
一般而言我會在一些狀況下使用這種寫法
「 ||= 」比較常用到,通常是在做預設值的時候會用到,
因為 || 的特性是當判斷到可以是true的情況就回傳
ex:
var x = 0 || false || 1234 || 5566 ;
則 x = 1234;
舉例用法1(設定預設值):
function foo(xx,yy,zz){
yy ||= "預設值1";
zz ||= "預設值2";
...
}
foo(123);
這種用法要注意輸入的 yy,zz 不會是 false 之類的值,
所以「 x ||= 123; 」也可以看成 「 if(!x) x=123; else x = x; 」
舉例用法2(條件式處理):
var a,b,c=4;
function foo(){b=2; return 5;}
a = b || foo() || c;
則 a = 5, b = 2 , c = 4
同義於
if(b) a = b;
else {
a = foo();
if(!a) a = c;
}
至於 「 &&= 」就比較少用到了,通常是用來記錄邏輯flag狀態
而 && 特性為 || 的相反,為執行到可以是false狀態就回傳
ex:
var a,b,c=4;
function foo(){b=2; return 5;}
a = (b=1) && foo() && c && 0 && 123;
則 a=0,b=2,c=4
舉例用法?
var flag = true;
處理邏輯A...
flag &&= A;
處理邏輯B...
flag &&= B;
return flag;
通常是沒有這樣寫,除非是想省幾個變數宣告吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.27.57.85
※ 編輯: zpl 來自: 114.27.57.85 (10/10 21:52)
→ akiratw:JavaScript 沒有 &&= ||= 這種寫法吧,要也是 &= 和 |= 10/10 21:52
&= 與 |= 是位元邏輯 執行結果與意義都不同
※ 編輯: zpl 來自: 114.27.57.85 (10/10 22:01)
→ superpai:真的嗎?我剛剛看到SyntaxError: Unexpected token = 10/10 22:05
推 akiratw:可是我試了 Firefox 和 Chrome 都是 SyntaxError 10/10 22:06
推 LaPass:到底是哪個版本的JavaScript?之前我在書上說有foreach,結 10/10 22:09
→ LaPass:果也是不能用.... 10/10 22:09
好像搞錯了 ||= 與 &&= 是as3才能用...
※ 編輯: zpl 來自: 114.27.57.85 (10/10 22:15)
→ akiratw:AArray.forEach() 不是 JavaScript 1.6 開始就有了嗎,還 10/10 22:17
→ akiratw:是樓上說的是別的 foreach 10/10 22:17