1 00:00:01,740 --> 00:00:03,810 我們已經寫了這超酷的變數 2 00:00:03,810 --> 00:00:06,440 來控制溫斯頓的眼睛大小,那真的非常有用 3 00:00:06,440 --> 00:00:10,096 因為當我們想改變溫思頓雙眼的大小時 它省了我們很多字數 4 00:00:10,296 --> 00:00:13,393 記得:之前我們需要重複寫入相同的數字四次 5 00:00:13,393 --> 00:00:15,966 去改變他眼睛的大小 6 00:00:15,966 --> 00:00:17,809 但是,我們還可以用變數去取代數字 7 00:00:17,809 --> 00:00:19,212 即使數字不是完全一樣嗎? 8 00:00:19,212 --> 00:00:21,716 例如,如果我想移溫斯頓右一點又怎樣? 9 00:00:21,716 --> 00:00:23,763 我可以改變這裏每一個x座標值 10 00:00:23,763 --> 00:00:25,568 但它們不全都一樣 11 00:00:25,568 --> 00:00:28,063 所以我不能只用某變數來取代它們全部 12 00:00:28,063 --> 00:00:29,139 但等一下! 13 00:00:29,139 --> 00:00:30,865 一旦我指派變數一個數字, 14 00:00:30,865 --> 00:00:33,943 我就可以使用那變數如那數字一樣 15 00:00:33,943 --> 00:00:37,163 這也表示我可以使用變數和數學表示式 16 00:00:37,163 --> 00:00:38,346 所以,這麼做如何: 17 00:00:38,346 --> 00:00:41,079 來寫一個變數代表著溫斯頓的x座標位置 18 00:00:41,079 --> 00:00:43,424 稱它為var x 19 00:00:43,424 --> 00:00:44,595 非常簡單 20 00:00:44,595 --> 00:00:48,036 好,現在給它溫斯頓臉部的x座標值 21 00:00:48,036 --> 00:00:51,449 他的臉會被畫在x座標200的位置 22 00:00:51,449 --> 00:00:54,423 所以,我們便說變數x得到200 23 00:00:55,213 --> 00:00:59,018 現在我可以用我的新變數x來取代這數字 24 00:00:59,018 --> 00:01:02,480 而當我改變x值時,它會移動溫斯頓的臉 25 00:01:02,480 --> 00:01:04,292 但不包括他的眼睛或嘴巴 26 00:01:04,912 --> 00:01:06,628 要修正那點 27 00:01:07,428 --> 00:01:10,855 我們要定義他眼睛和嘴巴的位置 28 00:01:10,855 --> 00:01:14,102 相對於他臉部的位置 29 00:01:14,862 --> 00:01:17,872 x座標將會成爲其它所有橢圓形的中心點 30 00:01:17,872 --> 00:01:22,642 所以他的臉會被畫在——那是200 31 00:01:22,642 --> 00:01:24,626 先來做他的左眼 32 00:01:24,626 --> 00:01:26,232 這橢圓形是他的左眼 33 00:01:26,232 --> 00:01:29,608 我們可以看到它正被畫在150上 34 00:01:29,608 --> 00:01:33,285 就在這裡,那是150 35 00:01:33,285 --> 00:01:37,612 而且我知道150是200再少50 36 00:01:37,612 --> 00:01:42,550 所以他的左眼應該位於他臉地位置,減去50 37 00:01:42,550 --> 00:01:47,660 也就是x,代表他臉的位置,- 50 38 00:01:48,020 --> 00:01:50,542 現在,若我改變這x座標的值 39 00:01:50,542 --> 00:01:53,254 他的眼睛便會跟著臉一起移動 40 00:01:53,254 --> 00:01:54,666 讓我們來做剩下的 41 00:01:54,666 --> 00:01:58,368 他的右眼正被畫在300上 42 00:01:58,368 --> 00:02:01,470 我可以看到這個在這裡是300 43 00:02:01,470 --> 00:02:05,874 而300,我知道,是比200再多100 44 00:02:05,874 --> 00:02:09,902 所以他的右眼應該位於他臉的位置加上100 45 00:02:09,902 --> 00:02:12,775 也就是x + 100 46 00:02:12,775 --> 00:02:14,241 現在就剩他的嘴巴了 47 00:02:14,241 --> 00:02:16,857 他的嘴巴正被畫在250上 48 00:02:16,857 --> 00:02:19,396 就在這裡,250的位置 49 00:02:19,396 --> 00:02:23,075 而250是200加50 50 00:02:23,075 --> 00:02:26,204 也就是在——噢,那是5 51 00:02:26,204 --> 00:02:30,983 也就是他臉的位置,x + 50 52 00:02:30,983 --> 00:02:33,347 現在——我要把這些塗鴉都擦掉 53 00:02:33,347 --> 00:02:38,223 每當我改變x值,它就會移動他的整張臉 54 00:02:38,223 --> 00:02:39,579 耶! 55 00:02:39,579 --> 00:02:42,662 在你離開前,還有兩件關於變數的事你必須了解 56 00:02:42,662 --> 00:02:45,858 一旦你用var x做了一個變數 57 00:02:45,858 --> 00:02:48,525 你可以繼續賦予值給它,多少遍都可以 58 00:02:48,525 --> 00:02:51,504 所以,在給x一個198的值後 59 00:02:51,504 --> 00:02:54,947 我可以再說x得到300 60 00:02:54,947 --> 00:02:59,240 或x得到150 61 00:02:59,240 --> 00:03:01,216 從那時起,電腦就會視x 62 00:03:01,216 --> 00:03:03,572 為任何我們最後賦予它的值 63 00:03:03,572 --> 00:03:05,419 在這情況下,就是150 64 00:03:05,419 --> 00:03:08,235 但是,你只需為每個變數寫一次var 65 00:03:08,235 --> 00:03:12,790 相反地,在這裡,如果我寫var x得到150的話 66 00:03:12,790 --> 00:03:15,825 那就會創造出一個叫x的全新變數 67 00:03:15,825 --> 00:03:18,394 在程序上會完全消滅舊的變數x 68 00:03:18,394 --> 00:03:21,563 而所有這些變數便會消失,到垃圾箱去 69 00:03:21,563 --> 00:03:24,615 之後,電腦只會使用那新變數 70 00:03:24,615 --> 00:03:28,127 有時你可以這麼做 而不會有什麼恐怖事情發生在你身上 71 00:03:28,127 --> 00:03:29,851 但我不會這麼建議 72 00:03:29,851 --> 00:03:33,208 現在,我只要來做一次:var x得到150 73 00:03:33,208 --> 00:03:37,186 非常方便地,我可以把溫斯頓完全移出視窗外 74 00:03:37,186 --> 00:03:40,254 以便解說下一個重點 75 00:03:40,254 --> 00:03:44,592 每當你使變數等於某物 76 00:03:44,592 --> 00:03:47,450 那變數就處在一個快樂、安全的地方 77 00:03:47,450 --> 00:03:49,501 事實上,等號的左邊 78 00:03:49,501 --> 00:03:53,532 是唯一變數可以真切感受到自己存在的地方 79 00:03:53,532 --> 00:03:57,318 因為那是唯一一個電腦會把它視為變數的地方 80 00:03:57,318 --> 00:04:00,037 在其他任何位置,電腦只會假裝它是一個值 81 00:04:00,037 --> 00:04:02,384 所以即使我們做了像這樣的事: 82 00:04:02,384 --> 00:04:06,041 var x得到10 83 00:04:06,041 --> 00:04:10,504 然後x得到x 84 00:04:10,504 --> 00:04:11,727 唔,好混亂 85 00:04:11,727 --> 00:04:14,572 在左邊,我們已有x 86 00:04:14,572 --> 00:04:17,497 一個自由思考、獨立的變數 87 00:04:17,497 --> 00:04:20,372 一個可以成長、改變的變數 88 00:04:20,372 --> 00:04:24,997 但,在右邊,只是,它就只是10 89 00:04:24,997 --> 00:04:26,523 真難過! 90 00:04:26,523 --> 00:04:28,939 但那表示我們可以做些非常有用的東西像這樣: 91 00:04:28,939 --> 00:04:33,535 我可以說x得到x + 1 92 00:04:33,535 --> 00:04:37,019 所以,在左邊,我們已使變數 處在一個快樂、安全的地方 93 00:04:37,019 --> 00:04:40,412 而在右邊,我們有這個變數 94 00:04:40,412 --> 00:04:42,814 基本上據我們所知就是一個數字 95 00:04:42,814 --> 00:04:44,206 也就是10 96 00:04:44,206 --> 00:04:47,939 在腦中我們可以用x得到10加1來取代它 97 00:04:47,939 --> 00:04:51,584 意思就是x得到11 98 00:04:51,584 --> 00:04:54,319 所以,這整行基本上就是說x得到11 99 00:04:54,319 --> 00:04:57,804 從現在起,x值就是11 100 00:04:57,804 --> 00:05:01,331 來看看如果我們將另一個變數 帶入方程式中會發生什麼事 101 00:05:01,331 --> 00:05:06,528 我要使var x得到10 102 00:05:06,528 --> 00:05:10,473 var y得到20 103 00:05:10,473 --> 00:05:12,424 x得到y—— 104 00:05:12,424 --> 00:05:13,835 我的天阿—— 105 00:05:13,835 --> 00:05:17,107 然後y得到7 106 00:05:17,111 --> 00:05:18,776 好,而我想知道的是 107 00:05:18,776 --> 00:05:22,103 x值是多少? 108 00:05:22,103 --> 00:05:23,531 讓我們來找出答案 109 00:05:23,531 --> 00:05:27,176 在這一行,我們正在建立一個新變數x 110 00:05:27,176 --> 00:05:29,171 並指派它10的數值 111 00:05:29,171 --> 00:05:31,777 所以x值是10 112 00:05:31,777 --> 00:05:33,909 在這一行,我們正在建立一個新變數y 113 00:05:33,909 --> 00:05:35,781 並給它20的數值 114 00:05:35,781 --> 00:05:37,123 我們沒有對x做任何事 115 00:05:37,123 --> 00:05:39,395 所以x值仍然是10 116 00:05:39,395 --> 00:05:42,206 在這裡,我們在說x得到y 117 00:05:42,206 --> 00:05:44,177 那蠻令人費解的,但如果你想一下 118 00:05:44,177 --> 00:05:46,280 我們知道在這些變數裏只有一個 119 00:05:46,280 --> 00:05:48,453 是在那快樂、安全的地方 120 00:05:48,453 --> 00:05:52,988 而另一個變數正被如數字一般地對待 121 00:05:53,707 --> 00:05:54,989 所以在這裡,我們可以在腦裡 122 00:05:54,989 --> 00:05:58,051 使y被它的值取替,也就是20 123 00:05:58,051 --> 00:06:01,765 且我們知道這行真正的意思是x得到20 124 00:06:01,772 --> 00:06:05,029 所以,在這x值為20 125 00:06:05,029 --> 00:06:08,825 接著,在這裡,這次我們的y正處在那快樂的位置 126 00:06:08,825 --> 00:06:10,421 其實不是真的那麼混亂 127 00:06:10,421 --> 00:06:12,828 因為我們在另一邊只是放了一個數字而已 128 00:06:12,828 --> 00:06:17,674 所以,問題於這:當我在這改變y值時 129 00:06:17,674 --> 00:06:20,810 會同時改變上面的x值嗎? 130 00:06:20,810 --> 00:06:22,081 答案是: 131 00:06:22,701 --> 00:06:25,952 不!不,不,不,不,不會! 132 00:06:25,952 --> 00:06:28,454 你必須記住,在這裡, 133 00:06:28,454 --> 00:06:31,760 y正被像是數字的方式對待 134 00:06:31,760 --> 00:06:34,618 電腦將會完全忽視它是一個變數 135 00:06:34,618 --> 00:06:36,270 忘記它可以更改的事實 136 00:06:36,270 --> 00:06:38,773 而它只會說: 137 00:06:38,773 --> 00:06:42,526 「噢,y?你真正指的是20吧。」 138 00:06:42,736 --> 00:06:44,921 所以在這,我們只是在指派x一個數字 139 00:06:44,921 --> 00:06:46,735 而不是在指派一個變數 140 00:06:46,735 --> 00:06:50,319 我們正賦予y值,也就是20 141 00:06:50,319 --> 00:06:54,224 那意思是x值保持20 142 00:06:54,224 --> 00:06:58,369 即使我們在最後一行改了變數y的值 143 00:06:59,929 --> 00:07:02,130 呼!懂了嗎? 144 00:07:02,130 --> 00:07:05,419 現在你們完全是變數專家了 145 00:07:05,419 --> 00:07:07,299 恭喜!