ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS的一些数据类型的方法和函数

2020-09-14 20:33:56  阅读:213  来源: 互联网

标签:instanceof console log 数据类型 JS toString typeof toLocaleString 函数


最近在看JS红皮书是游乐园一些理解和收获,特写一篇文章记录这些收获。

本文的方法和一些术语和定义来自《JavaScript高级程序设计》第三版。

一、Array类型

数组类型我相信使用JS的同学一定不会陌生,然而JS的数组类型与其他语言的数组类型有着很大的区别。

1.判断数据类型。

在JS中有一个常用的JS数据类型判断方法---typeof

typeof会以字符串形式返回数据的类型,如下所示

 

console.log(typeof 'this is string') // string
console.log(typeof 123) // number
console.log(typeof true) // boolean
console.log(typeof a)  // undefind
console.log(typeof {a:1,b:2}) // object
console.log(typeof null)  // object
console.log(typeof [1,2,3,4,5]) // object

 

 

 

但我们会发现,typeof无法判断一个数据是否为数组类型,那么该怎么判断一个数据是否是数组数据呢?

第一种方法就是使用 instanceof 操作符,看下面的代码

 

console.log([1,2,3,4,5,6] instanceof Array); // true
console.log([1,2,3,4,5,6] instanceof Object); // true
console.log({a:1,b:2} instanceof Object);  // true
console.log(123 instanceof Number);  // false
console.log(true instanceof Boolean); // false
console.log( 'this is string' instanceof String); // false 
console.log(true instanceof Object); // false
console.log( 'this is string' instanceof Object); // false
console.log(null instanceof Object)  // false

 

在代码中,我们很清楚的看到 instanceof 是可以判断一个数据是否是数组数据,但也可以看到很多其他问题。

第二种方法就是在ES5中一些数据结构新加的判断方法,看代码

console.log(Array.isArray([1,2,3,4,5,6])); // true
console.log(Number.isInteger(123));  // false

 

 

所以当遇到问题是,使用合理的方法将会事半功倍。

 

2. 转换方法。

JS的所有对象都拥有toLocaleString(),toString(),valueOf()三个方法,使用方法如下代码

let arr=['1','2','3'];
console.log(arr.toString()) // 1,2,3
console.log(arr.valueOf()); // ['1','2','3']

 

toSting()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。这个过程中,会对数组中每一项调用toString()。

数组调用valueOf()会返回数组本身。

toLocaleString()方法经常会返回和toString()一样的值,但也并不绝对,我们看一下代码

let obj1={
    toLocaleString:function(){
        return 'obj1'
    },
    toString:function(){
        return 'obj1-1'
    }
}
let obj2={
    toLocaleString:function(){
        return 'obj2'
    },
    toString:function(){
        return 'obj2-2'
    }
} 
let obj=[obj1,obj2];
console.log(obj); // Array[]
console.log(obj.toString()); // obj1-1,obj2-2
console.log(obj.toLocaleString()) // obj1,obj2

 

这里我们将obj1和obj2的toLocaleString(),toString()方法进行了重写,以便能够看到效果。

上面代码可以看到,使用toLocaleString()时数组内的每一项调用的时toLocaleString()而不是toString(),这就是上面说不绝对的原因。

上述的方法在进行转换时会默认使用 ‘,’ 来分割各项。当然,我们可以使用join()方法来改分割方式。

 

let arr=['1','2','3'];
console.log(arr.join('||')) // 1||2||3
console.log(arr.join('')) // 123

 

 

 

就像上面的代码一样。

 

今天就先记录到这里,之后会继续记录。

标签:instanceof,console,log,数据类型,JS,toString,typeof,toLocaleString,函数
来源: https://www.cnblogs.com/FuloliyaLansfroya/p/13669158.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有