我的第一堂 - JavaScript 01 邏輯、位元運算


Posted by krebikshaw on 2020-06-15

前言

JavaScript 最早只可以寫在 瀏覽器 上面,你可以透過 JavaScript 去操控 瀏覽器 上面看到的東西。

  • 比如說 表單驗證 就是利用 JavaScript 去檢查表單送出時,有沒有尚未填完的欄位。如果沒有填寫完整,就可以利用 JavaScript 在瀏覽器上動態加上紅色的警示 請填完此欄位再送出

直到 Node.js 這個執行環境出現之後,你可以在自己的電腦上面用 node.js 來執行 JavaScript。

  • 瀏覽器 上執行 JavaScript,就只能使用瀏覽器有提供的指令
  • Node.js 上執行 JavaScript,就只能使用 node.js 有提供的指令
JavaScript 一定要有一個執行環境,不管是在 瀏覽器 還是在 Node.js,
只有在執行環境底下才可以讓 JavaScript 運行。

事實 & 雄辯

程式裡面很常用到的就是判斷 truefalse

JavaScript 裡,代表 false 的就只有幾個:

0 : 零
-0 : -零
NaN : 不是數字 Not a number
(這邊的 不是數字只是解釋,但是 NaN 本身的資料型態還是 數字
null : 空值
undefined : 有宣告變數但是沒有賦值
"" : 空字串

邏輯運算

&&

  • 兩邊通通都要符合才行。
  • 全部都為 true 時,會回傳 true, 否則回傳 false
true && true > true  // 兩邊都符合 true ,所以輸出 true
true && false > false  // 兩邊沒有符合 ,所以輸出 false
false && true > false  // 兩邊沒有符合 ,所以輸出 false
false && false > false  // 兩邊都符合 false ,所以輸出 false

||

  • 只要其中一邊符合 true 就會回傳 true , 除非全部都是 false 才會回傳 false
true || true > true // 有任一邊符合 true,所以輸出 true
true || false > true // 有任一邊符合 true,所以輸出 true
false || true > true // 有任一邊符合 true,所以輸出 true
false || false > false // 通通不是 true,所以輸出 false

短路性質

  • 因為 && 一定要全部符合才會是 true
    • 所以一但第一個值為 false,就不用判斷第二個值了,直接回傳 false
  • 因為 || 只要其中一個值為 true 就會回傳 true
    • 所以一但第一個值為 true,就不用判斷第二個值了,直接回傳 true

二進位

2^i 2^5 2^4 2^3 2^2 2^1 2^0 數字
32 16 8 4 2 0
範例 1 0 1 1 0 0 44

我們可以把 10 當作燈泡的開關,

  • 1 代表
  • 0 代表
    所以 101100 可以看成 亮暗亮亮暗暗,接著我們只要看 的燈泡代表數字多少,然後加在一起就行囉。
範例:101100 去看表格,
    第一個亮的燈泡是 32 
    第二個亮的燈泡是 8
    第三個亮的燈泡是 4
那我們把數字加起來 : 32 + 8 + 4 = 44
所以 101100 就代表 44 這個數字。
  • 補充:如何將 正數 轉換為 負數

    • 10 先全部顛倒過來,再把結果 +1
    範例:000101100 是 44
    1 跟 0 顛倒過來 > 111010011
    把數字 +1 > 111010011 + 1 = 111010100
    這樣 111010100 代表的就是 -44
    
    • 負數 轉換回 正數,就把數值先 -1 再把 10 顛倒回來。

位元運算

<< n :把所有位元向左移動 n 次

  • 範例 0011010 << 1 會得到 0110100 (向左位移一位最後面補一個0)
  • 範例 0011010 << 2 會得到 1101000 (向左位移兩位最後面補兩個0)

每向左移動一次,整個數值就會變為原來的 2倍

>> n :把所有位元向右移動 n 次

  • 範例 0011010 >> 1 會得到 0001101 (向右邊位移一位最後面那位捨棄)

每向右移動一次,整個數值就會變為原來的 1/2倍

位元運算下的 & |

若是看到 &&||,我們就要直覺把左右兩邊換成 true 跟 false 來判斷。
若是看到 &|,我們就要直覺把兩邊換成 二進位 的數值,再把每一位的值分別開來判斷。

  • 舉個例子:
    • 2 && 4 符合第一種情況,也就會轉換成 true && true,會回傳 4(可參考前面的短路性質)
    • 2 & 4 符合第二種情況,也就會轉換成 010 & 100,會把三個位數分開來判斷, 第一位0 && 1,第二位1 && 0,第三位0 && 0,結果為 000,所以回傳 0

^:指的是 xor, 兩邊互相不符合,才會回傳 true

  • 1 ^ 0 結果是 1
  • 所以 1 ^ 0 結果是 0
  • 0 ^ 0 結果是 0

總結

JavaScript 是一種程式語言,我們可以運用它在瀏覽器上面執行我們想要完成的事情。下一篇再來開始介紹 JavaScript 的其他基礎概念。


#javascript







Related Posts

DAY 07 : 圖形

DAY 07 : 圖形

MTR04_0828

MTR04_0828

Git問題集 - rebase

Git問題集 - rebase


Comments