# JavaScript - 字串型別與轉換 ###### tags: `javascript` ## 宣告變數與印出值 ```JavaScript= let a = 1; let b = 2; console.log(a); console.log(b); console.log(a, b); alert(a); ``` ## 宣告字串 ```javascript= let hello = "你好嗎?"; console.log(hello); let 去玩 = "let's go!"; console.log(去玩); ``` ## 字串相加 ```javascript= let friendName = 'Joey'; //string let content = 'How do you doin?'; let total = friendName + ' ' + content; console.log(total); let age = 25; //number let ageString = "25"; //string ``` ## 透過 typeof 瞭解當前變數型別 ```javascript= console.log(typeof friendName); //string console.log(typeof age); //number console.log(typeof ageString); //string ``` ## 數字與字串相加 ```javascript= let myName = 'Ross'; //string let myAge = 28; //number console.log(typeof myName); console.log(typeof myAge); // JavaScript 有些情況會貼心自動轉型 let myTotal = myName + myAge; console.log(typeof myTotal); //string console.log("Hi 我是 " + myName + ",我今年 " + myAge + " 歲"); ``` ## NaN 非數字(但型別屬number) ```javascript= let herName = 'Racheal'; //string let herAge = 26; //number let herTotal = herName * herAge; console.log(herTotal); //NaN console.log(typeof herTotal); //number ``` ## 字串轉成數字 parseInt() **parseInt()** ```javascript= // 字串 // let weight = '50'; // 字串轉成數字 let weight = parseInt('50'); console.log(typeof weight); //number // 字串內容無法傳成數字 => NaN let hi = parseInt('hello'); console.log(hi); //NaN console.log(typeof hi); //number ``` ## 字元長度查詢 .length **.length** ```javascript= let car = 'Porsche'; car.length; //7 let z = "你好嗎"; z.length; //3 ``` ## 取出內容"濾掉空白字元" .trim() **.trim()** ```javascript= let myCar = ' KIA '; myCar.length; //5 myCar; //' KIA ' myCar.trim(); //'KIA' let email = " aaa@gmail.com"; email; //' aaa@gmail.com' email.trim(); //'aaa@gmail.com' ``` ## 變數記憶體指向,儲存值需「賦予」= ```javascript= // 變數記憶體指向 let myEmail = ' apple@gmail.com'; console.log(myEmail); // ' apple@gmail.com' myEmail.length; console.log(myEmail.length); // 17 // 濾掉空白字元 console.log(myEmail.trim()); // 'apple@gmail.com' console.log(myEmail); // ' apple@gmail.com' // 「賦予」新的變數以儲存處理後的結果 let updateEmail = myEmail.trim(); console.log(myEmail); // ' apple@gmail.com' console.log(updateEmail); // 'apple@gmail.com' console.log(updateEmail.length); // 15 // 儲存值需「賦予」值 // 宣告變數 let emailLength = myEmail.length; console.log(emailLength); // 17 ``` ## ES6新語法 - 樣版字面值(Template literals) ```javascript= let myName = 'Ross'; let myAge = 28; // let text = "您好,我是" + myName + "我今年" + myAge + "歲"; let text = `您好,我是${myName},我今年${myAge}歲`; // ES6新語法 console.log(text); // 您好,我是Ross,我今年28歲 ``` ## 原始型別: 字串 / 數字 / 布林 / undefined / null ### boolean 布林值 - true / false ```javascript= let isVip = true; console.log(isVip); //true console.log(typeof isVip); //boolean console.log(1 > 2); ``` ### undefined 尚未被賦值 ```javascript= let y; // y = 1; console.log(y); //undefined console.log(typeof y); //undefined ``` ### null 有被賦予值,是告知為空值 * 原本有值,被清掉 => 空值 (釋放記憶體空間) ```javascript= let cart1 = 1; let cart2 = 1234; cart2 = null; console.log(cart1, cart2); // 1 null ``` ## 型別轉換 ### 字串轉成數字型別的方法 parseInt() **parseInt()** ```javascript= let mac = "1"; mac = parseInt(mac); // 轉型別 console.log(mac); console.log(mac + 1); ``` ### 轉型別內容非數字 => 轉型別失敗 => NaN ```javascript= mac = parseInt("小明"); // 非數字轉型別 console.log(mac); // NaN console.log(mac + 1); // NaN ``` * 從文字欄位取出的內容都是字串,因此如果資料需進行數字運算,就須先轉換型別! ### 數字轉成字串型別的方法 .toString() **.toString()** ```javascript= let phone = 123; phone = phone.toString(); console.log(phone); console.log(phone + 1); ``` * 字串相加的使用情境:大樂透號碼、電話區碼"07"+"23456789" ## 【觀念整理】字串相加與相乘 >當使用加法運算子("+")時,只要有一個字串出現,就會將其餘的部分一併轉為"字串"再做運算 所以 "1" + "1" 會等於 "11",也就是兩個字串會合併 ```javascript= let a = "1" + "1"; '11' ``` >但相乘就不一樣,相乘是為了做"數學運算"使用的,所以它會先轉成"數字"再做相乘 ```javascript= let a = "1" * "1"; 1 ```