---
# System prepended metadata

title: 變數 與 資料型別
tags: [' JS 必修篇', 六角學院]

---

---
title: 變數 與 資料型別
tags: 六角學院, JS 必修篇
date: 2021/7/26
---

###### tags: `六角學院` `JS 必修篇`

###### *date: 2021/7/26*

# 📜 變數 與 資料型別

[TOC]

## 7/26 (ㄧ) 變數宣告

```javascript=
//步驟指引
//1.請宣告 const 變數名稱為 courseTitle ，並賦予值為字串JavaScript 必修篇 - 前端修練全攻略
const courseTitle = 'JavaScript 必修篇 - 前端修練全攻略'
//2.請宣告 let 變數名稱為 courseProgress ，並賦予值 0
let courseProgress = 0
//3.請宣告 const 變數名稱為 teacher ，並賦予值為字串 廖洧杰
const teacher = '廖洧杰'
//4.請宣告 const 變數名稱為 activity ，並賦予值為字串 六角筆記王：寫作吧！用文字喚醒你的前端魂！
const activity = '六角筆記王：寫作吧！用文字喚醒你的前端魂！'
//5.請宣告 let 變數名稱為 prize ，並賦予值為字串小米小愛音箱 Art、米家無線吸塵器 mini、小米手環
let prize = '小米小愛音箱 Art、米家無線吸塵器 mini、小米手環'


//最後使用 console.log 印出
console.log(`我參加了${courseTitle}課程，從${courseProgress}開始認真學習，${teacher}老師舉辦了${activity}活動，還有眾多獎項：${prize}等著我!`)
```

### 變數宣告技術重點

- let 和 const 是**區域**變數
- let 可以重新指定值
- const 是宣告一個常數
- const 物件，內層的屬性依然可以調整，因為物件是傳**參考**
- var 不推薦使用 :-1:

---

## 7/27 (二) 型別判斷

### 題目一

以下變數 a, b, c, d, e, f 它們的值、型別各自為何?

```javascript=
let a = 1 +"2"+ 3 ;  // a = 123, String
let b = "1" * "1";   // b = 1, Number
let c = 2 - "1";     // c = 1, Number
let d = 1 > 2;       // d = false, boolean
let e = 2 > 1;       // e = true, boolean
let f = "我好棒" - 1; // f = NaN, Number
```

### 型別判斷技術重點

- 因為 JS 是弱型別語言，在執行`+`法運算時，會優先進行字串連接
- 在執行`-`、`*`、`/`、`%`運算時，如果不是強制轉型，則會優先進行數字運算
- 使用比較運算符，會回傳**布林值**

### 題目二

以下選項哪些有問題，請指出有問題的答案，並回答為什麼。

```javascript=
//1 const 不能重複賦予值
const HexSchool = "六角";
HexSchool = "六角學院";

//2 變數名稱不能重複宣告
const HexSchoolMail = "service@hexschool.com";
const HexSchoolMail = "service@hexschool.com.tw";

//3 雖然 JS 會自動變數宣告，但不建議養成習慣
let studentNum = 20000;
studentNumber = 30000;

//4 保留字不能變數宣告
let const = const;

//5 變數宣告不能以數字開頭
const 123 = 123;
```

### 變數宣告命名技術重點

- 保留字不能宣告，例如：`const`、`delete`、`window`...等。
- 變數開頭不能是數字
- 命名小技巧可以使用駝峰命名法，例如`studentNum`、`student_num`、`student-num`...等。

---

## 7/28 (三) 變數實作情境題

### 第一題

媽媽請小明買水果，至少要三樣水果，最多不可超過150元：

```javascript=
//近期水果售價，請勿更動
let applePrice = 50;
let mangoPrice = 30;
let guavaPrice = 30;
let bananaPrice = 20;
let papayaPrice = 40;
let cost;

//請依提示幫小明買水果，並印出水果金額
cost = papayaPrice + mangoPrice * 2 + bananaPrice * 2;
console.log(`小明總共買了${cost}元`); // 140 元
```

### 第二題

媽媽請小明回程的路上記得去雜貨店買醬油1瓶、鹽1包，雜貨店老闆心血來潮幫小明打了九折，小明有200元：

```javascript=
//醬油、鹽售價，請勿更動
const soySaucePrice = 80;
const saltPrice = 40;
let sale = 0.9;
let mingMoney = 200;

//請幫小明算出還剩下多少錢，並印出結果
mingMoney -= (soySaucePrice + saltPrice) * sale;
console.log(`小明還剩${mingMoney}元`); // 92 元
```

### 第三題

小明回家後，媽媽為了獎勵小明順利完成跑腿，打算給小明增加下個月零用錢，但在這之前媽媽想先考考小明數學，算對了才願意調漲，以下是媽媽出的題目，請大家一起協助小明：

> 情境題
> 農夫種了12顆高麗菜
> 早上賣掉了2顆高麗菜
> 中午賣掉了3顆高麗菜
> 晚上又種了1顆高麗菜

```javascript=
let cabbageNum = 12;
//請依早、中、晚的順序去記算高麗菜數量，並使用 console.log 印出最終數量
cabbageNum += -2 + -3 + 1;

console.log(`農夫的高麗菜剩下${cabbageNum}顆`) // 8 顆
```

### 運算技術重點

- 基礎數學，括號先做後，先乘除後加減
- `x = x - 2`可以簡寫成`x -= 2`

---

## 7/29 (四) 字串處理與轉型

### 題目一

請使用 trim() 的方式將以下字串濾掉空白：

```javascript=
let myEmail = "  123456@gmail.com";
let myPassword = "    987654321";

myEmail = myEmail.trim();
myPassword = myPassword.trim();

console.log(myEmail)    // "123456@gmail.com"
console.log(myPassword) // "987654321"

```

### 題目二

請使用 parseInt() 將以下字串轉型為數字：

```javascript=
let a = "1";
let b = "2";

a = parseInt(a);
b = parseInt(b);

let c = a + b;
console.log(c) // 3
```

### 題目三

請使用 toString() 將以下數字轉型為字串：

```javascript=
let countryCode = 886;
let myNumber = 123456789;

countryCode = countryCode.toString();
myNumber = myNumber.toString();

let myPhoneNumber = countryCode + "+" + myNumber;
console.log(myPhoneNumber) // "886+123456789"
```

### 常用的內建函式技術重點

- `trim()`去除頭尾空白
- `parseInt()`將資料轉為整數
- `toString()`將資料轉為字串

---

## 7/30 (五) 變數章節總複習

### 題目一

請問以下變數的值、型別分別為何？

```javascript=
let a = 1 + "我好棒"; // a = "1我好棒", String
let b = 1 * "我好棒"; // b = NaN, Number
let c = 2 > 1;       // c = true, boolean
let d = 1 < 2;       // d = true, boolean
let e;               // e = undefined, undefined
```

### 題目二

請利用賦值運算子計算冰箱布丁剩餘數量：
>情境題 布丁剩多少？
>冰箱裡原有 15 顆布丁
>被妹妹拿走了 3 顆
>被姊姊拿走了 5 顆
>媽媽又冰了 10 顆
>弟弟拿走了 2 顆

```javascript=
//請透過此變數進行運算
let puddingNum = 15;

puddingNum += -3 + -5 + 10 + -2;

console.log(`布丁還有${puddingNum}顆`) // 15 顆
```

### 題目三
小美去飲料店買了很多飲料，但她數學不好，請利用以下步驟算出幫小美算出購買總額：

> 1. 1 杯紅茶 30 元
> 2. 小美買了 2 杯
> 3. 她將紅茶數量 * 紅茶價格，算出 60 元
> 4. 1 杯綠茶 25 元
> 5. 小美買了 4 杯
> 6. 她將綠茶數量 * 綠茶價格，算出 ?? 元
> 7. 1 杯奶茶 50元
> 8. 小美買了 6 杯
> 9. 她將奶茶數量 * 奶茶價格，算出 ?? 元
> 
```javascript=
//帳單從零開始計算
let bill = 0 ;
const blackTeaPrice = 30;
let blackTeaNum = 2;
bill += blackTeaPrice*blackTeaNum;
//請接續步驟指引4，協助小美算出帳單金額
const greenTeaPrice = 25;
let greenTeaNum = 4;
bill += greenTeaPrice*greenTeaNum;
const milkTeaPrice = 50;
let milkTeaNum = 6;
bill += milkTeaPrice*milkTeaNum;
console.log(`小美總共花了${bill}元`) // 460 元
```
### 題目四
請協助以下字串與數字轉型、過濾空白：
```javascript=
let number = "123";//將 number 轉型為數字
let string = 123;//將 string 轉型為字串
let myEmail ="  1235487@gmail.com";//請將 myEmail 的空白過濾掉

number = parseInt(number);
string = string.toString();
myEmail = myEmail.trim();
```

---

{%hackmd @JohnsonMao/theme-Wood-Fired %}
