welcome to Cheeto's blog

0%

傳值 & 傳址

本章參考

傳值

所有的基本型別都是「傳值」。

1
2
3
4
5
var a = 10;
var b = a;

a = 100;
console.log(a, b); // 100, 10

這邊可以看到 b = a 但是a的值改變了之後b卻維持在原位,這是因為基本型別的傳遞是利用複製的,所以 b = a 的值是複製a的值而已。

可以看作ab兩個都是不同的個體。

所以之後a不管做了什麼樣的更新,都跟b不會有任何的關係。這種方式稱為「傳值」。

閱讀全文 »

未定義的物件屬性預設值

在 JavaScript 的物件下,如果去查找該物件不存在的屬性,它不會回傳 not defined,而是會回傳 undefined。

1
2
3
4
var family = {
name: '小明家'
};
console.log(family.ming); // undefined

這邊如果這樣做

1
2
3
4
5
var family = {
name: '小明家'
};
console.log(family.ming); // undefined
family.ming.name = '小明';

這邊會回傳這樣 ↓

未定義物件屬性

閱讀全文 »

物件與純值

在 JavaScript 當中,純值是無法新增屬性的,只有物件型別可以新增屬性。

1
2
3
var newString = '小明家';
newString.name = '小明';
console.log(newString) // 小明家

因純值無法新增屬性,所以 newString 還是會維持本來的字串,不會做任何的修改。

閱讀全文 »

物件結構

建立物件有兩種方式,一種是物件實字;另一種則是物件建構式。
要設定物件的話裡面固定會有屬性跟值,屬性的名稱都會是字串不會是其他型別,值裡面可以是字串數字物件函式

物件實字

物件實字語法

1
2
3
4
5
6
7
8
9
10
11
var family = {
name : '小明家',
money: 1000,
members: {
mom: '老媽',
dad: '老爸'
},
callFamily: function(){
console.log('聯絡小明家');
}
};
閱讀全文 »

Truthy Falsy

在 JavaScript 中,truthy(真值) 指的是在布林值判斷中,轉換後的值為真的值。我們也可以另外一個方向來理解「除了 falsy 以外的值都是 truthy」,那我們就可以來看看 falsy 的值有哪些了。如下

  • 0
  • NaN
  • ‘’ (空字串)
  • false
  • null
  • undefined

Truthy Falsy

閱讀全文 »

優先性及相依性

優先性

優先序較高的運算子會成為優先序較低的運算子的運算元。例:乘除的符號優先性大於加減,所以會先乘除後加減。

相依性

相依性決定運算方向。例:加減乘除都是由左至右、等號則是由右至左。
而當優先性相同時依據相依性的運算方向執行。

加減乘除優先性

var a = 2 * 2 + 2 * 3; 為例子

加減乘除優先性

因為 *(乘號)的優先性大於 +(加號),所以會先進行乘的動作,接著乘出來的數字就是 +(加號)的運算元,這也符合描述的優先性。

閱讀全文 »