基本数据类型

136 阅读4分钟

一、String字符串

堆栈

数据&内存.jpg

  • 转义字符:\

    转义符后面可以识别0-377的三位八进制数(latin-1字符)

    console.log( 'abc\123' );// 'abcS'
    console.log( 'abc\1234' );// 'abcS4'
    console.log( 'abc\951' );// 'abc951'
    
  • 方法

    • 转换进制
      • parseInt(string,radix):转换一个数为十进制. radix:原有数的进制
      • toString(radix):输出一个radix进制的进制数
    • 截取
      • substr(start, length):length 截取长度
         var str = '123456789';
         console.log( str.substr(2,-2) );// ''
        
      • subString(start,end):end 结束索引(不包括)
            var str = '123456789';
         // 1.startend谁小谁就是起始位置,另一个是结束位置
            console.log( str.substring(5,1) );// '2345'
         // 2.end为负数,从0开始 -> '12'
            console.log( str.substring(2,-2) );// '12'   
        
      • slice(start,end):end 结束索引(不包括)
            var str = '123456789';
            console.log( str.slice(5,1) );// ''  end不能小于start
        
    • 分割 split()
      var url = 'https://www.baidu.com/s?wd=tupian&spt=123&rsv=0xcbeff'
      let index=url.indexof('?')
      let str=url.substr(index+1) //wd=tupian&spt=123&rsv=0xcbeff
      let arr=str.split('&') //['wd=tupian', 'spt=123', 'rsv=0xcbeff']
      arr.forEach(item=>{
          let arr=item.split('=')
          if(arr[0]=='spt')  console.log(arr[1])  //123
      })
      
    • 替换 replace()
      let str='蹬蹬噔喜欢看奇幻电影'
      let res=str.replace('蹬蹬噔',function(str){
          let length = ''
          for(let i in str){
              length += '*'
          }
          return length
      })
      console.log(res)
      
  • 包装:在需要时,会被包装成对应的object类型

        let str = 'hello'  //String  基本类型
        let str =  new String('hello')  //object   基本包装类型
    
    • 基本类型:string、number、bollean、null、undefined'

    • 基本包装类型:string、number、bollean

      var res = str.charAt(0);
      console.log( str.length );
      

      以上代码执行时,JS引擎会自动进行包装

      • 1.临时创建str所对应的object对象
        var _str = new String('hello')
        
      • 2.通过_str对象添加、调用属性、方法
        _str.hehe = '呵呵'
        var res = _str.charAt(0);
        
      • 3.销毁临时创建的_str对象
         _str = null
        

二、类型转换

  • undefined、null与其他类型比较时,不做隐式转换

  • 任意值与布尔值比较时,都转化成Number

  • 转换成false的类型

    • undefined
    • null
    • NaN
    • ''
    • 0
    • -0
  • 转化成数字

    • undefined -> NaN
    • null -> 0
    • '' -> 0
    • [] -> 0
    • {} -> NaN
    • fn -> NaN

    1.png

运算

  • 1.根据运算优先级进行运算
  • 2.基本数据类型和object类型比较时,object->基本类型
    • 调用valueOf()方法,返回原始值
    • 调用toString()方法,返回字符串值
  • 3.字符串和布尔值比较时,转换成数字
    console.log( [] == ![] )  //true 基本数据类型
    //1. ![] == false  //     ->    ( [] == false )
    //2. [] => 
                [].valueOf()  // []
                [].toString()   // '' ->  ( '' == false  ) 
    //3. '' => 0 , false => 0   -> ( 0 == 0 ) =>  true
    
  • valueOf()toString()
    //如何让条件成为true ?
    if (a==1 && a==2 && a==3)   console.log( '见证奇迹的时刻!' )
    
    let a = {
        x:1
        valueOf:function(){
            // return 原始值   this -> a 
            return this.x++
        },
        toString:function(){
            return '[object object]'  // this -> a
        }
    }
    

三、方法

字符串

  1. 转化大小写

    • toLowerCase():转化成小写
    • toUpperCase():转化成大写
  2. 查找某个子串在字符串中第一次出现的索引,返回索引值,没有返回-1

    • indexOf():从左到右查找
    • lastIndexOf():从右到左查找
    • search():从左到右查找(可以配合正则使用)
  3. 截取

    • substr(start,length)
    • subString(start,end)
    • slice(start,end)
  4. unicoded编码值

    • charCodeAt():字符 -> unicoded编码值(十进制)
    • String.fromCharCode():unicoded编码值(十进制)-> 字符
    常用汉字在unicoded编码表中的范围:4e00-9fa5 十六进制
    
  5. 其他

  • split(分割符):转化成数组
  • replace(old,new):替换
  • trim():去除字符串前后的空格
  • 不常用
    • concat():将多个字符串拼接成一个字符串,返回新的字符串
    • charAt():返回指定索引位置的字符

数组

  1. 添加
    • push():末尾;返回数组新的长度
    • unshift():开头;返回数组新的长度
  2. 删除
    • pop():末尾;返回被删除的元素
    • shift():开头;返回被删除的元素
  3. 增删改
    • splice(start,number,val1,val2...):返回一个新数组(包含被删除的元素)
  4. 将数组转成字符串,返回字符串值
    • toString()
    • join(分隔符)
  5. 常用
  • reverse():反转;返回反转后的数组
  • sort(a,b):排序
  • slice(start,end):截取
  • concat():拼接;返回一个新数组

ES5

  1. 查询某个元素在数组中第一次出现的索引,返回索引,如果没有返回-1
    • indexOf():从左到右
    • lastIndexOf():从右到左
  2. 遍历
    • forEach():没有返回值(undefined)
    • map():返回一个新数组
    • reduce(callback,initVlaue):根据数组的每一个值,归并为一个最终值
          reduce(function (previous,current,index,arr){}
          // callback 回调函数,遍历数组时,每次执行的函数
          // initVlaue 初始值(reduce返回值的初始值)
          // previous 回调函数上一次的返回值
          // current 当前遍历的数组元素
          // index 代表current的索引
          // arr 遍历的原数组
      
  3. filter():筛选;返回一个新数组
  4. 遍历数组,只要有一个条件为true,则返回true,否则返回false
    • some():找true( | | )
    • every():找false( && )