Lichen5221 / Report-Daily

記錄每日上課內容與作業。
0 stars 0 forks source link

2021-04-25 #6

Open Lichen5221 opened 3 years ago

Lichen5221 commented 3 years ago

物件

先透過陣列讓學生理解為什麼不簡單用陣列輸入資料就好了,因為沒辦法直接將一個人的檔案全部叫出來看,應該說要看用途不同換不一樣的方法,於是物件誕生了。

寫在 {} 內,裡面會有 key : value 這樣型態的多種資料,比如說 name : " " 然後用逗號分隔資料,代表這個學生的一些屬性。

物件也能和陣列合作。將物件資料放進去陣列裡面即可。如果想額外印出單一屬性的資料,就這樣叫出來 console.log( 陣列名稱 [0] . 屬性名稱 )。

不和陣列混用的話就直接叫 console.log( 變數名稱 . 屬性名稱 ),也可以 console.log ( 變數名稱 [ 屬性名稱 ] ) 這樣使用。

物件裡面也能放陣列、物件、函式皆可。

變數運算

因為值的類型不一樣,呈現的結果也不一樣。數字運算等於數字,字串 + 字串依然會是字串。因此在列印的時候可以利用指令將字串轉成數字。

var a = " 10 "
var b = " 20 "
console.log( Number( a ) + Number( b ))

or

console.log(parseInt( a, 10 ) + parseInt( b, 10 ))

逗點後面代表進位方式, 10 為十進位,也就是我們一般學習數學的進位方式,若改成 2 ,就會變成二進位,此時字串 " 10 " 在二進位中代表數字 2 ,此處需注意。

老師只示範在其中一個變數加上 Number 或是 parseInt ,當下就想說應該兩個變數都要加吧,實際上練習後,沒錯,你需要的通通都要加上去。

結果再仔細看影片才發現變數 b 老師不是用字串哈哈哈哈(上課不認真)。

浮點數誤差

電腦沒辦法乾淨俐落地儲存小數點,後面可能會出現很多零,所以印出來的時候會呈現很奇怪的數字,此部分請洽詢計概影片。

== 與 ===

上上次的筆記有寫到在程式語言中, = 只是單純的賦值的意思,如果要問有沒有想等,就要用到 == 。使用等號要注意到底要什麼意思,否則容易出現問題。

程式語言通常從右執行到左,所以如果輸入

var a = 10 == 10
console.log( a )

程式會先執行右邊 10 == 10 的部分,然後顯示 true。最好的方式還是透過括號去決定執行順序。

=== 代表比較兩邊的型態。

寫程式要特別注意型態,寫程式建議永遠都用 === ,在除錯的時候至少知道哪邊的型態可能需要調整。

從物件的等號真正理解變數

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

// 輸出結果皆為 false

變數的確是直接放值,物件比較像是有一個記憶體位置儲存,然後想像物件裡面存放的是記憶體位置,所以並不是直接放物件裡面的內容,而是放記憶體位置。但我們沒辦法知道記憶體位置是多少,因為程式只會把我們輸入的資料給我們。

再開一個物件時,記憶體位置不同,所以用三個等號比較 console.log 物件,即便我們輸入相同的東西,也會因為記憶體位置不同的關係呈現 false 。

當兩個物件指向同一個記憶體位置,更改其中的值(注意不是屬性),則兩個物件都會一起更動,兩物件仍保持相等;若將其一的物件重新賦予屬性跟值,則該物件會指向另一個記憶體位置,此時兩物件就不會相等。

這部分可以多玩幾次。