前端学习笔记(七)-变量与数据类型

193 阅读4分钟

变量

  • 定义:用于存放数据的容器
  • 声明变量:var varname;
    • 声明变量未初始化和未声明变量得到的返回值都是undefined
  • 初始化变量和修改变量
    • var varname='Chris'
    • varname='Bob'
  • 通过var声明的变量都将成为定义该变量的作用于中的“局部变量”
    • 若在function函数中通过var声明变量,那么这个变量就是局部变量,在function结束的时候被销毁
    • 若在function函数外部通过var声明变量,那么这个变量就是全局变量,在页面关闭后被销毁
    • 略去var声明的变量将提升为全局变量
  • 动态类型,不需要指定变量将包含什么数据类型

数据类型

  • 判断数据类型的方法:typeof

  • Undefined

    • 只有一个值undefined,表示使用var声明的但未初始化的变量
  • Null

    • 只有一个值null
    • undefined派生于null,所以它们的相等性测试要返回true
    • typeof操作符返回object
    • 用途:声明一个变量用于保存对象,若这个变量还未真正保存对象时,则需要显式地将变量设置为null
  • Boolean

    • 两个值:truefalse
    • 转换规则:
    数据类型 转换为true的值 转换为false的值
    String 非空字符串 空字符串""
    Number 任何非零数字值 0和NaN
    Object 任何对象 空对象null
    Undefined 不适用 undefined
  • Number

    • 十进制表示
    • 八进制表示:var octalNum=070
    • 十六进制表示:var hexNum=0x12
    • 浮点数
      • 表示方法:var floatNum=1.1
      • JS会智能地将浮点数转换为整数
      • 科学计数法:var floatNum=3.14e7
      • JS中的浮点数采用IEEE754标准,会存在精度问题,因此永远不要测试某个特定浮点数的值
    • 数据范围:Number.MIN_VALUE~Number.MAX_VALUE
    • NaN(Not a Number)
      • 表示一个本来要返回数值的操作数未返回数值的情况
      • 任何涉及NaN的操作都会返回NaN
      • NaN和任何值都不相等
      • 判断变量是否是数值:isNaN()
    • 数值转换
      • Number()作用于任何数据类型,parseInt()和parseFloat()专门用于把字符串转换成数值
      • true-->1,false-->0
      • null-->0
      • undefined-->NaN
      • String只包含数字:十进制,浮点,十六进制都会转换成对应格式的数字
      • ""-->0
      • String中包含上述格式以外的字符-->NaN
      • 对象,调用对象valueOf()方法,如果转换结果是NaN,则调用对象的toString()方法。依次按照上述规则进行转换。
  • String

    • 可以使用单引号或双引号,但是不能混用。
    • 字符串是不可变的
    • 转换规则:
      • 调用toString()
      • null-->"null"
      • undefined-->"undefined"
  • Object

    • 组成,由对象成员构成
          var person={
              name:'Chris',
              age:24
          }
      
      • name
      • value
      • 由冒号分割
    • 表示方法
      • 点表示法
          person.name
      
      • 括号表示法,可以动态的设置成员的名字
          person['name']
      
    • this的含义:当前代码运行时的对象
  • 数组

    • 创建数组 var shopping=['bread','milk','cheese','noodle']
    • Array构造函数
      • 可以传递单个数字类型的参数,表示数组的长度
      • 可以传递数组中应该保存的项
    • 访问和修改数组,使用方括号的方法(数组长度动态调整)
    • 检测数组
      • Array.isArray()
    • 数组和字符串的转换
      • split()
      • join()
    • 添加和删除数组项
      • push(),从数组的尾部添加,返回数组的新长度
      • pop(),从数组的头部删除,返回被删除的元素
      • unshift(),从数组的头部添加,返回数组的新长度
      • shift(),从数组的头部删除,返回被删除的元素
    • 排序
      • Array.sort([compareFunction])
      • 默认排序规则元素转换为字符串后的各个字符的Unicode位点进行排序
      • 自定义排序规则
        • numbers.sort(function(a,b){})
        • numbers.sort((a,b)=>)
      • compareFunction(a,b),如果返回值小于0,a排在b的前面,反之,b排在a的前面
    • 迭代 以下每个方法都接受两个参数:要在每一个项上运行的函数和(可选的)运行该函数的作用域
      • every(),查询数组中的项是否满足某种条件,全部满足才返回true
      • filter(),查询数组中的项是否满足某种条件,将满足条件的项筛选出来,并构成新数组
      • forEach(),对数组中每一项运行函数,无返回值
      • map(),对数组中每一项运行函数,返回每一项运行结果构成的新数组
      • some(),查询数组中的项是否满足某种条件,至少有一个满足就可以返回true
      • 函数的形态:function(item,index,array)。参数分别是数组项,数组项的下标,数组本身
    • 归并
      • reduce()
      • reduceRight()
      • 接受参数:每一项调用的函数和(可选度)作为归并的初始值
      • 调用函数的形态:function(prev,cur,index,array)。分别是前一个值,当前值,数组项下标,数组本身。函数的返回值会自动作为下一次迭代过程中函数的参数prev
      • 使用reduce()和reduceRight()取决于从哪一个方向开始归并数组