JS之数据类型相关
来源:互联网 发布:slack软件 编辑:程序博客网 时间:2024/04/30 01:37
数据类型分类
- 原始类型
- 值直接保存在变量本地的数据类型
- 5种: Null | Undefined | Boolean | String | Number
- 引用类型
- 值不保存在变量本地的数据类型
数据类型详解
- 首先说一个运算符: typeof
- typeof运算符有一个参数, 即要检查的变量或值
- 对变量或值调用typeof运算符将返回下列值之一:
- object——如果变量是引用类型或Null类型
- 其余4中原始类型返回对应的类型值
- 注意: 为什么typeof运算符对于Null类型会返回”object”? 这实际上是JavaScript最初实现时的一个错误, 然后被ECMAScript沿用了。现在, null被认为是对象的占位符, 从而解释了这一矛盾, 但从技术上来说, 它仍然是原始值。
- 原始类型之Undefined
- Undefined类型只有一个值undefined。当声明的变量未初始化时, 该变量的默认值是undefined。
- 函数无明确返回值时, 返回的也是值undefined
- 注意: 值undefined并不同于未定义的值。但是typeof运算符并不真正区分这两种值。
- 当变量未声明而直接使用typeof运算符时, 将返回undefined。
- 但当未声明的变量使用其它运算符时, 将会报错。
- 原始类型之Null
- Null类型只有一个值null, 即它的字面量。
- 值undefined实际上是由值null派生来的, 因此ECMAScript把它们定义为相等的。
- 尽管这两个值相等, 但它们的含义不同。undefined是声明了变量但未对其进行初始化时赋予该变量的值, null则用于表示尚未存在的变量。如果函数或方法要返回的是对象, 那么找不到该对象时, 返回的通常是null。
- 原始类型之Boolean
- Boolean类型有两个值true和false(即两个Boolean字面量)
- 原始类型之String
- String类型是唯一没有固定大小的原始类型。可以用字符串存储0或更多个Unicode字符, 用16位整数表示。
- 字符串中每个字符都有特定的位置, 首字符从位置0开始, 第二个字符在位置1, 以此类推。
- 字符串字面量是由单引号或双引号声明的。
- 字符串的内容一旦创建, 不可改变。要想改变, 只能用另一个新字符串替换。
- String类型还包括几种字符字面量, 包括换行符\n、制表符\t等。
- 原始类型之Number
- Number类型既可以表示32位的整数, 也可以表示64位的浮点数
- 直接输入的(而非从另一个变量访问的)任何数字都被看做是Number类型的字面量
- 整数也可以被表示为八进制或十六进制的字面量。八进制字面量的首数字必须为0。十六进制字面量的首两位必须为0x, 其后接十六进制数, 十六进制字母可大写, 亦可小写。
- 注意: 尽管所有整数都可以被表示为八进制或十六进制字面量, 但所有的数学运算返回的都是十进制的结果。
- 浮点数在进行计算前, 真正存储的是字符串
- 科学计数法
- 如var fnum = 5.618e7表示5.618x107
- 如var fnum = 8-e17表示8x10-17
- 特殊的Number值
- Infinity | -Infinity | NaN
- 如果计算返回的是无穷大值, 那么生成的结果不能再用于其他计算。
- 两个方法:
- isFinite(), 可以对任何数调用isFinite()方法, 以确保该数不是无穷大
- isNaN(), 判断一个数字是否为数字
数据类型转换
- 两大类转换方式: 隐式转换和强制转换
- 隐式转换: 不需要程序员干预, JS自动完成的类型转换。
- 隐式转换无处不在, 只要JS认为有必要。
- 算术运算中, 一切数据都默认转换为数字, 再计算。
- Null类型: null->0
- Undefined类型: undefined->NaN
- Boolean类型: true->1 ; false->0
- 在+运算中, 碰到字符串, +就变为字符串拼接, 另一个不是字符串的数据, 自动转换为字符串。
- 强制转换:程序员主动调用专门的函数, 执行转换
- 何时使用: 自动转换的类型, 不是想要得到的
- 任意类型->字符串API
- x.toString(); x不是undefined或null时, 才可用
- String(x); 相当于隐式转换, 此法万能
- 任意类型->数字API
- Number(x); 专用于将非字符串类型转数字, 相当于隐式转换(字符串转数字将转换为NaN)
- 字符串->数字API
- parseInt(str): 从第一个字符开始, 依次读取每个数字, 只要碰上第一个非数字字符就停止, 自动跳过开头的空字符
- 注意: 不认识小数点
- 何时使用: 将字符串转为整数时
- parseFloat(str):用法同parseInt
- 注意: 认识小数点
- 何时使用: 将字符串转为小数时
- parseInt(str): 从第一个字符开始, 依次读取每个数字, 只要碰上第一个非数字字符就停止, 自动跳过开头的空字符
- 字符串->数字API
- Number(x); 专用于将非字符串类型转数字, 相当于隐式转换(字符串转数字将转换为NaN)
- 任意类型->BooleanAPI
- Boolean(x); 相当于隐式转换
- 以下5值转换为false, 其它均转换为true
- ”” | NaN | undefined | null | 0
- 以下5值转换为false, 其它均转换为true
- Boolean(x); 相当于隐式转换
- 快速转换:
- 任意类型->String
- x+”“
- 任意类型->Boolean
- !!x
- 任意类型->String
- 隐式转换: 不需要程序员干预, JS自动完成的类型转换。
0 0
- JS之数据类型相关
- JS数据类型及相关操作
- Js基础--Js数据类型及相关操作
- JS之数据类型
- JS 之 数据类型转换
- js之数据类型
- js-js基础之数据类型
- js中和数据类型相关的函数
- 4-1-JS数据类型及相关操作
- js 中数据类型和对象的相关
- JS之函数相关
- JS之数组相关
- JS之字符串相关
- JS之对象相关
- JS之原型相关
- JS之数据类型和变量
- js复习之数据类型转换
- JS数据类型之RegExp类型
- chmod g+s 、chmod o+t 、chmod u+s
- 关于接口的深刻理解
- 问题:为什么OVERLAPPED结构中的event必须得是手动的event
- 列表多选框的选择
- android 轻松搞定标题随scrollview滑动变色
- JS之数据类型相关
- Android C++向java传递不定长且不同类型的参数
- 快速上手Spring--7. ref的用法
- 强烈推荐转载-Android 性能测试
- Avro序列化操作(2):序列化和反序列化
- JS之变量与常量
- 苹果手机的html 手势,点击事件
- 为什么eclipse模拟器上可以运行app,插上真机后却不可以运行还会出现com.example.xxx这样的错误
- JS之程序结构