---
# System prepended metadata

title: 練習 - 型別與宣告
tags: [JS 直播班 - 每日練習]

---

---
title: 練習 - 型別與宣告
tags: JS 直播班 - 每日練習
---
練習 - 型別與宣告
====

問題一
---
以下變數 a, b, c, d, e, f 它們的值、型別各自為何? (請先想想看，不要用 console.log 檢查)

```javascript=
let a = "10" + "10";
// 1010, string
// 字串與字串相加，型別為字串

let b = "10" * "10";
// 100, number
// 字串無法相乘，自動轉型成number後相乘

let c = 10 + "10";
// 1010, string
// 數字與字串相加，型別為字串

let d = 10 * "10";
// 100, number
// number與字串無法相乘，自動轉型成number後相乘


let e = 10 - "2";
// 8, number
// number與字串無法相減，自動轉型成number後相減

let f = "10" - "2";
// 8, number
// 字串無法相減，自動轉型成number後相減
```

問題二
---
請問以下題項哪些是有問題的，並說明為什麼。

```javascript=
// 1
let myName = "jay";

// 2
var _state = true;

// 3
let true = true;
// 變數無法用保留字true命名

// 4
const 520Pretty = 520;
// 變數無法用數字開頭命名

// 5
const appleNum = 10;
appleNum = 2;
// const變數宣告後，無法重新賦予值

// 6
var ming ='小明';
var ming = '小民';
// var變數可重覆宣告


// 7
const ming = '小明'; 
const ming = '小民';
// const變數在同一作用域，無法重複宣告

// 8
let ming = '小明';
let ming = '小民';
// let變數在同一作用域，無法重複宣告

// 9
let ming = '小明';
ming = '小民';


// 10
let $open = "芝麻開門';
// 字串前後單引號或雙引號要相同
```
