var x = 0;
var arr = [4,9,2];
arr[x] = (++x)-1;
document.write(arr[x]);//9
//爲什麼js忽略括號外的減號?爲什麼它不是4?忽略括號外的操作
var x = 0;
var arr = [4,9,2];
arr[x] = (++x)-1;
document.write(arr[x]);//9
//爲什麼js忽略括號外的減號?爲什麼它不是4?忽略括號外的操作
這(++x)-1
將導致0及本聲明的評估後x
是1,因爲你已經加1,並將其分配的0
所以這arr[x]
值(在聲明document.write(arr[x]);
)實際上是arr[1]
和arr[1]
被分配9.
值關於分配:
arr[x] = (++x)-1;
現在數組(索引0)的第一個元素的值將被分配值0。這就是爲什麼如果打印ARR你會得到下面的輸出:
[0,9,2]
@PaulFitzgerald請參閱我的更新。謝謝 – Christos
但是爲什麼? arr [x]不應該等於整個操作的結果嗎? – hawkeye871
@ hawkeye871很抱歉,我沒有收到您的評論?你說'arr [x]'等於整個操作的結果是什麼意思? – Christos
你寫
arr[x] // which is arr[0]
(++x)-1; // 1-1 = 0, x = 1
那麼你就寫出來
document.write(arr[x]); //arr[1] which is 9
爲什麼JS忽略負括號內的那外面?
所以不,js不會忽略減號。也許嘗試使用數組來理解前綴++
運算符wtthout,因爲在這種情況下他們會讓你感到困惑。
實施例:
var x = 0, y = 0;
y = (++x) - 1;
document.write("x: " +x + " y: " y); //x == 1, y == 0
@Tom感謝您的編輯 – user13377331
thx。似乎我知道了。對我來說有點棘手。 – hawkeye871
@ hawkeye871沒問題,樂意幫忙 – user13377331
arr[0] = 0
,這裏x
由1所以遞增,x
= 1,(1)-1 = 0
arr[1]
將打印9因爲x
= 1,則與訪問該陣列 元件索引1
document.write(arr)
它將打印[0,9,2]
,因爲數組的第一個 元素將分配值0。
var x = 0;
var arr = [4,9,2];
arr[x] = (++x)-1;
// x would be 1 after the evaluation of this statement.
//document.write(x);// it will print 1
document.write(arr[x]);// arr[1] it will print 9
//document.write(arr);// it will print [0,9,2]
請不要使用這種風格。它容易出錯並且難以閱讀。 –