iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
1
Modern Web

從0.5開始的JavaScript系列 第 2

Day2 變數型別

今天來整理一下 JS 中有哪些常用的型別吧!

簡單二分法

非基本型別(Primitives)即物件(Object)
先從大方向分類,這樣是不是比較好記了~
那基本型別又包含了哪些呢?

基本型別

  • String(文字)
  • Number(數字)
  • Boolean(true/false)
  • undefined
  • null
  1. String
var str = "Hello World";
  1. Number
var num = 123;
  1. Boolean
var bool = ture;
  1. undefined
var a;
console.log(a); // undefined

//or

var b = undefined;
console.log(b); // undefined
  1. null
var a = null;

undefined vs null

Q: 感覺 undefined 和 null 差不多,他們是一樣的嗎?
A: 不一樣,簡單來說 undefined 可以想成變數只有宣告,但沒有給值(未定義初始值);而 null 是指該變數沒有值。

物件

除了上方提到的那些,其餘都是屬於物件。

物件{ 屬性: 值 }

var obj = {
    name: 'Ming',
    age: 18
}
console.log(obj.name, obj.age); // Ming, 18

// or
var obj2 = {};
obj2.name = "Alice";
obj2.age = 16;

物件也可以這樣用

var obj = {};
obj['Ming'] = { age: 18 };
obj['Alice'] = { age: 16 };

console.log(obj);
// {
//  Alice: { age: 16 },
//  Ming: { age: 18 }
// }

console.log(obj.Ming.age); // 18

Array

恩...? 上面是不是少提了 陣列(Array) 呢...?
沒有少提喔,在 JS 中並沒有 Array 這個型別,它一樣屬於物件,其在記憶體中的位置也不是連續的。

沒有 Array 的話,那這個是什麼?

var arr = ["hello", "world"];

它還是屬於物件喔

var arr = ["hello', 'world"];
console.log(typeof(arr)); // object

只是 JS 提供了很多 method,讓它用起來更像是 Array。
ex:

var arr = ["hello", "world"];
console.log(arr.length); // 2

arr.push("apple");
console.log(arr); // ["hello", "world", "apple"]

有時候還是要判斷是否是陣列而不是物件的話,可以用這個方法

var arr = ["hello", "world"];
Array.isArray(arr);  // true

關於 JS 中的陣列特性與說明,如果想要更詳細了解可以到網路上查詢。

Function

最後是 function,它嚴格來說還是屬於物件,但是 typeof 結果是 function,這個有興趣了解的可以自己 google。

function sayHi(){
  console.log("Hi");
}
sayHi(); // Hi

也可以帶入參數

function addTwoNum(a, b){
  return a + b;
}
var total = addTwoNum(10, 20);
console.log(total); // 30

物件(Object)的值也可以是 function

var obj = {
  i: 0,
  add: function(){
    obj.i++;
  }
}

obj.add();
obj.add();
console.log(obj.i); // 2

今日的分享就到這,我們明天見/images/emoticon/emoticon51.gif


上一篇
前言: 主題&大綱
下一篇
Day3 Variable Scope
系列文
從0.5開始的JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
konekoya
iT邦新手 5 級 ‧ 2018-10-08 09:15:00

ES6 中新增了一個 primitive, 叫做 Symbol
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures

Ryan Lee iT邦新手 4 級 ‧ 2018-10-08 14:27:11 檢舉

謝謝大大補充,我來研究一下/images/emoticon/emoticon41.gif

我要留言

立即登入留言