~~~
/*
* number數據類型
* =>正數、零、負數、小數
* =>NaN:not a number 不是一個有效數字,但是屬于number類型的
* =>Infinity:無窮大的值,也是number類型的
*/
console.log(1 == 1); //=>true
console.log(NaN == NaN); //=>false NaN和任何值都不相等(包括自己本身)
/* 想要驗證一下n是不是有效數字:isNaN 驗證一個值是否為非有效數字,如果是有效數字,則返回false,如果不是有效數字,則返回true */
let n = NaN;
if (n == NaN) { 這樣判斷是不行的
console.log('n不是有效數字!');
}
console.log(isNaN(1)); //=>false
console.log(isNaN(NaN)); //=>true
console.log(isNaN(Infinity)); //=>false
console.log(isNaN('AA')); //=>true
console.log(isNaN('12.5')); //=>false
console.log(isNaN('12.5px')); //=>true
console.log(isNaN([])); //=>false
console.log(isNaN([10])); //=>false
console.log(isNaN([10, 20])); //=>true
console.log(isNaN({})); //=>true
console.log(isNaN(null)); //=>false
console.log(isNaN(undefined)); //=>true
console.log(isNaN(Symb****ol(1))); //=>報錯
/*
* 在使用isNaN進行檢測的時候,如果檢測的值是非數字類型的值,則需要先把其轉換為數字類型,然后再進行檢測
* 把其它數據類型轉換為數字類型
* + Number([value]) 而isNaN在檢測的時候,使用的就是這種方式轉換為數字類型的
* + parseInt([value])
* + parseFloat([value])
*
* Number是JS內置的轉換方法,可以把其它數據類型“強制”轉換為數字類型
* + 把字符串轉換為數字:一但字符串中出現非有效數字字符,則結果為NaN,只有都是有效數字字符,才能轉換為具體的數字,空字符串會轉換為0
* + 把布爾轉換為數字:true轉換為1 false轉換為0
* + 把空轉換為數字:null轉換為0 undefined轉換為NaN
* + 不能把Symbol類型轉換為數字,否則會報錯
* + 函數轉換為數字:結果都是NaN
* + 對象轉換為數字:先把對象轉換為字符串,再把字符串轉為數字
* + 普通對象
* + 數組對象
* + 其余對象格式基本上都會變為數字NaN
*/
console.log(Number('12')); //=>12
console.log(Number('12.5')); //=>12.5
console.log(Number('12px')); //=>NaN
console.log(Number('12.5.0')); //=>NaN
console.log(Number(true)); //=>1
console.log(Number('true')); //=>NaN
console.log(Number(false)); //=>0
console.log(Number('false')); //=>NaN
console.log(Number(null)); //=>0
console.log(Number(undefined)); //=>NaN
console.log(Number(Symbol(13))); //=>Cannot convert a Symbol value to a number
console.log(Number(function func() {})); //=>NaN
普通對象
/*
* 1.先把obj轉化為字符串 "[object Object]"
* 2.把字符串轉換為數字 Number("[object Object]")
*/
let obj={x:100};
console.log(Number(obj)); //=>NaN
/*
* 1.先把ARR轉換為字符串: "10"
* 2.在把"10"轉換為數字:10
*/
let arr = ["10"];
console.log(Number(arr)); //=>10
/*
* 1.先把ARR轉換為字符串: "10,20",注意逗號
* 2.在把"10,20"轉換為數字:NaN
*/
arr = ["10", "20"];
console.log(Number(arr)); //=>NaN
console.log(Number([])); //=> []->'' Number('')->0
console.log(Number(['AA'])); //=> ['AA']->'AA' Number('AA')->NaN
~~~
1.

2.

3.

- 0001.開課說明
- 0002.ECMAScript的發展歷程
- 0003.WEB2.0時代-服務器端渲染,前后端不分離
- 0004.WEB2.0時代-前后端分離模式
- 0005.大前端時代概述
- 0006.前端需要的技術棧和學習技巧
- 0007.瀏覽器
- 0008.JS的三部分組成
- 0009.JS中創建變量的6種形式
- 0010.JS中變量的命名規范
- 0011.JS中的數據類型分類
- 0012.JS中常用的幾種輸出方式
- 0013.number屬性類型詳細解讀1
- 0014.number數據類型詳細解讀2
- 0015.string數據類型詳細解讀1
- 0016.string數據類型詳細解讀2
- 0017.boolean數據類型詳細解讀
- 0018.object數據類型詳細解讀1
- 0019.object數據類型詳細解讀2
- 0020.談談學習
- 0021.數據類型檢測
- 0022.瀏覽器底層渲染機制(堆棧內存和數據類型區別)
- 0023.關于數據類型區別的面試題
- 0024.課后作業講解:數據類型轉換
- 0025.課后作業講解:堆棧內存處理
- 0026.課后作業講解:阿里的一道經典面試題
- 0027.JS中三種常用的判斷語句
- 0028.小實戰:開關燈特效
- 0029.FOR循環和FOR IN循環
- 0030.課后作業講解:關于循環判斷和數據轉化
- 0031.課后作業講解:關于DOM對象的深入理解
- 0032.關于元素集合的相關操作(奇偶行變色)
- 0033.課后作業講解:邏輯思維判斷題
- reset.min.css
- 0034.(復習)前四天內容的綜合復習梳理
- 0035.初窺函數:函數的作用、語法、形參
- 0036-0038.選項卡案例
- 0039.隔行變色案例:進一步強化自定義屬性編程思想
- 0040.其它作業題的講解(自定義屬性強化)
- 0041.函數創建和執行的堆棧運行機制
- 0042.函數中的形參和實參
- 0043.函數中的實參集合ARGUMENTS
- 0044.函數中的返回值RETURN
- 0045.箭頭函數和匿名函數
- 0046.兩個等于比較時候的數據類型轉換規則
- 0047.數組的基礎結構和常規操作
- 0048.數組常用方法:增刪改的五個方法
- 0049.數組常用方法:查詢、拼接、轉換為字符串
- 0050.數組常用方法:檢測是否包含、排序和迭代
- 0051.數組去重:雙FOR循環(數組塌陷和SPLICE刪除優化)
- 0052.數組去重:對象鍵值對方式(ES6中SET)
- 0053.Math數學函數對象中常用的方法
- 0054.String字符串中常用的方法
- 0055.實戰案例:時間字符串格式化
- 0056.實戰案例:queryURLParams1
- 0057.實戰案例:queryURLParams2
- 0058.實戰案例:獲取四位不重復的驗證碼
- 0059.階段作業題講解1(基礎知識)
- 0060.階段作業題講解2(實戰案例)
- 0061-0062.DOM操作中相關知識的復習
- 0063.DOM中的節點操作1
- 0064.DOM中的節點操作2
- utils
- 65.關于DOM的增刪改