javascript数据类型

数据类型的分类
  • 种类
    • 数值,number,整数和小数
    • 字符串,string,字符组成的文本
    • 布尔值,boolean,true 和 false 两个特定值
    • undefined,表示"未定义"或不存在,即此处目前没有任何值
    • null,表示空缺,即此处应该有一个值,但目前为空
    • object,表示对象,各种值组成的集合
  • 原始类型和复杂类型
    • 原始类型(primitive type):数值,字符串,布尔值
    • 复杂类型(complex type):对象
    • 区别
      • 基本类型变量存的是值,复杂类型的变量存的是内存地址
      • 基本类型在赋值的时候拷贝值,复杂类型在赋值的时候只拷贝地址,不拷贝值
  • 对象的细分
    • 狭义的对象(object)
    • 数组(array)
    • 函数(function)
    • 正则表达式(regexp)
数据类型区分的方法
  • 三种方法
    • typeof 运算符
    • instanceof 运算符
    • Objcet.prototype.toString 方法
  • typeofinstanceof
    • typeof 运算符可以返回一个值的数据类型,有以下结果
      • 数值、字符串、布尔值分别返回 numberstringboolean
      • 函数返回 function
      • undefined 返回 undefined
      • 其他情况(array,null)都返回 object
    • instanceof 运算符可以通过返回一个布尔值来确定这个对象是是否是特定类别或特定类别的子类
      • 在使用 typeof 运算符返回 object 时,用 instanceof 可确定数据特定类型
NaN(Not a Number)
  • 该属性代表非数字值的特殊值,NaN 和任何值都不相等,包括它自己
字符串转换成数值
  • 转换函数
    • parseInt()
      • 可将任何进制的值(string)转换成整数,其他类型返回 NaN
      • 0 开头默认为八进制,0x 开头默认为十六进制;第二个参数可指定进制
    • parseFloat()
      • parseInt() 类似,但字符串必须为十进制形式,且无法指定进制
        parseInt("12red");  //returns  12
        parseInt("010");  //returns   8
        parseInt("010", 10);  //returns   10
        parseFloat("0908");  //returns   908
        parseFloat("22.34.5");  //returns   22.34
      
  • 强制类型转换
    • number()
      • 转换整个值,而不是部分值
  • 利用 js 变量弱类型转换
=====
  • === 严格相等运算符(strict equality); 恒等运算符(identity operator)
    • 若两个值类型不同,则不相等
    • 若两个值都是 nullundefined,则不相等
    • 若两个值都是布尔值 true 或 都是布尔值 false,则不相等
    • 若一个值是 NaN,或两个值都是 NaN,则不相等
    • 若两个值为数字且数值相等,则它们相等
    • 若两个引用值指向同一对象、数组或函数,则相等
  • == 相等运算符(equal operator),与 === 类似,但其比较并不严格;如果两个操作数类型不同,那么相等运算符会进行一些类型转换,然后再进行比较
    • 若两个操作数类型相同,则比较规则和恒等运算符相同
    • 若类型不同
      • 若一个值是 null,另一个是 undefined,则它们相等
      • 若一个值是数字,另一个是字符串,先将字符串转换为数字,然后进行比较
      • 若一个值是 true,则将其转换为 1 ,若一个值是 false,则将其转换为 0;然后再进行比较
      • 若一个值是对象,另一个是数字或字符串,则将对象转换成原始值后再进行比较
      • 其他不同类型的比较均不相等
breakcontinue
  • break 语句的作用是立即退出最内层的循环或 switch 语句
  • continue 语句与 break 类似,但它不是退出循环,而是转而执行下一次循环
    • while 循环中,在循环开始处指定的 experssion 会重复检测,若结果为 true,循环体会从头开始执行
    • do/while 循环中,程序的执行直接跳到循环结尾处,这时会重新判断循环语句,之后才会继续下一次循环
    • for 循环中,首先计算 increment 表达式,然后再次检测表达式,用以判断是否执行循环体
    • for/in 循环中,循环开始遍历下一个属性名,这个属性名赋给了指定的变量
void(0)undefined
  • undefined 是一个全局属性,表示未定义或定义了没有赋值;void() 是一个一元运算符,传入任何参数都会返回 undefined
  • ES5 之前,undefined 是个可读/写的变量,可以给它赋任意值;修正后,全局变量下的 undefined 值为只读,不可改写,但在局部变量中仍然可以进行改写
  • 使用 void() 是为了避免 undefined 被改写而出现判断不准确的情况

refer to 每日一题 | 前端学习指南,JavaScript 字符串转换数字 | CSDN

你可能感兴趣的:(javascript数据类型)