看到這個代碼:什麼是在JS中使用的「&=」?
var bFormValid = true;
var bValidData = true;
if(x < y){
bValidData = false;
}
bFormValid &= bValidData;
任何想法行bFormValid &= bValidData;
是幹什麼的?我從來沒有見過像這樣的&=
...
看到這個代碼:什麼是在JS中使用的「&=」?
var bFormValid = true;
var bValidData = true;
if(x < y){
bValidData = false;
}
bFormValid &= bValidData;
任何想法行bFormValid &= bValidData;
是幹什麼的?我從來沒有見過像這樣的&=
...
就像foo += 5
相當於foo = foo + 5
,foo &= bar
相當於foo = foo & bar
。
&
,當然是bitwise AND operator(不要與布爾運算符&&
混淆)。
舉例來說:
var a = 5, // 5 is '101' in binary, or 101b for short
b = 6, // 6 is 110b
result;
result = a & b; // set 'result' to the result of the binary
// operation '101b AND 110b'
console.log(result) // => 4 ('100' in binary)
a &= b; // set 'a' to the result of '101b AND 110b'
console.log(a); // => 4 (same as before, but we changed 'a' instead of
// assigning the result to another variable)
這適用於大多數運營商在JavaScript:
var foo = 6; // 110b
foo |= 9; // foo = 110b OR 1001b - 'foo' is now 15 (1111b)
foo -= 5; // foo = foo - 5 - 'foo' is now 10
foo /= 2; // foo = foo/2 - 'foo' is now 5
foo %= 3; // foo = foo % 3 - 'foo' is now 2
它不與布爾運算符的工作,雖然:
var bar = true;
bar ||= false;
// => SyntaxError: Unexpected token =
這是'augmented'assignment operator。
bFormValid &= bValidData;
是相當於
bFormValid = bFormValid & bValidData;
哪裏&
這裏是bitwise AND operator。
它是按位&賦值運算符。它將變量的值和表達式的值設置爲按位與運算的結果。 Link
正如其他人所說,該運算符執行按位與運算。還有一點要注意,在特定的代碼,是它開始與布爾值,並與數結束:
var bFormValid = true;
var bValidData = true;
if(x < y){
bValidData = false;
}
bFormValid &= bValidData;
在該序列結束時,變量「bFormValid」將是零或一個,而不是true
或false
。這很重要嗎?好吧,也許,也許不是。如果是希望它真的布爾:
bFormValid = !!(bFormValid & bValidData);
或者,也可能是數字一路過關斬將:
var bFormValid = 1;
var bValidData = 1;
if(x < y){
bValidData = 0;
}
bFormValid &= bValidData;
這相當於'bFormValid = bFormValid&bValidData;' – mah
【爲了您的書籤收藏。](http://www.ecma-international.org/ecma-262/5.1/) – Pointy
@Pointy哇...這是很多信息來排序通過 – FastTrack