博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型模式故事链(3)--JS的数据类型、以及区别、区分、转化
阅读量:6963 次
发布时间:2019-06-27

本文共 2267 字,大约阅读时间需要 7 分钟。

上一章--原型链讲解:传送门:

在上一章讲解原型链时提到了:所有的引用类型都有一个_proto_属性,称之为隐式原型。

那么引用类型是什么鬼?


尽量简单的讲解一下javascript中的数据类型:

在JS中有两大数据类型:
1.基本数据类型,也称为值类型
2.复杂数据类型,也成为引用类型

值类型:Number、String、Boolean、Null、Undefined

引用类型:Object、Array、Function

所以JS一共有8种数据类型

那么为什么要区分为值类型和引用类型呢?它们有什么不同之处

客官且看:
值类型是值的“复制”,以值类型中的Number类型为例。

var num = 100;    var num2 = num;        num = 200;    console.log(num2);//100    console.log(num);//200

在上述代码中,第2行就是把num的值100复制给num2,num2的值就为100了。在第3行num的值再变化为200时与num2已经没关系了。

引用类型是值“传递”,以引用类型中的Object类型为例。

//例1:    var obj = {a:100};    var obj2 = obj;    obj.a = 200;    console.log(obj2.a);//{a:200}    console.log(obj.a);//{a:200}    //例2:    var arr = [1,2];    var arr2 = arr;    arr2[0] = 3;    console.log(arr);//[3,2]    console.log(arr2);//[3,2]

在上述代码中,例1第2行代码中,把obj的值传递给obj2,在这里obj2只是obj的一个别名!

什么意思呢?就是说你叫做小明,你妈妈叫你狗蛋,狗蛋就是你的别名。所以不论你妈妈是喊,狗蛋回家吃饭了,还是喊小明回家吃饭了,其实喊的都是你。所有obj和obj2其实是指向同一内存地址的,他们就是同一个东西,当其中一个变了,另一个当然也随着变化。

从例1和例2中可以看出obj变化了会对obj2影响,arr2变化了arr也变化了。当然的嘛!狗蛋买了件新衣服,小明当然就有这件新衣服了。。。


如何判断一个变量是什么数据类型呢?

typeof()可以查看值类型所有数据类型,能区分出引用类型的Function,但是对于引用类型的Object和Array酒不能区分,都会显示为Object.
null是个特殊的东西,会显示为object,有兴趣的可以去看看,这里不多说。

那怎么区分出数组呢?答案是:instanceof

如:a instanceof Array 只有当a是数组时才会是true.

var a = 5;    var b = 'abc';    var c = null;    var d = undefined;    console.log(typeof(a))//number    console.log(typeof(b))//string    console.log(typeof(c))//object    console.log(typeof(d))//undefined    var obj = {a:1}    var arr = [1,2]    var fn = function(){        console.log('hello');    }    console.log(typeof(obj))//object    console.log(typeof(arr))//object    console.log(typeof(fn))//function        console.log(arr instanceof Object)//true    console.log(obj instanceof Object)//true    console.log(arr instanceof Array)//true    console.log(obj instanceof Array)//false    console.log(arr instanceof Number)//false

数据类型转换:

数据类型的转换有两种:隐式转换、强制转换
隐式转换:隐式转换通常发生在运算中。

var num = 10;    var obj = '20'    var res = num + obj;//10+'20'    console.log(res) //'1020'    var obj2 = '11';    var num2 = 5;    var res2 = obj2 > num2;//'11'>5    console.log(res2)//true

强制转换:一般用String()、Number()、Boolean()转化(可能会有失精度)

var num = 123;console.log(typeof(num))//numberconsole.log(typeof (String(num)))//string

例行总结:

数据类型是JS中很重要的一部分,特别是值类型和引用类型的赋值区别。一定要理解好~

下一回:变量提升与函数声明

转载地址:http://rawsl.baihongyu.com/

你可能感兴趣的文章
PPT模板网站
查看>>
InSave 隐私政策
查看>>
[Linux command]批处理注释
查看>>
jquery 选择器
查看>>
虚基类的简单应用
查看>>
1.4变量和数据类型进阶
查看>>
数据块对齐
查看>>
Http 请求方式:Get 与Post
查看>>
delphi 操作文件时间的函数
查看>>
nodjs 生产环境及升级问题
查看>>
JS判断客户端是否是iOS或者Android手机移动端
查看>>
Swing控件
查看>>
快速JavaEE轻量级框架&公用业务模块 设计&实现 6.1 - DAO测试
查看>>
文本特征提取算法实现
查看>>
这个qq的域名【c.gj.qq.com】是做什么的?chrome浏览器,访问什么网站都有这个请求...
查看>>
ubuntu14.04+Django1.7.1+nginx1.6+uwsgi2.0环境搭建
查看>>
C++中的类型转换
查看>>
大数据引发的变革与企业面临的挑战
查看>>
LRSlidingTableViewCell
查看>>
FlipCardNavigationView
查看>>