数据类型判断方式及优缺点
JS中一共有七种数据类型:
一种引用类型——Object,
六种基本数据类型——Number、String、Boolean、Null、Undifined、Symbol(ES6新增)
typeof(var):返回的是一个字符串,但是对于复杂数据类型来说,不管是数组Array、日期Date,或者是普通对象,这种方法返回的都是Object,无法更详细的区分。
(var) instranceof (type):但是这种方法在iframe下会产生bug,而且这种方法也无法准确判断Function和Object的类型,因为既可以说函数是个构造方法,也可以说方法是一个对象。
(var).Constructor (type):这种方法在类继承的时候同样有可能产生bug。
Object.prototype.toString.call(var) == ‘[Object (type)]’:完美。
String 各种常用操作
字符串分割
1.slice()、substr()、substring()
一、参数含义上的区别
从0,length-1
开始包含,结尾不包括
第一个参数 | 第二个参数(可选) | |
---|---|---|
slice() | 开始位置 | 需要返回的子字符串最后一个字符后面的位置 |
substr() | 开始位置 | 需要返回的字符个数 |
substring() | 开始位置 | 需要返回的子字符串最后一个字符后面的位置 |
var strValue = "javascript programing";
alert(strValue.slice(3)); //"ascript programing"
alert(strValue.substring(3)); //"ascript programing"
alert(strValue.substr(3)); //"ascript programing"
alert(strValue.slice(3,13)); //"ascript pr"
alert(strValue.substring(3,13)); //"ascript pr"
alert(strValue.substr(3,13)); //"ascript progr"
二、处理负值参数时的区别。
参数的含义不变,只不过参数为负值时,3个子字符串函数会对负值参数进行不同的处理。
第一个参数 | 第二个参数(可选) | 备注 | |
---|---|---|---|
slice() | 将负值与字符串的长度相加 | 将负值与字符串的长度相加 | |
substr() | 将负值与字符串的长度相加 | 将负值变为0 | |
substring() | 将负值变为0 | 将负值变为0 | 负值处理后,该函数会将较小的数作为开始位置,较大的数作为结束位置 |
var strValue = "javascript programing";//strValue.length()=21
alert(strValue.slice(-3)); => alert(strValue.slice(18)); //"ing"
alert(strValue.substring(-3)); => alert(strValue.substring(0)); //"javascript programing"
alert(strValue.substr(-3)); => alert(strValue.substr(18)); //"ing"
alert(strValue.slice(3,-13)); => alert(strValue.slice(3,8)); //"ascri"
alert(strValue.substring(3,-13)); => alert(strValue.substring(0,3)); //"jav"
alert(strValue.substr(3,-13)); => alert(strValue.substr(3,0)); //""
参考:https://www.cnblogs.com/kongxianghai/archive/2013/03/08/2950149.html