### 變量類型轉換
- 數據類型轉換
- 例子:計算兩個文本框的和
- 顯式類型轉換(強制類型轉換)
- `parseInt()` 去除小數、`parseFloat() ` 保留小數:從左至右提取數字,遇到不是數字跳出
- `NaN ` 的意義和檢測:`Not a Number`
- NaN: NaN 和任何值都不相等,包括它自己
- 使用 ` isNaN()` 檢測是否是全是數字
- ```
Number() 轉換數值,String() 轉換字符串,Boolean() 轉換布爾值
```
- 隱式類型的轉換
- `== `:先轉換類型 再比較
對比 `=== `:全等于,不轉換類型直接比較
- ` - `:數字相減
對比 ` +`:字符串連接、數字相加
- ```js
5 + null // 返回 5 因為 null 被轉換為 0
"5" + null // 返回 "5null" 因為 null 被轉換為 "null"
"5" + 2 // 返回 52 因為 2 被轉換為 "2"
"5" - 2 // 返回 3 因為 "5" 被轉換為 5
"5" * "2" // 返回 10 因為 "5" 和 "2" 被轉換為 5 和 2
```
- 更多可用于將數值轉換為字符串的方法:
| 方法 | 描述 |
| :-------------- | :----------------------------------------------------- |
| toExponential() | 返回字符串,對數字進行舍入,并使用指數計數法來寫。 |
| toFixed() | 返回字符串,對數字進行舍入,并使用指定位數的小數來寫。 |
| toPrecision() | 返回字符串,把數字寫為指定的長度。 |
- 代碼:
```HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>變量類型轉換</title>
<style></style>
<script>
window.onload = function () {
// 封裝 getElementById 函數
function get(id) {
return document.getElementById(id);
}
let t1 = get('t1');
let t2 = get('t2');
let b1 = get('b1');
let s1 = get('s1');
let s2 = get('s2');
b1.onclick = function (){
if (isNaN(t1.value)) {
s1.innerHTML = '<br>' + t1.value + '不是數字';
} else if (isNaN(t2.value)) {
s1.innerHTML = '<br>' + t2.value + '不是數字';
} else {
console.log('t1:',typeof t1.value, 't2',typeof t2.value);
let val = parseInt(t1.value) + parseInt(t2.value);
let val2 = parseFloat(t1.value) + parseFloat(t2.value);
s1.innerHTML = '<br>int結果:' + val+ '<br>float結果:' + val2;
console.log(typeof val);
// == 和 - 隱式轉換
let a = t1.value ;
let b = t2.value;
if (a == b) {
s2.innerHTML = 'a == b' + '<br>a - b = ' + (a - b) + '<br>a + b = ' + (a + b);
} else if (a === b) {
s2.innerHTML = 'a === b!';
} else {
s2.innerHTML = 'a不等于b!' + '<br>a - b = ' + (a - b) + '<br>a + b = ' + (a + b);
}
}
}
}
</script>
</head>
<body>
<input type="text" name="" id="t1">
<input type="text" name="" id="t2">
<input type="button" name="" id="b1" value="計算">
<div>
<span id="s1"></span>
</div>
<div>
<span id="s2"></span>
</div>
</body>
</html>
```
- 前言
- 初探 JavaScript 魅力
- JavsScript 是什么
- 第一個 JS 特效:鼠標提示框
- 網頁換膚和 if 判斷
- 函數傳參
- 循環 while 和 for
- 導航欄選項卡
- JS 簡易日歷
- JavaScript 基礎
- JavaScript 組成
- 變量類型
- 變量類型轉換
- 變量的作用域和閉包
- 命名規范
- 運算符
- 程序流程控制
- JSON
- 深入 JavaScript
- 函數返回值
- 函數傳參與行間樣式
- 數組基礎操作
- 定時器的使用
- 定時器的作用
- 數碼時鐘
- Date 對象其它方法
- 延時提示框
- 無縫滾動
- DOM基礎應用
- DOM 基礎
- DOM 節點
- 操作元素屬性
- DOM 元素靈活查找
- DOM 操作應用
- 創建、插入和刪除元素
- 文檔碎片
- DOM操作應用高級
- 表格標簽
- 表格應用
- 表單應用
- JS 運動基礎
- 運動基礎
- 運動框架及應用
- 緩沖運動
- 運動的停止條件
- JS 運動應用
- 多物體運動框架
- 任意值運動框架
- 仿 Flash 圖片展示
- JS 運動中級
- 鏈式運動框架
- 完美運動框架
- 運動框架總結
- 運動框架應用
- JS事件基礎
- Event 對象和事件
- 鼠標事件
- 鍵盤事件
- JS 事件中級
- 默認事件
- 拖拽
- JS 事件高級應用
- 事件綁定
- 高級拖拽
- 自定義滾動條
- Ajax 基礎
- Ajax 是什么
- 使用 Ajax
- Ajax 原理
- Ajax 中級
- 編寫 Ajax
- Ajax 數據
- JS 面對對象基礎
- 面對對象是什么
- JS 中的面對對象
- 第一個面對對象的程序
- 工廠方式
- 原型:Prototype
- 面對對象編程方式
- JS 面對對象實例
- 面對對象的選項卡
- JS 面對對象高級
- Json 方式的面向對象
- 拖拽和繼承
- 使用繼承
- 系統對象
- BOM 應用
- BOM 基礎
- 尺寸及坐標
- 常用方法和事件
- COOKIE 基礎與應用
- 什么是 cookie
- 使用 cookie
- JS 中的正則表達式
- 正則表達式基礎
- 字符串與正則配合
- 字符串
- 量詞
- 常用正則例子
- JS Template 模板引擎
- 特性
- 語法
- 實例
- 表達式和運算符分類
- 主要表達式
- 左表達式
- 自增和自減
- 一元運算符
- 算術運算符
- 關系運算符
- 相等運算符
- 位移運算符
- 二進制位運算符
- 二元邏輯運算符
- 條件(三元)運算符
- 賦值運算符