美文网首页
数据类型

数据类型

作者: fb941c99409d | 来源:发表于2020-01-04 23:22 被阅读0次
    数据类型 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 
    
    

    相关文章

      网友评论

          本文标题:数据类型

          本文链接:https://www.haomeiwen.com/subject/kzmfactx.html