執行環境
JaveScript 是不能單獨執行的,他需要仰賴執行環境(runtime),而目前執行環境較常見的有兩種 「 瀏覽器、node.js 」。
在上次 week1 中的作業,我有提到 node.js,其實他並不是一個程式語言,功能是可以運作 JaveScript 的一個執行環境 (runtime),那平常沒用 node.js 作為執行環境時,瀏覽器就是我們的執行環境,他會提供 JaveScript 操控頁面上元素的方法。
而 node.js 是可以實現在自己電腦上運作 JaveScript 的執行環境,所以相對於瀏覽器,他就沒有什麼 document.getElementById...讀取 DOM 之類的方法,但是他擁有一系列的模組,當中有一個操作文件的模組名為fs
模組,fs 為 file system 的簡寫,可以讀取、寫入檔案。
所以我們統整一下兩個執行環境的差異:
瀏覽器:
方法-提供 DOM 的來操作頁面上元素的動態變化
觀測地點-瀏覽器中的開發者工具中的 console
node.js:
方法-fs 模組( file system ),可以讀取、寫入檔案。
使用、觀測地點-在自己電腦的 cmd 上運作 >
共同功能
共同功能 console.log ,雖是相同功能,但呈現方式不一定一樣必須注意
基本運算
加減乘除或餘數 (+-*/%)
就是一般的加減乘除,% 這個是餘數特別注意,在 cmd 下使用 node.js 的執行環境,若要運算值,請務必加上 console.log (運算程式),否則會出錯
邏輯運算 ( && || ! )
&& 、 || 、 ! 分別代表「 && and 」、「 || or 」、「 ! not 」短路性質 ||、 && 差異
前 || 後
如果 || 前,它的值是 true ,他就會回傳 「 前面的值 」,
相對的,
如果 || 前,它的值是 false ,他就會回傳 || 「 後面的值 」很直覺「 假的值 」,在 JaveScript 裡只要是 0、""、null、false、undefined、NaN ,就會回傳false
前 && 後
如果 && 前,它的值是 true ,他會回傳 「 後面的值 」。
相對的,
如果 && 前,它的值是 false , ,他就會回傳 &&「 前面的值 」
結論
|| or 前,如果是 false 就會印出 後面的值,往後找值
&& and 前,如果是 false 就會印出 前面的值,不往後找
位元運算
1.位移運算 ( >> 右移 、 << 左移 )
是針對位元(bit)操作,使用位移運算,因為是調用電腦最原始的形式( 二進位 ),所以在運算的效能通常會比較好
>> 右移
與二進位有關,電腦在運算向右移 __ 個單位,可視為除以幾個 210 >> 1 (可視為 10 除以 1 個 2) = 5 (得到答案為 5 )
如果右移,不能整除,運算會無條件捨去,
10 >> 2 (10 無法整除 2 個 2 < 就是 4 > )
可以看成 10 \ 4 這個算式 ,但不能整除,會有餘數 2 ,電腦會自動捨去餘數
= 2
<< 左移
與二進位有關,電腦在運算向右移 __ 個單位,可視為乘以幾個 210 << 1 (可視為 10 乘以 1 個 2) = 20 (得到答案為 20 )
2.位元運算 ( and & 、 or | 、 xor^、 not~ )
位元運算會將要運算的值,轉化成 「 二進位 」 的形式,來執行運算,最後再輸出結果,所以與 邏輯運算 的答案會不同。
位元運算 與 邏輯運算( 會有短路性質 ) 的差異
位元運算只有 單一符號,例如:&、|、 ^、~
10 & 15 (位元運算,需要轉換成二進位)
二進位表示法,如下:
1010
and 1111
------
1010
(可以看成有 0 就會有 0)
10 | 1 (位元運算,需要轉換成二進位)
二進位表示法,如下:
1010
or 0001
------
1011
(可以看成有 1 就會有 1)
1011(二進位表示) = 11 (十進位表示)
10 || 1(邏輯運算)
= 10
比較特別的是 xor 的使用,轉換成二進位模式,若運算兩個值相同,就會回傳 0 ,
在 JaveScript 中,使用^
這個符號呈現,但在一般運算式這個符號代表的是次方的運算
1010
xor 1111
-----
0101 (得到的值會是 0101 )
10 ^ 15
= 5
not 的運用,是以 ~
呈現,在 JaveScript 的運算中,會整個反轉 1 會變成 0 ;而 0 會變成 1
~15
= -16
有一個快速判斷參數是「 奇數 」還是「 偶數 」的方法,可以運用 & 1 快速做判斷。
17 & 1 = 1 若等於 1 ,就代表該數是「 奇數 」
反之
16 & 1 = 0 若等於 0,就代表該數為「 偶數 」