~~~
/*
* 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.
![](https://img.kancloud.cn/bc/7b/bc7bd2d4478c70b5d05c8785b1fd75e5_215x103.png)
2.
![](https://img.kancloud.cn/1c/2b/1c2be508e75fa114aabc91b02845a5a3_307x50.png)
3.
![](https://img.kancloud.cn/bb/43/bb43b7fcf631dde1f692f503ead07262_295x50.png)
- 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的增删改