Javascript数据类型详解

Javascript常见的数据类型分为两种,基本数据类型和引用数据类型。
基本数据类型包括(Number,String,Boolean,Undefined,Null),
而引用数据类型(复杂数据类型)为(Object)
五种基本数据类型

typeof 操作符
由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.

typeof 123   //Number

typeof ‘abc’  //String

typeof true //Boolean

typeof undefined //Undefined

typeof null //Object

typeof { } //Object

typeof [ ] //Object

typeof console.log() //Function

null类型进行typeof操作符后,结果是object,原因在于,null类型被当做一个空对象引用。
当变量声明(初始化)后,未赋值时,输出变量,将会显示undefined。

1.Number类型
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。
字符串转换:可以用parseInt()或者parseFloat()方法将String类型的数值转换为Number类型的数值。(parseInt()方法可用于数据取整)
数值型字符串可以通过减一运算将数值型字符串转换为Number类型。
NaN:非数字类型。特点:① 涉及到的 任何关于NaN的操作,都会返回NaN ② NaN不等于自身。

2.String类型
字符串有length属性。
字符串转换:转型函数String(),适用于任何数据类型(null,undefined 转换后为null和undefined);
toString()方法(null,defined没有toString()方法;也可以通过给数据加上空字符串将其他数据类型转换为String类型。

3.Boolean类型
该类型只有两个值,true和false
数据转换:字符串类型的数据转换为Boolean类型的数据时,空字符串可以转换为false,非空字符串则可以转换为true;而Number类型的数据转换为Boolean的数据时,0可以转换为false,除0以外所有的数都可以转换为true;需要特别注意的是:Boolean类型的数据转换为Number类型的数据时,false可以转换为0,而true只能转换为1。

4.Undefined类型
只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。

5.Null类型
null类型被看做空对象指针,前文说到null类型也是空的对象引用。

6.Object类型
js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。
(因为初学Javascript,Undefined类型,Null类型,Object类型没有过多的了解,这里就不多做介绍了,以后如果有机会再给补上)

三大引用类型
1.Object类型
我们看到的大多数类型值都是Object类型的实例,创建Object实例的方式有两种。

第一种是使用new操作符后跟Object构造函数,如下所示
var person = new Object();
person.name = “Micheal”;
person.age = 24;
第二种方式是使用对象字面量表示法,如下所示
var person = {
  name : “Micheal”,
  age : 24
};

2.Array类型
数组的每一项可以用来保存任何类型的数据,也就是说,可以用数组的第一个位置来保存字符串,第二个位置保存数值,第三个位置保存对象…另外,数组的大小是可以动态调整的。
创建数组的基本方式有两种
第一种是使用Array构造函数,如下所示
var colors = new Array(“red”,“blue”,“yellow”);
第二种是使用数组字面量表示法,如下所示
var colors = [“red”,“blue”,“yellow”];

3 Function类型
每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。函数通常是使用函数声明语法定义的,如下所示
function sum(num1,num2){
  return num1 + num2;
};
这和使用函数表达式定义函数的方式相差无几。
var sun = function (){
  return sum1 + sum2;
};
也就是说,js按照存储方式分为值类型和引用类型。那么他们的计算有什么区别呢?
题目1: var a = 100;
    var b = a;
    a = 200;
    console.log (b);
题目2: var a = {age : 20};
    var b = a;
    b.age = 21;
    console.log (a.age);
题目1的答案是 100,题目2的答案是21,

题目1是简单的值类型,在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上。

此时,a中保存的值为 100 ,当使用 a 来初始化 b 时,b 中保存的值也为100,但b中的100与a中的是完全独立的,该值只是a中的值的一个副本,此后,
这两个变量可以参加任何操作而相互不受影响。也就是说基本类型在赋值操作后,两个变量是相互不受影响的。

题目2是引用类型,当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。

这时保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,
两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响。

因此,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。

本人正在学习和摸索中,如有错误,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值