Number数字类型
包含 :常规数字,NaN
NaN
not a number :不是一个数,但是它属于数字类型
isNaN
检测一个值是否为非有效数字,如果不是有效数字则返回 TRUE ,反之是有效数字返回FALSE
在使用isNaN 进行检测的时候,首先会验证检测的值是否为数字类型,如果不是,先基于 Number() 这个方法,
把值转换为数字类型,然后在检测。
使用Number() 方法转换数字的规则如下:
1 如果是Boolean 值 ,true 转换为 1 ,false 转换为 0
2 如果是数字,只是简单的传人和 返回。
3 如果是 Null 值,转化为 0.
4 如果是 undefined 转换为 NaN
5 如果是字符串,遵循以下规则:
1 如果字符串中只包含数字,则将其装换为十进制数值。
2 如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值.
3 如果字符串中包含有效的十六进制格式,例如“0xf”z则将其转换为相同大小的十进制整数值
4 如果字符串是空的。则将其转化为 0
5 如果字符串中包含除上述格式之外的字符,则将其装换为NaN
6 如果是对象,则调用对象的 valueof() 方法,然后依照前面的规则转换返回的值,如果装换的
结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。
string 字符串类型
所有用单引号,双引号,反引号,(撇 ES6模版字符串)包起来的都是字符串
把其他类型转为字符串类型
如果装换的值有 toString()方法,则调用 方法,并返回响应的结果
如果值是 null 则返回 “null”
如果值是 undefined 则返回 “undefined”
boolean 布尔数据类型
只有两个值。true / false;
把其他类型的值转换为 布尔类型
只有。0 NaN ‘’ null undefined 这五个值,转换为 False ,其余都转换为 true (而且没有任何的特殊情况)
null / undefined
null 和 undefined 都代表的是没有
null :意料之中的(一般都是开始 不知道值,我们首先手动设置为null 后期在给予赋值操作)
undefined : 意料之外,
object 对象数据类型--普通对象
任何一个对象都是由零到多组键值对(属性名:属性值)组成的。(并且属性名不能重复)
数组是特殊的对象数据类型
浏览器 想要执行 js 代码。需要准备的环境:
1 从电脑内存中分配出一一个内存,用来执行代码 这块内存称为 栈内存(stack)
2 分配一个主线程用来自上而下的执行js 代码
js创建简单基本类型变量的过程。
1 创建一个变量 a ,将 a 放到 当前栈内存变量存储区域中
2 创建一个值 12将这个值存储在当前内存值区域中(这是简单的基本类型是这样存储的)
3 = 号为赋值,其实赋值是让变量和值相互关联的过程
js 创建引用类型变量的过程
1 在内存中分配出一块新内存,用来存储引用类型值(堆内存==> heap )==>内村有一个16进制的地址。
2 把对象中的键值对(属性名:属性值)依次存储到堆内存中,
3 把堆内存地址和变量关联起来。
基本数据类型与引用数据类型的区别
基本类型:按值操作,所以也叫值类型。
引用类型:操作的是堆内存的地址,按引用的地址操作的。
练习题 :
let n = [10,20]
let m = n;
let x = m;
m[0] = 100;
x = [30,40]
x[0] = 200;
m = x;
m[1] = 300;
m[2] = 400;
console.log(n,m,x);
结果为:n= [100,20,400]
m=[200,300]
x=[200,300]