---
# System prepended metadata

title: js筆記

---

# js筆記

Symbol 是一種特殊的、不可變的資料型別，可以作為物件屬性的識別符號使用，表示獨一無二的值。
- Symbol() 是一個函數，不是 constructor，你不能 new 它
- Symbol 值透過 Symbol() 函數來生成：
```bash=
let s1 = Symbol();

# "symbol"
typeof s1;

let s2 = Symbol();

# false
s1 === s2;
```
## 迴圈
### 1. do while 迴圈
循环至少执行一次，即便条件为 false，因为代码块是在条件语句判断前执行：
```bash=
var text = ""
var i = 0;
do {
    text += "<br>数字为 " + i;
    i++;
} while (i < 5);
document.getElementById("demo").innerHTML = text;
```
### 2. while 迴圈語法
當 condition 為 true 時，則重覆執行 while 區塊內的語句， 直至 condition 變 false。
```bash=
while (condition) {
  // statements
}
```

### 3. for 迴圈 - 需要以程式碼執行次數作為迴圈的條件。
```bash=
for(var i=0 ; i < 3 ; i++){
  console.log(i)
}
```
## 判斷式
### 1. if...else
```bash=
if(條件一){
  如果條件一成立，就執行選項A;
} else if (條件二){
  如果條件一不成立但條件成立，就執行選項B;
} else{
  如果條件一跟二都不成立，就執行選項C;
}
```
### 2. switch
```bash=
switch(參數){
case 條件一 :
  參數與條件一符合，執行相關的程式碼;
  break;
  // 每個 case: 後方都會補上 break; 來阻止已完成的區塊在後方繼續執行
case 條件二 :
  參數與條件二符合，執行相關的程式碼;
  break;
default:
  如果沒有任何一個 case: 符合參數，就執行相關的程式碼;
  break;
}
```
## Function.prototype
call
apply
bind

## Math物件
Math.PI- 圓周率
Math.round()- 四捨五入
Math.pow()- n 次方
Math.sqrt()- 開根號
Math.abs()- 絕對值
Math.ceil()- 無條件進位
Math.floor()- 無條件捨去
Math.sin()
Math.cos()
Math.min() and Math.max()- 最大值最小值
Math.random()- 隨機數字

## 取得文字內容
innerText 會過濾掉多餘的空白
textContent 會保留多餘的空白
innerHTML 會連 html 標籤也取得

## DOM 尋訪 
parentNode- 往上找
childNodes[nodenumber]- 往下找
firstChild- 找到第一個
lastChild- 找到最後一個
nextSibling- 往後一個
previousSibling- 往前一個

## 新增、修改、刪除 DOM 節點
[重新認識 JavaScript: Day 13 DOM Node 的建立、刪除與修改](https://ithelp.ithome.com.tw/articles/10191867)

## Dom0 級與 Dom2 級的差別???

