javascript数据类型

目录

一、javascript数据类型

String字符串

Number数值

MAX_VALUE

Infinity

MIN_VALUE

NaN

Boolean 布尔值

Null空值

Undefined未定义

Object对象

补充

基本数据类型和引用数据类型

二、强制类型转换

1、其他数据类型转换为String

一元运算符

2、其他数据类型转换为Number

3、其他数据类型转换为Boolean

补充

其他进制的数字


一、javascript数据类型

数据类型指的是字面量的类型,在js中一共有六种数据类型

基本数据类型String字符串
Number数值
Boolean布尔值

Null空值
Undefined未定义
引用数据类型Object对象

String字符串

  • 在js中字符串需要使用引号引起来,使用双引号单引号都可以,但是不能混着用
  • 同种类型引号不能嵌套,双引号不能嵌套双引号,单引号不能嵌套单引号   
  • 可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义

              \" 表示 "

              \' 表示  '

              \n 表示换行

              \t 表示制表符

              \\ 表示 \ 

Number数值

  • 在js中所有的数值都是Number类型,包括整数和浮点数(小数)。
  • 可以使用一个运算符typeof来检查一个变量的类型。  语法:typeof 变量

                     检查字符串时,返回string

                     检查数值时,返回number

MAX_VALUE

    js中可以表示的数字最大值  Number.MAX_VALUE=1.7976931348623157e+308

    如果使用Number表示的数字超过了最大值,则会返回一个Infinity        

Infinity

   Infinity 表示正无穷

   -Infinity表示负无穷

   使用typeof检查Infinity会返回number 

         

MIN_VALUE

   js中可以表示大于0的最小值  Number.MIN_VALUE=5e-324

NaN

  NaN是一个特殊的数字,表示Not a Number

  使用typeof检查NaN也会返回number 

      

浮点数运算

  如果使用js进行浮点运算,可能得到一个不精确的结果

  所以千万不要使用js进行对精确度要求比较高的运算

     

Boolean 布尔值

 布尔值只有两个

  •  true 表示真
  • false表示假
  • 使用typeof检查一个布尔值时,会返回boolean

注意引号的作用

       

                                             

Null空值

  • Null类型的值只有一个,就是null
  • null值专门用来表示一个空的对象
  • 使用typeof检查一个null值时,会返回object

Undefined未定义

  •  Undefined类型的值只有一个,就是 undefined
  • 当声明一个变量,但是并不给变量赋值时,它的值就是undefined
  • 使用typeof检查一个undefined值时,会返回undefined

 

 

Object对象

以上五种类型属于基本数据类型,基本数据类型都是单一的值,值和值之间没有任何的联系。

如果使用基本数据类型的数据,我们所创建的变量都是独立的,不能成为一个整体。

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。

补充

基本数据类型和引用数据类型

js中的变量都是保存到栈内存中的,

        基本数据类型的值直接在栈内存中存储,

        值与值之间是独立存在,修改一个变量不会影响其他的变量

  

对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟一个新的空间,

而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,

当一个通过变量修改属性值时,另一个也会随着改变。

 如果两个变量保存的是同一个对象引用,一个设置为null,不会影响另一个变量。

当比较两个基本数据类型的值时,就是比较值。

而当比较两个引用数据类型时,它比较的是对象的内存地址,

就算两个对象是一模一样的,地址不同也会返回false。

二、强制类型转换

将一个数据类型强制转换为其他的数据类型

类型转换主要指,将其他的数据类型,转换为String Number Boolean

1、其他数据类型转换为String

方式一:

     调用被转换数据类型的toString()方法

     该方法不会影响到原变量,它会将转换的结果返回

     注意:null和undefined这两个值没有toString()方法,如果调用他们的方法,会报错。

 方式二:

    调用String()函数,并将被转换的数据作为参数传递给函数

    使用String()函数做强制类型转换时,

         对于Number和Boolean实际上就是调用toString()方法

         但是对于null和undefined,就不会调用toString()方法

                   它会将null直接转换"null"

                   将undefined直接转换为"undefined"

方式三(隐式转换):

 任何值和字符串相加都会先转换成字符串,再进行拼接。

           利用此将一个任意数据类型转换为String

           为任意的数据类型 + 一个空串""即可进行转换

           这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数

   

一元运算符

2、其他数据类型转换为Number

方式一:

  使用Number()函数

  • 字符串-->数字
  1. 如果是纯数字的字符串,则直接将其转换为数字
  2. 如果字符串中有非数字的内容,则转换为NaN
  3. 如果字符串是一个空串或者是一个全是空格的字符串,则转换为0                                        

            

  • 布尔值-->数字
  1.  true-->1
  2. false-->0

                  

  • Null-->数字 0
  • Undefined-->数字 NaN

             

 方式二:

    使用parseInt()或parseFloat()函数

    这种方式专门用来对付字符串

  •  parseInt()可以将一个字符串中的有效整数内容取出来,然后转换为Number
  • parseFloat()获得有效的小数
  • 如果对非String使用parseInt()或parseFloat(),它会将其转换为String然后再操作         

注:可以利用parseInt()对小数取整。

方式三(隐式转换):

 任何值做- * / 运算时都会自动转换为Number,利用此特点做隐式的类型转换,通过为一个值- 0 *1  /1来将其转换为Number,实际上它也是调用Number()函数,但是更方便。

           

对非Number类型的值进行一元运算时,同样会将这些值转换为Number然后再运算。(任何值做运算时都会自动转换为Number,利用此特点,为一个值使用+,来将其转换Number)

          

3、其他数据类型转换为Boolean

方式一:

   调用Boolean()函数

  • 数字-->布尔

        除了0和NaN,其余都是true

            

  • 字符串-->布尔

        除了空串,其余都是true

           

  • null和undefined都会转换为false

           

  • 对象也会转换为true

方式二(隐式运算):

 对非Boolean类型的值进行!取反运算时,会将数据类型转换为Boolean然后再运算。利用此特性,两次取反,将任意数据类型转换为布尔值。原理同Boolean()函数一样。

           

补充

其他进制的数字

  1. 在js中,如果需要表示16进制的数字,需要以0x开头
  2. 2进制以0b开头,但不是所有浏览器都支持
  3. 8进制以0开头

使用parseInt()将字符串转为Number时,对于"0xx"这种以0开头的字符串,有些浏览器会当成8进制解析,有些会当成10进制解析。

解决方法: 在parseInt()中传递第二个参数,来指定数字的进制(a = parseInt(a,8);)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值