JavaScript数据类型和类型转换

(一)JavaScript数据类型

– 5种基本数据类型:字符串型(String)、数字型(Number)、布尔型(Boolean)、空型(Null)、未定义型(Undefined)
      – 引用数据类型:对象(Object)

  1. 字符串型(String)

     - 使用引号(双引号或单引号)引起来
    - 空串:"" 或 ''
    - 外双内单、外单内双
    - 转义字符:\

                 \'  ==> '
                  \"  ==> "
                  \n  ==> 换行
                   \\  ==> \
      - 字符串拼接:字符串+任何数据类型==>拼接后的字符串

  2. 数字型(Number)

       - 默认为十进制数。0 开头:八进制;0x 开头:十六进制;0b开头:二进制数  

 - 最大值:Number.MAX_VALUE ,代表1.7976931348623157e+308

 - 最小正值:Number.MIN_VALUE,代表5e-324

 - 3个特殊值:Infinity (无穷大)、- Infinity(无穷小)、NaN(非数值)

 - isNaN():判断一个变量是否为非数字的类型,返回值为true表示非数字,false表示是数字

3. 布尔型(Boolean)

     - 只有两个值: true 、false

4. 空型(Null)
     - 只有一个值: null (表示一个不存在的或无效的对象与地址)

5. 未定义型(Undefined)
      - 声明一个变量但没有赋值时,此变量的值就是undefined

(二)类型检测

可以使用 typeof  来检查一个变量的类型

                语法:typeof  变量    

(三)类型转换

- 类型转换分为 强制转换、  隐式转换
       - 强制转换:利用JS提供的进行类型转换的方法或函数
       - 隐式转换:js自动执行。

1. 转换为字符串
- toString()
 - 语法:被转换数据.toString()

JavaScript数据类型和类型转换_第1张图片

- String()
 - 语法:String(被转换数据)

  - 被转换数据 +字符串  
2. 转换为数字
-  parseInt()
                 - 语法:parseInt(被转换数据) 
                 - 将一个字符串开头的整数转换出来
                 -  纯数字字符串、数字开头的字符串 -->  整数
                    其余 --> NaN

 - parseFloat()
- 语法:parseFloat(被转换数据)  
                - 将一个字符串开头的小数转换出来
                -  纯数字字符串、数字开头的字符串 -->  浮点数
                    其余 --> NaN

- Number()
- 语法:Number(被转换数据)
- 转换的情况:参考教材

- 隐式转换:用算术运算符 - 、*、/
                 - 原理:对非数字型的值做- 、*、/运算时,会先转换为数字,再做运算。

JavaScript数据类型和类型转换_第2张图片

来看一个例子:

规则是:

  • 如果一个值是null,另一个是undefined,那么它们相等
  • 如果一个值是数字,另一个是字符串,先将字符串转为数字再比较
  • 如果其中一个值是true,将true转为1再比较,同理false转换成0再比较
  • 如果一个值是对象,另一个是数字或字符串,则将对象转换成原始值再进行比较(日期对象转换成字符串,其它对象先尝试调用valueOf()方法再尝试使用toString())
  • 其它不同类型的比较都不相等

显然上面的例子属于第二种情况,“123”被隐式转换为123了。

除了==运算符,诸如+、-、*、/、!、<、<=、>、>=等运算符两边的操作数类型不同时,都会发生隐式类型转换,还包括while()语句和if()语句内的条件语句,alert()语句会将()内的值隐式转换成字符串后再弹出。

“+”运算符

二元加法运算符“+”可以对两个数字做加法,也可以做字符串连接操作

当“+”做为一元运算符时,会把操作数转换为数字(转不了的转成NaN)

“-”运算符

当“-”做为二元运算符时,会把操作数转换为数字(转不了的转成NaN)

当“-”做为一元运算符时,会把操作数转换为数字(转不了的转成NaN),同时改变运算结果的符合

比较运算符(">"、">="、"<"、"<=")

比较操作符的操作数可能是任意类型,然而只有数字和字符串才能真正执行比较操作,因此其它类型的操作数都将进行类型转换,具体规则如下:

  • 如果操作数为对象,那么这个对象将转换为原始值:同上,日期对象通过toString()方法转换,其他对象通过valueOf()方法转换,如果valueOf()返回值不是原始值再使用toString()方法转换。
  • 在对象转换为原始值后,如果两个操作数都是字符串,将依次比较每个字符串的Unicode大小。
  • 在对象转换为原始值后,如果至少有一个操作数不是字符串,那么两个操作数都将转换为数字进行比较,如果其中某个操作数无法转换为数字,这个操作数将转换为NaN,比较结果为false。

"*"、"/"、"%"、"!"

"*"、"/"、"%"会把操作数转换为数字(转不了的转成NaN)

"!"会把操作数转换为布尔值

3. 转换为布尔值
- Boolean()
                 - 语法:Boolean(被转换数据)
                 - 空串、0、NaN、null、undefined  --> false
                   其余 --> true

JavaScript数据类型和类型转换_第3张图片

你可能感兴趣的:(javascript,html5,jquery)