JavaScript知识点总结---------003(变量类型)

在JavaScript中定义一个变量很容易,只需要var 变量名=变量值;这个其中的=是赋值操作,左边的是变量名,右边的是存储的值,js中的变量是松散类型的。

1.JavaScript有哪些数据类型呢?

基本数据类型:由简单的结构组成的(5个)

数字(number),字符串(string)(双引号或者单引号包起来的),布尔(boolean),null     undefined

引用数据类型:结构相对复杂一些的(2大类)

对象数据类型object ,数组属于对象数据类型,正则也属于

函数类型(function)

2.数据类型的详解

㈠数字(number)涉及的知识点

包号有正数,负数,小数,0,NaN。    NaN代表的不是一个有效数字,但是它属于数字类型的

在使用数字中,NaN==NaN(是不相等的)

isNaN();检测一个值不是有效数字的命题是否成立,是有效数字返回false,不是有效数字返回true

如果检测的值不是number类型的,浏览器会默认的把它转换成number类型,然后在判断是否是有效数字

console.log(isNaN(12));    false

console.log(isNaN("hello world"));  true

console.log(isNaN("123"));  false(先把“123”转换为123,使用了Number,强制转换,前提是字符中都是数字

还有非强制数据类型转换:parseInt 和parseFloat

parseInt :从左往右,一个个字符去查找。遇到非数字,停止。把是数字的转换为有效数字

parseFloat:从左往右,一个个字符去查找。遇到非数字,停止。它可以多识别一个小数点。

㈡布尔类型(boolean)

包括true和false。这个里面涉及!和!!的使用

!:一个叹号取反。首先将值转化为布尔类型的,然后取反。

!! :将其他数据类型转换为布尔类型,相当于Boolean()

console.log(!2); false  先把2转换为boolean,然后取反

数据转换的规则:

1.如果只有一个值,判断这个值是真还是假,遵循:只有0 nan ""(空字符串)   null   undfind这五个是假,其余的都是真      ![ ] 是假

2.如果是两个值比较是否相等,遵循:首先会进行默认的数据类型转换

val1==val2 比较的规则,如果不是同一个数据类型

①对象==对象   永远不相等[ ]==[ ] false    {}=={}false

②对象==字符串  先将对象转换为字符串(调用toString的方法),然后进行比较

[ ]==" "  true     [ ]转换为" "

{ }转换为字符串为" [object object]"

③对象==布尔类型

对象先转换为字符串(toString),然后字符串再转化为数字(Number    比如" "为0),

布尔也转换为数字(true为1,false为0)。然后两个数字比较。

[ ] ==false ; true

④对象和数字:对象先转换为字符串,然后字符串在转化为数字。然后比较

[ ]==1;false

⑤数字==布尔

布尔转换为数字,然后进行比较2==true;false

⑥数字==字符串

字符串转换为数字

⑦字符串==布尔

都转为数字,然后比较

⑧null ==undefined结果为true

⑨null或者undefined和任何其他类型的都不相等

3.除了==是比较,===也是比较(绝对比较

val1===val2  如果数据类型不一样,绝对不相等

至于字符串和null,undefined,上面也捎带着介绍了。

㈢ object类型 

由属性名和属性值组成,多组键值对组成

属性名和属性值是用来描述这个对象的特征的

创建对象:

var obj ={name:"zhangsan",age:40}    //字面量创建方式

也可以这样:

var  obj=new object();//实例创建的方式

给一个对象增加一组属性名和属性值

obj.name ="zhangsan"

obj["age"]=40

获取属性名和属性值

console.log(obj["name"]);

console.log(obj.name);

删除属性名和属性值

obj.age=null;  //假删除

delete obj.age// 真删除

对象数据类型中,包号几个小的数据类型:

对象类(Object),数组类(Array),正则类(RegExp),时间类(Date),函数类

var obj={};

var ary=[]

var  reg =/^$/

js中对象,类,实例的区别:

对象是泛指,js中万物皆对象

类是对对象的具体的细分

实例是类中的一个具体的事物

我举个例子:

自然界中万物皆对象,所有的东西分为人类,植物类,动物类,物体类。

每一个人都是人类中具体的实例。

上面我主要就是我讲了变量和数据类型。

那么基本数据类型和引用数据类型的本质区别是什么呢?

基本数据类型操作的是:值。

引用数据类型操作的是:新空间的引用地址。

我举个例子:

基本数据类型没有变,引用数据类型改变了。为什么引用数据类型改变了呢?

因为我们定义对象的时候,var obj1 ={name:"zhangsan"},发现为引用数据类型。在内存开辟了一个空间

给大家一张图:


区别:基本数据类型是把值直接给变量了,接下来操作的过程中,直接拿着个值操作,虽然两个变量是一样的,但是相互不影响,其中一个改变,另外一个没有影响。所以num1是不变的。

引用数据类型:1.定义一个变量

2.开辟一个新的空间,然后把属性名和属性值保存在这个空间,并给一个空间地址

3.把空间的地址给了这个变量,变量并没有存储这个数值,而是存储的是对这个空间引用地址

4.接下来我们把这个地址,给了另一个变量,另一个变量存储的也是这个地址,此时两个变量操作的是同一个空间

5.其中一个改变了空间的内容,另一个也跟着改变了。

JavaScript中检测数据类型的方式?

四种:

typeof  运算符

instanceof运算符

constructor

Object.prototype.toString.call()


我们经常用到的是typeof来检测数据类型,其他的大家可以去查一下用法。

    typeof    要检查的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值