001-JS中常用的数据类型

002-JS中常用的数据类型

1.数据值是一门编程语言进行生产的材料,js中的数据类型值包括基本数据类型、引用数据类型、函数
2.基于alert输出的结果是字符串;alert(1+1); 输出结果为字符串"2"

一、基本数据类型值(值类型)

1.1 数字number

  • NaN:not a number 但是它是数字类型的
  • isNaN:检测当前这个值是否不是有效数字,false代表的是有效数字,true代表不是有效数字
  • NaN的比较:NaN == NaN;结果为false,NaN和谁都不相等、包括和自己
  • 1.1.1 isNaN检测机制:
  • 1.首先验证当前要检测的值是否为数字类型,如果不是浏览器会把默认的值转换为数字类型;
  • a:其它基本类型值转换为数字:直接使用Number这个方法转换
  • b:把引用类型值转换为数字:先把引用值调取toString转换为字符串,然后再把字符串调取Number转换为数字
`其它基本类型值转换为数字`
 [字符串转数字]:
 规律:如果当前字符串中出现任意一个非有效数字,结果则为NaN
 Number('13'); //结果为13;
 Number('13px'); //结果为NaN
 Number(13.5); //结果为13.5
 
 [布尔转数字]Number(true); //结果为1
 Number(false); //结果为0
 
 [其它]Number(null); //结果为0
 Number(undefined); //结果为NaN
 
 [对象]
 ({}).toString() //结果为[object Object]->NaN
 
 [数组]
 [12,23].toString() //'12,23'->NaN 出现任何一个非有效数字结果都为NaN
 [12].toString() //'12'->12
 
 [空字符串] 
 Number('') //结果为0 
 [ ].toString() //结果为'' 空数组的toStrin后的结果为空字符串
 isNaN([]) //结果为false
  • 2.如果当前检测的值已经是数字类型,是有效数字就返回false,不是有效数字就返回true(数字类型中只有NaN不是有效数字,其余的都是有效数字)
语法:isNaN([value])
var num = 12;
isNaN(num);  //检测num变量存储的值是否为有效数字;false
isNaN('12'); //结果为false
isNaN('小明'); //结果为true
isNaN(true); //结果为false
isNaN(null); //结果为false
isNaN(undefined); //结果为true
isNaN({age:9}); //结果为true
isNaN([12,23]); //结果为true
isNaN([12]); //结果为false
isNaN(/^$/); //结果为true
isNaN(function () {}); //结果为true

1.1.2 parseInt/parseFloat(从字符串最左边开始查找有效数字字符)

等同于Number,也是将其它类型的值转换为数字类型,和Number的区别在于字符串转换分析上
Number:出现任意非有效数字字符,结果就为NaN
parseInt: 把一个字符串中的整数部分解析出来
parseFloat: 把一个字符串中的整数和小数(浮点数)解析出来
parseInt('width:13px') =>结果为NaN;从字符串最左边开始查找有效数字字符,并且转换为数字,但是第一个遇见非有效数字字符,就会立刻结束查找


1.2 字符串string

由单引号和双引号包裹起来的值都是字符串类的值


1.3 布尔boolean

只有两个值:true/false

把其它数据类型值转换为布尔类型的三种方法

  • Boolean
  • !
  • !!
[方法一]
Boolean(1) =>true

[方法二]
!'小明' =>先把其它类型值转换为布尔类型值,然后再取反 =>false

[方法三]
!!null =>两次取反,等价于没取反;也就只剩下转换为布尔类型了,项目中经常用这个方法,主要是比较简单

规律总结:在js中只有"0/NaN/空字符串/null/undefined"这五个值转换为布尔类型都为false,其余都转换true


1.4 null && undefined

null和undefined都代表空

  • null:空对象指针
  • undefined:未定义

null:一般都是意料之中的没有(一般都是人为手动赋值为null,后面程序中我们会再次给它赋值)
undefined:一般都不是人为手动控制的,大部分都是浏览器自主为空的(后面可以赋值,也可以不赋值)

[null]
var num = null//null是手动赋值,预示着后面我们会把num变量的值进行修改
...
num = 12[undefined]
var num; //此时变量的值浏览器分配的就是undefined,后面可以赋值,也可以不用赋值

二、引用数据类型值
  • 对象object

普通对象: 由大括号包裹起来的;由零到多组属性名和属性值(键值对)组成
一般来说对象的属性名都是字符串的;属性值类型可以是多种多样的
js中属性名是不允许重复的,是唯一的
一个对象的属性名不仅仅可以是字符串格式的,还可以是数字格式的
如果当我们存储的属性名不是字符串也不是数字的时候,浏览器会把这个值转换为字符串(toString),然后再进行存储

在获取属性值的时候,如果当前对象有这个属性名,则可以正常的获取到属性值(哪怕是null),如果当前对象没有这个属性名,则获取到的结果是undefined。
属性是用来描述当前对象特征的,属性名是当前对象具备的这个特征;属性值是对这个特征的描述(专业术语,属性名为[key],属性值[vaule];一组属性名和属性值叫做一组键值对)

  • 普通对象
  • 数组对象
  • 正则对象
  • 日期对象
  • 数学对象

对象中的方法:获取、增和改、删除(真删除和假删除)

var obj = {
	name:'小明',
	age:18
};
[获取]
语法:对象.属性 / 对象[属性]
obj.name
obj['name']
obj["name"]
[/]
obj.name = '小李'//原有对象中存在name属性,此处为修改属性值
obj.sex = '女'; //原有对象中不存在sex属性,此处为增加一个属性sex在
[]
彻底删除
delete obj['age']; //对象中不存在这个属性了,彻底没了
假删除:并没有移除这个属性,这是让当前属性为空
obj.sex = null; //sex这个属性还有,只是值为null了
[引用数据类型-普通对象]
var obj = {name:'良雨', age:18}; // 普通的对象:由大括号包裹起来,里面包含对组属性名和属性值(包含多组键值对) {}空对象
[引用数据类型-数组对象]
var ary = [12,23,34]; // 中括号包裹起来,包含零到多项内容;这种是数组对象 []空数组
[引用数据类型-正则对象]
var reg = /-?(\d|([1-9]\d+))(\.\d+)?\g; // 验证是否为有效数字;由元字符组成一个完整的正则
[引用数据类型-函数]

数组也是对象(也是由键值对组成的)

var ary = [12,23]; //属性值分别是12,23;属性名是数组的索引(数字类型)

  • 函数function
function fn () {

}
三、ES6中新增加的特殊类型:symbol
[symbol]
var a = Symbol('小明');
var b = Symbol('小明');
a == b; //结果为false
ES6新语法:const c = Symbol('你好'); //const创建常量,不可更改,symbol也是唯一的,不能被修改的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值