前言
知识是无止境的,也是可以无限延伸的。就例如开始写js相关的文章后,我发布了对面向对象的解释和看法,然后延伸出其中较具代表的类,之后想想还是说说数据类型。
因此,本篇文章就是说数据类型的。
数据类型
转的图symbol
symbol指 独一无二
示例:
let s1 = Symbol('foo')
let s2 = Symbol('foo')
console.log(s1==s2);//false
Symbol.for
let s1 = Symbol.for('foo');
let s2 = Symbol.for('foo');
s1 === s2 // true
Symbol.for()与Symbol()这两种写法,都会生成新的 Symbol。它们的区别是,前者会被登记在全局环境中供搜索,后者不会。Symbol.for()不会每次调用就返回一个新的 Symbol 类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值。
判断数据类型
- typeof
- instanceof
- Object.prototype.toString.call
//封装
var gettype=Object.prototype.toString
var utility={
isObj:function(o){
return gettype.call(o)=="[object Object]";
},
isArray:function(o){
return gettype.call(o)=="[object Array]";
},
isNULL:function(o){
return gettype.call(o)=="[object Null]";
},
isDocument:function(o){
return gettype.call(o)=="[object Document]"|| '[object HTMLDocument]';
}
}
- 判断NaN
NaN是一个特殊的Number类型的值,表示不是数字。当你需要判断NaN时,会有如下
NaN==NaN//false
NaN==Number//false
Number==typeof(NaN)//false
es6的Number类型有个Number.isNaN()
方法可以判断
Number.isNaN(NaN)//true
常用数据类型转换
字符串转数字
- parseInt()
- parseFloat()
- Number()
字符串转数组
- 解构赋值
[...'hello'] //["h", "e", "l", "l", "o"]
- split()
let a="aaaabbb"
let b=a.split("") //["a", "a", "a", "a", "b", "b", "b"]
- Array.of()
Array.of(3, 11, 8) // [3,11,8]
数组转字符串
- toString()
- join()
两种方法均会使字符串中间以分割号,
隔开,如果需要其他分隔号分隔开则可以利用join("")
中的双引号之间的字符表示,空格也可!
因此,我们引伸出一个问题:如何去掉字符串中的分隔号
- 利用
replace
正则表达式替换
let a="aaaabbb"
let b=[...a]
let c=b.join()//a,a,a,a,b,b,b
c.replace(/,/g,'')//利用/,/g取得所有的,并取代
网友评论