数据类型 string number boolean undefined null object
typeof 检测类型
typeof 变量 返回数据类型小写字符串
typeof只能检测出 string number boolean undefined object function
typeof "10" //string
typeof 10 //number
typeof false //boolean
typeof undefined //undefined
typeof null //object
typeof [] //object
typeof {a:1} //object
typeof function(){} //function
// 使用下面这个方法可以得到真实类型
//String Number Boolean Undefined Object Array Function Null RegExp Math Date
Object.prototype.toString.call(obj).slice(8, -1)
强制类型转换
String()
String(undefined)//undefined
String(true)//true
String(false)//false
String(null)//null
String([])//''
String([0])//0
String([2])//2
String([1,2,3])//1,2,3 数组还是有点奇怪的
String([1,2,3,[4,5,6]])//1,2,3,4,5,6 数组还是有点奇怪的
String({})//[object Object]
String({a:1})//[object Object]
String(function(){})//function(){}
toString()
// console.log(undefined.toString())//报错
console.log(true.toString())//true
console.log(false.toString())//false
// console.log(null.toString())//报错
console.log([].toString())//''
console.log([0].toString())//0
console.log([2].toString())//2
console.log([1,2,3].toString())//1,2,3 数组还是有点奇怪的
console.log([1,2,3,[4,5,6]].toString())//1,2,3,4,5,6 数组还是有点奇怪的
console.log({}.toString())//[object Object]
console.log({a:1}.toString())//[object Object]
console.log(function(){}.toString())//function(){}
Boolean()
null undefined 空字符串 0 =false 正负数字 infinity 对象 字符串 =true
Boolean('')//false
Boolean('1')//true
Boolean(-1)//true
Boolean(0)//false
Boolean(1)//true
Boolean(Number.MAX_SAFE_INTEGER)//true
Boolean(undefined)//false
Boolean(true)//true
Boolean(false)//false
Boolean(null)//false
Boolean([])//true
Boolean([0])//true
Boolean([1,2,3,[4,5,6]])//true
Boolean({})//true
Boolean({a:1})//true
Boolean(function(){})//true
Number()
Number('') //0
Number('sd') //NaN
Number('0sd')//NaN
Number('0914')//914
Number('914')//914
Number(undefined))//NaN
Number(true)//1
Number(false)//0
Number(null)//0
Number([])//0
Number([0])//0
Number([1])//1
Number([2])//2
Number([1,2,3])//NaN 数组还是有点奇怪的
Number({})//NaN
Number({a:1})//NaN
Number(function(){})//NaN
parseInt() 非数字开头的字符串会解析成NaN 需要判断 is_NaN()
parseInt('')//NaN
parseInt('1')//1
parseInt('a1233')//NaN
parseInt('1233a123')//1233
parseInt('1233.45a123')//1233
parseInt(undefined)//NaN
parseInt(true)//NaN
parseInt(false)//NaN
parseInt(null)//NaN
parseInt([])//NaN
parseInt([0])//0
parseInt([2])//2
parseInt([1,2,3])//1
parseInt([1,2,3,[4,5,6]])//1
parseInt({})//NaN
parseInt({a:1})//NaN
parseInt(function(){})//NaN
parseFloat(str)非数字开头的字符串会解析成NaN 需要判断 is_NaN()
num.toFiexd(2) 四舍五入保留两位小数
parseFloat('')//NaN
parseFloat('1')//1
parseFloat('a1233')//NaN
parseFloat('1233a123')//1233
parseFloat('1233a.45123')//1233
parseFloat('1233.45a123')//1233.45
parseFloat('1233.45678a123')//1233.45678
parseFloat(undefined)//NaN
parseFloat(true)//NaN
parseFloat(false)//NaN
parseFloat(null)//NaN
parseFloat([])//NaN
parseFloat([0])//0
parseFloat([2])//2
parseFloat([1,2,3])//1
parseFloat([1,2,3,[4,5,6]])//1
parseFloat({})//NaN
parseFloat({a:1})//NaN
parseFloat(function(){})//NaN
隐式类型转换
对非Number类型的数据进行算术运算时内部使用的是Number转换 ,
null+1 =1 undefined+1=NaN true+1=2 false+1=1
string值 使用 + 则是拼接字符串 "123"+1=1231 , " - * / " 运算可以转换成数字计算得到数字结果
+'1'+ +'2'=3 利用+号的巧技
Number
Number.MAX_VALUE Number.MIN_VALUE js中最大最小值 超出最大值的表示为infinity typeof infinity = number
num.toFiexd(2) 四舍五入保留两位小数
is_NaN(num)判断是否可以转换成NaN返回布尔值
isNaN('10') //false
isNaN('abcd')//true
isNaN(10) //false
isNaN(-10) //false
isNaN(true) //false
isNaN(false) //false
isNaN(undefined) //true
isNaN(null) //false
isNaN([])//false
isNaN({a:1})//true
isNaN({})//true
isNaN(function(){})//true
String
str[index] 可作为只读数组 (iE7及以前不支持)
str.length __proto__
str.toUpperCase() str.toLowerCase()
str.charAt(index) 返回指定下标值
str.indexOf('@') 返回指定字符的下标 不存在返回 -1
str.lastIndexOf('@')
str.substr(index,[length]) 截取下标开始的字符串
str.subString(startIndex , endIndex) 返回包含startIndex 不包含endIndex位置的字符串 不接受负值
str.slice(startIndex,endIndex) 返回包含startIndex 不包含endIndex位置的字符串 接受负值
str.split('分割符 ') 将字符串通过分割符返回一个数组
\n 换行 \r回车 \tab制表符 \b退格符 \f换页符
Object
Array
Array.isArray(arr) 判断是否是数组
arr.length
arr.indexOf(val,[startIndex从指定索引开始找]) 返回指定值 第一次出现的下标 不存在返回 -1, 使用时严格判断===-1 (IE9 以上兼容)
arr.lastIndexOf()
arr.map(function(item,index){ return item+10}) //循环遍历数组每一项值, 返回一个新的数组
arr.filter(function (item, index) { return item > 4 }); 遍历过滤出一个新的子数组, 返回条件为true的值
arr.concat(arr2) :返回 合并后的数组
arr.join("@") :返回 数组以指定字符连接成字符串
arr.reverse() :翻转数组
arr.sort() 对数组按照Unicode排序 ,对于数组项大小升序降序 需要使用下面回调函数形式
arr.sort(function(a,b){
return a-b; //升序排列
//return b-a; //降序
//参考http://file.mukewang.com/class/assist/205/4698985/cjclbpko48r/数组的排序方法-sort(教辅).pdf
})
arr.shift():删除数组中第一个元素 ,length -1 并返回被删除的元素
arr.pop() : 删除数组最后一个元素, length-1 并返回被删除的元素
arr.unshift ():数组开头增加元素 , 改变length 返回最新length
arr.push() :数组结尾增加元素 , 改变length 返回最新length
arr.slice(startIndex , endIndex):返回包含startIndex 不包含endIndex位置的数组
arr.splice(startIndex , 删除个数):从指定位置指定个数删除数组元素, 返回值 =被删除的元素组成的新数组
//splice 可以实现 删除 替换 插入,具体需要用再看手册
splice(start , 个数, "新元素1",...) 删除元素并在开始位置或后面添加新元素
arguments和getElementByTagName得到的类似数组不能使用数组方法 可以先 Array.prototype.slice.call(类似数组) 转换成数组
arr.forEach( function( value ,index , arr){ } ):只支持IE9及以上浏览器和手机端 ,兼容IE8以下推荐使用for循环遍历
Math
Math.PI :返回一个圆周率。
Math.abs(-100) = 100 :绝对值 不带符号的数值
Math.ceil(5.346) = 6:向上取整,小数部分舍去,整数部分加1
Math.floor(9.89) = 9:向下取整,小数部分舍去,整数部分不变
Math.round(5.621) = 6: 四舍五入取整
Math.pow(x,y):求x的y次方。如:Math.pow(2,3) = 8
Math.sqrt(x): 返回x的平方根
Math.random() :生成0-1之间的随机数
生成X-Y之间的随机整数 Math.round( Math.random()*(y-x)+x )
Math.max(1,32,5) Math.min(...) 返回最大 / 最小 数值
Date
var date = new Date( " 2017-01-20 08:59:59" );
Date() = Fri Jan 18 2019 10:18:07 GMT+0800 (中国标准时间)
Date.now() 当前距离格林威治时间的 毫秒数 H5新增 有兼容问题
date.getFullYear() = 2017
date.getMonth() :月份 0 -11
date.getDate() :日期 1-31
date.getHours() 0 -23
date.getMinutes() 0 -59
date.getSeconds() 0- 59
date.getTime() :返回 距离格林威治时间的 毫秒数
date.getDay() :星期1 2 3 4 5 6 0
网友评论