JS的数据类型以及数据类型的判定

一.JS数据类型(8种)

        JS数据类型有八种,其实原本js数据类型有6种Number,String,Boolean,undefined,object,Null。想必这几种大家都耳熟能详了吧。但是!!重点来了,ES6中新增了一种Symbol。然后在谷歌67版本中还出现了一种bigint。所以一共是八种,接下来开始讲解每一种数据类型。

1.Number数值类型

        Number类型包含证书和浮点数(浮点数值必须包含一个小数点,并且小数点后面还要跟着数字)两种值,这里和Java不同昂,Java分int,double等,这里吧这些给统一了全都成为了Number类型。

        NaN:非数字类型,属于数值型基本数据

                需要注意的是:任何涉及到NaN计算的操作返回都是NaN,并且NaN很疯狂,连自己都不等于。(NaN!=NaN)

        Number():可以用于任何数据类型

        parseInt:提取整数数值

        paseFloat:提取浮点数值

2.String字符串类型

        字符串的单引号和双引号作用效果一样

        字符串具有length属性,可以取得字符串的长度

        字符串的值是不可变的,所以很多字符串的API不会改变原字符串的值

        字符串的转换:String():适用于任何数据类型(null->null undefined—>undefined)

        toString():null和undefined没有这个功能

        console.log(null.toString());报错

3.Boolean布尔类型

        只有两个值:true/flase

        值得注意的是:Boolean(undefined/null/0/NaN/'')的结果都为flase,而Boolean(非空对象包括空数组和空对象/非0/非空包括空格字符串)的结果为true

4.Null空指针对象类型

        如果定义一个对象,初始化可以为null,在if语句中默认转化为flase,然后在数值计算中默认为0

5.Undefined

        声明了变量但是没有初始化,默认为undefined,在if语句中默认转化为flase

        出现undefined的典型状况:

                变量被声明等于undefined

                调用函数时,应该提供的参数没有提供

                对象没有赋值的属性,该属性值为undefined

                函数没有返回值,默认返回undefined

6.Symbol类型

        Symbol类型的对象永远不相等,即便创建的时候传入相同的值。因此,可以用解决属性名的问题(适用于多少编码),作为标记。可以看作是独一无二的值。Symbol类型的值需要使用Symbol()函数来生成。

7.BigInt类型

        JavaScript中的任意精度类型,可以储存和操作大整数。

最后让我们来说说Object

8.引用数据类型

        注意:在引用类型赋值时对象的引用,所以从一个变量向另一个变量赋值引用类型的值时,同样会将存在在变量中的对象的值赋值一份到新的变量分配的空间,引用类型保存在变量中的时对象在堆存在的地址,所以与基本数据类型的简单赋值不同,这个值的副本实际上时一个指针,而这个指针指向储存在堆内存的一个对象,那么赋值操作后,两个变量都保存了同一个对象的地址,而这个地址都指向同一个对象,因此改变其中任何一个变量,都会影响

(1)object类型:JavaScript的对西昂类型是由一组由键,值组成的无需组合,定义对象类型需要使用花括号{}

{name1:value1,name2:value2,name:value3}

其中name1、name2、···为对象中的键,value1、value2、value3···为对应的值

在JavaScript中,对象类型的键都是字符串类型的,值则可以是任意数据类型。要获取对象中的某个值,可以使用对象名·键的形式

var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
};
console.log(person.name);       // 输出 Bob
console.log(person.age);        // 输出 20

(2)Array类型

        数组是一组按顺序排列的数据的集合,数据中的每个值都成为元素,而且数组这种可以包含任意类型的数据。在JavaScript中定义数组需要使用方括号[],数组中的每个元素使用,进行分离

[1,2,3,'apple',true,null]

另外也可以使用Array()函数来创建数组,var arr = new Array(1,2,3);

组中的元素可以通过索引来访问。数组中的索引从 0 开始,并依次递增,也就是说数组第一个元素的索引为 0,第二个元素的索引为 1,第三个元素的索引为 2,以此类推

(3)Function类型

        函数(Function)是一段具有特定功能的代码块,函数并不会自动运行,需要通过函数名调用才能运行

function sayHello(name){
    return "Hello, " + name;
}
var res = sayHello("Peter");
console.log(res);  // 输出 Hello, Peter

此外,函数还可以存储在变量、对象、数组中,而且函数还可以作为参数传递给其它函数,或则从其它函数返回,如下例所示

var fun = function(){
    console.log("http://c.biancheng.net/js/");
}

function createGreeting(name){
    return "Hello, " + name;
}
function displayGreeting(greetingFunction, userName){
    return greetingFunction(userName);
}
var result = displayGreeting(createGreeting, "Peter");
console.log(result);  // 输出 Hello, Peter

二.数据类型的判定

        数据类型的判定方法有很多,但是常用的一般就四个

1.typeof   

undefined--未定义的变量或值

boolean--布尔类型的变量或值

string--字符串类型的变量或值

number--数字类型的变量或值

object--对象类型的变量或值,或者null

function-函数类型的变量或值

2.instsnceof

运算符用来测试一个对象在其原型链中是否存在一个构造函数prototype属性,语法:object instanceof constructor

-基本数据类型中:Number,String,Boolean。字面量值不可以用instanceof检测,但是构造函数创建的值可以。

3.constructor

constructor是prototype对象上的属性,指向构造函数。根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,因此,实例对象也是能使用constructor属性的。

4.Object.prototype.toString.call()-----强烈推荐!!

可以通过toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,传递要检查的对象作为第一个参数,称为thisArg。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值