[ JavaScript 02 ] 變數


Posted by tzutzu858 on 2020-06-21

變數宣告與 undefined

變數variable

  • js 裡寫 var 就是 variable

  • undefined -->有宣告但沒有賦值所以找不到

  • ++a 和 a++ 差別

    > a++ && 30
    => a && 30 ,再執行 a++
    
    > ++a && 30
    => 執行 a++,再 a && 30
    

變數型態 typeof

  • primitive : boolean,number,string
  • object,undefined,function
    > typeof 12
    "number"
    

陣列 array 的型態是 object
null 的型態是 object


陣列(Array)

box[0]
[0]是索引值,從 0 開始
length是長度,從 1 開始
如果把 length 放在索引裡面,記得 -1 不然會 undefined
因為假設 length 是 5 ,放在索引最後一個是 4 ,自然就 undefined

  • 增加陣列新元素
//方法 1
var score = [1,3,5,15,22]
score[score.length]=10000
console.log(score)

< (6) [1, 3, 5, 15, 22, 10000]


//方法 2
score.push(1000)

最直覺的變數型態:物件(Object)

陣列用中括號,物件用大括號
物件(Object)裡面可以放陣列(Array),也可以再放物件(Object)

var students = []

var peter = {
name : 'Peter',
score : [50,60,100],
address : 'taipei',
phone : "0912333444"
  father : {
    name : 'Nick'
       phone : "12345"   
  }

}

印出 Peter 的分數score

// 方法 1
students.push(Peter)
console.log(students[0].score)

// 方法 2
console.log(peter.score)

// 方法 3
console.log(peter['score'])

// 方法 4
var key = 'score'
console.log(peter[key])

印出 Peter 爸爸 的 name

console.log(peter.father.name)

變數的運算

  • 注意型態
var a = 10
var b = 20
console.log(a + b)

< 30

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

< 1020

解決辦法 : 轉型態

// 方法 1 
var a = 10
var b = '20'
console.log(a + Number(b))

< 30

// 方法 2
console.log(a + parseInt(b,10))

< 30

//  b 後面的 10 代表 10 進位
// 如果放 2 就會變 2 進位,假設 b = '10'
// 結果就會是 12
var a = 0.1 + 0.2
console.log(a == 0.3)

< false

// 把 a 印出來會發現 a = 0.30000000000000004
// 可以搜尋 "浮點數誤差"

== 與 ===

  • 差別在那 ? 型態 !
    === 會多判斷型態
console.log( 0 == '0')
< true

console.log( 0 === '0')
< false

console.log( 0 == ' ')
< true

console.log( 0 == null)
< false

從 Object 的等號真正的理解變數

console.log( [] === [])
< false

console.log( [1] === [1])
< false

console.log( {} === {})
< false

console.log( { a : 1 } === { a : 1 })
< false


因為每個 Object 放的記憶體不一樣,所以不管是 ===== 結果都會是 false
EX : 我有 Mac 你也有 Mac,都是 Mac 但不會是一樣的東西

怎樣變成 true ?

var obj ={
a:1
}

var obj2 = obj
console.log(obj === obj2)


< true
var obj ={
a:1
}

var obj2 = obj
obj2.a = 2
console.log(obj === obj2)


< true
// 增加 obj2.a = 2 ,結果還是 true
var obj ={
a:1
}

var obj2 = obj
obj2.a = 2
obj2 = { b:2 }
console.log(obj === obj2)


< false


#javascript







Related Posts

面試前測,一些資安問題

面試前測,一些資安問題

[JavaScript] ES6:Template Literals 樣板字面值

[JavaScript] ES6:Template Literals 樣板字面值

清晰說明針孔相機的內部參數與外部參數矩陣

清晰說明針孔相機的內部參數與外部參數矩陣


Comments