第二周筆記 (JS) -1


Posted by RafealChen on 2021-04-20

基礎

基礎邏輯運算

and &&
or || 
not !
除了true 跟 false 數字也可使用邏輯運算;
短路 : 遇到true就先回傳true ex: false || 10 回傳10 3||10 回傳3, 3 && 10 回傳 10 false || true 回傳 false
在JS裡 0, no, false, 控制串 會被當成假的值。

位元運算

往左移一位 : x2
往右移一位 : /2
ex : 0100 (4) 往左移一位 1000 (8)
跟直接x2 /2 效能更加

位元運算的 and (&) or (|) xor(^ 兩個一樣回傳 0 兩個不一樣回傳 1) not (~ 變二進會後的每個數字都反轉): 
    1010
and 1111
--------
    1010
任何數字 &1 的結果不是1 (最後一位元是1) 就是 0 (最後一位元是0) 
=> 可做為一個 位元遮罩 
ex : 任何數字 & 8 (1000) 在第四個位元為1時 -> 1; 第四個位元為0時 -> 0
也因此也可以利用and來判斷是否為奇數或偶數 (第一個位元為0或1)

變數 Variable

var : 類似一個裝東西的盒子
變數不能用數字開頭,某些特殊符號或程式會用的名稱
若要打長串 可用 底線_ (this_is_a_box)或 駝峰式(單字開頭大寫 thisIsABox) 統一用一種就好

++

    a = a + 5 <=> a += 5 (- * / 一樣)
    a++ (-- 加一減一) ++a 
    a++ 會先執行完那行程式再執行 a = a + 1
    ++a 先執行 a = a + 1 再執行 該行程式
    ex : 
    var a = 0
    console.log(a++ && 30) => 0
    console.log(++a && 30) => 30

變數型態

    primitive : boolean, number, string
    object, undefined, function
    **null 是 object (一開始設計就是這樣了)
    typeof

Array 陣列

如果variable是一個箱子的話 array就是好幾個差不多類型的箱子
array_name = [index[0], index[1], index[2]] 
# 陣列用中誇號 [] &逗號 , 分隔 index : 索引,從 0 開始
array_name.length : 計算陣列長度
array_name.push : 加入值放入陣列

Object 物件

大括號
var student =[]
var peter =
{
#key : value
name : 'peter',
score = [1, 2, 3],
address : 'taipei city'
phone : '0912121212'
father : {
    name: "nick"
    phone: "1234"
}
.push 可將 object 加至 array
student.push(peter)
console.log(student[0].name)
peter['name']
ex:
var key = 'name'
console.log(peter[key]) <----這邊有疑問

變數運算

var a = 10
var b = "20"
console.log(a+b)  --->印出字串 "1020"
console.log(number(a) + parseInt(b, 10)) #此處的10為10進位的意思
*浮點數誤差
var a = 0.1 + 0.2
conssole.log(a) ----> 0.30000000000004
console.log(a == 0.3) ----> false
[浮點數誤差](https://medium.com/starbugs/see-why-floating-point-error-can-not-be-avoided-from-ieee-754-809720b32175)

== 與 ===

= : 賦值
== : 判斷是否相等
=== : 判斷是否相等還會比較兩邊型態 (ex:數字 or 字串) 推薦使用

從Object 的等號真正理解變數

console.log( [] === []) ----> false
console.log([1] === [1]) ----> false
console.log({} === {}) ----> false
console.log({a: 1} === {a:1}) ----> false

obj內存的是記憶體的位置









Related Posts

陪你玩論文 - AB3DMOT,一個 3D multi-object tracking 的 baseline

陪你玩論文 - AB3DMOT,一個 3D multi-object tracking 的 baseline

[第二週] 邏輯運算 位移運算子

[第二週] 邏輯運算 位移運算子

Day 2 - MongoDB 的 CRUD 教學

Day 2 - MongoDB 的 CRUD 教學


Comments