js 数据类型
js 中的数据类型
基本数据类型(7)
number
-
infinity 无穷大
-
NaN 不是一个有效数字
-
NaN !=NaN NaN和谁都不相等
-
isNaN检测是否不是一个有效数字
-
强转换 Number(【value】)
-
一些隐式转换都是基于Number完成的 isNaN(),数字运算,字符串==数字
-
弱转换 parseInt() parseFloat()
-
【】 !=true 都转换成数字,Number(【】)0 Number(true)1
-
== 比较规律:对象=字符串,对象转化为字符串, null=undefined 但是和其他值不相等,NaN和谁都不想等 剩下两边不同都是转换为数字
-
.[]==false都转换为数字, 0]先转换为"(toString)在转换为数0(Number)false变为数字0
-
![]==false 运算符优先级![]
再算比较 ![D] 转换为布尔值进行取反(把
其它类型转换为布尔类型遵循的规律:只有0/NaN/null/undefined/"五个值是false,其余的都是true ) => false false == false true -
大括号在运算符前面:1.在没有使用小括号处理优先级的情况下不认为是数学运算,加小括号才算2.出现在运算符的后面认为是数学运算
res为NaN,NaN为number数据类型
parseInt处理值是字符串,从字符串左侧开始查找有效数字字符,遇到非有效数字字符则停止查找。如果不是字符串需要先转换为字符串然后在开始查找接口
Number直接调用浏览器最底层的数据类型。其中 true 为 1,false 为0 ,null 为0 underdefined 为NaN,字符串中必须保证都是有效数字才会转换为数字,否则都是NaN
0 NaN null undefined 空字符串转换为布尔值是假
字符串+任何值都是字符串,({})。toString()为【object,Object】
string
boolean
null
undefined
symbol
bigint
引用数据类型(2)
object
function
数据类型检测
typeof
-
检测数据类型的逻辑运算符 typeof(val) 返回当前值的数据类型 typeof(null) 为object
-
所有值在内存中都是按照按01存储
返回结果都是字符串,局限性:null的结果是object,而且不能细分对象类型
instance
检测是否为某个类的实例
constructor
检测构造函数
Object.prototype.toString.call
检测数据类型
闭包
js之所以能够在浏览器中运行,是因为浏览器给js提了执行的环境=》栈内存
第一题12 第二个 13 第三个12
浏览器端中window指向的是全局变量
栈内存:提供代码执行环境
堆内存:存放东西(存档的是属性方法)
执行上下文:每个代码的上下文执行环境
引用值比较复杂,需要创建一个堆内存
下面程序结果:报错
在JS中对象的属性名是什么格式的?
普通对象的属性名只能是“字符串”(普通对象的属性名可以是基本数据类型值)
Map这种数据结构支持对象作为属性名
但是普通对象的属性名不能是对象,如果是对象,需要转换为字符串存储
输出:培训
Symbol是唯一的
输出:珠峰
({n:‘1’}.toString() [object,object]
输出:培训
普通对象toString是调取Object.prototype.toString是用来检测数据类型的