###### tags: `JavaScript`
###### tags: `學習`
{%hackmd BJrTq20hE %}
# 字串型別
## 宣告字串
let a = 'hello';
變數類型 變數名稱 賦值 值
值用單引號或雙引號,不可以混用
例如:
```javascript=
let a = 'hellow";
或let a = "hellow';
```
建議全部統一使用單引號或是雙引號。除了特定的情況
例如:
```javascript=
let a = "Let's go."
```
需要用到引號的字串時就可以改用雙引號。
## 字串相加與樣板字面值
字串是可以相加的
例如:
```javascript=
let a ='hellow'+'你好嗎?';
console.log(a) // hello你好嗎?
```
字串如果中間要留白也可以這樣寫
例如:
```javascript=
let a ='hellow'+' '+'你好嗎?';
console.log(a) // hellow 你好嗎?
let name = 'Jack';
let sayHellow = name+' '+a;
console.log(sayHellow)// Jack hellow 你好嗎?
```
樣板字面值
範例
```javascript=
let a ='hellow';
let name = 'Jack';
let total = `我是${name},${a}`
console.log(total)// 我是Jack,hellow
```
## 透過typeof了解當前變數的類別
利用typeof了解變數的類型,因為有的時候使用console.log會不知道變數的類別
例如:
```javascript=
let friendName ='Tom';
let age = 18;
let num = '18';
console.log(age)// 18
console.log(num)// 18
```
會弄不清楚那個是數字哪個是字串,這個時候就需要用到typeof。
例如:
```javascript=
console.log(typeof age)// number
console.log(typeof num)// string
console.log(typeof friendName)// string
```
## 自動轉型
JavaScript在做變數相加的時候,會自動轉型為字串
例如:
```javascript=
let a = 1;
let b = '5';
let c = a+b;
console.log(c)// 15
console.log(typeof c)// string
let d = 'Jack';
let e = b+d;
console.log(e)// 5Jack
console.log(typeof e)// string
```
在變數的相減相乘相除,會轉型為數字做計算,如果無法計算會表示NaN但型態依然是數字。
例如:
```javascript=
let a = 1;
let b = '5';
let c = a-b;
console.log(c)// -4
console.log(typeof c)// number
let d = 'Jack';
let e = b-d;
console.log(e)// NaN
console.log(typeof e)// number
```
把以上的減替換為乘或除都會是一樣的結果,可以計算就顯示計算後的結果,型態轉為數字,不能計算顯示NaN,但型態依然是數字。
## 轉換型別
有時候變數需要轉換型別才能使用,以下為兩個轉換型別的語法,parseInt()與toString()
範例:
### 轉為數字
```javascript=
let a = '123';
let b = parseInt(a)
console.log(typeof b)// number
```
如果不是數字就會轉型失敗
```javascript=
let a ='abc'
a = parseInt(a)
console.log(a)//NaN
```
在HTML文字表單(input)中取出的都是字串,如果需要計算就需轉型為數字。
### 轉為字串
```javascript=
let a = 123;
a = a.toString()
console.log(typeof a)// string
```
需要作文字合併時可以使用例如電話號碼與區碼合併 "08" +"電話",轉成字串就不會向數字一樣加總。
## 字串的常用處理方法
字串常用的處理方法有length()與trim(),分別為字串長度與去除字串頭尾控排,()為執行。
範例:
```javascript=
let a =' 123 ';
a.length// 5 空白也會算入長度
a.trim// '123'字串頭尾空白被去除
```