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

    xiaoxiao2021-03-25  8

    在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    要检查的值

    转载请注明原文地址: https://ju.6miu.com/read-156047.html

    最新回复(0)