JS.数据类型和运算符

JavaScript中有5中数据类型:underfined、null、boolean、number、string,还有一种数据类型——object,object本质上是一组无序的名值对组成的。

typeof操作符、

介于JavaScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof是负责提供者方面信息的操作符,对于一个值使用typeof操作符可能返回下面某个字符串:

underfined——如果这个值未定义、Boolean——如果这个值是布尔值、number——如果这个值是数值、string——如果这个值是字符串、object——如果这个值是对象或null、

function——如果这个值是函数

数据类型:1.underfined类型

        underfined类型只有一个值,即特殊的underfined。在使用var声明变量但未对其加以初始化时,这个变量的值就是underfined。

     2.null类型

        null类型是第二个具有一个数据类型,这个特殊的值就是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回object的原因

        实际上,underfined值是派生自null的值,因此ECMA-262规定对他们的相等性测试要返回true

        尽管underfined和null有这样的关系,但他们的用图完全不同。无论在什么情况下都没有必要把一个变量的值显示的设置为underfined,可是同样的规则对null却不适用,

        换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确的让变量保存null值,这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和underfined。

     3.Boolean类型

        Boolean类型只有两个值,true和false。这两个值与数字值不是一回事,因此true不一定等于1,false不一定等于0.。虽然Boolean类型的字面值只有两个值,但JavaScript中所有类型的值,

        都有与这两个布尔类型等价的值,要将一个值转换为其对应的布尔值,可以调用类型转换函数Boolean()

     4.number类型

      这种类型用来表示浮点型和整数形,还有一种特殊的类型NaN(非数值NoN a number),这个值用来表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。

      (例:在其他语言中,任何数除以0都会发生错误,而在JavaScript中任何数除以0都会返回NaN),因此不会影响其它代码是正常运行。

       NaN本身有两个非同寻常的特点:1.任何发生NaN的操作都会都会返回NaN值,这个特点可能在多步计算中有可能导致问题。2.NaN值与任何值都不相等,包括NaN本身。

      在JavaScript中有一个isNaN()函数,这个函数接受一个参数,该参数可以使任何类型。某些不是数值的值在isNaN()接受之后会转换成数值。

      有三个函数可以把非数值转换为数值 number()、parseint()、parsefloat()。第一个函数可以用于任何数据类型,另外两个函数则专门用于把字符串转换成数值,这三个函数对于

      同样的输入会返回不一样的结果。

        number()函数转换的规则如下:如果是布尔值,true和false分别被转换为0和1

                         如果是数字值,只是被简单传入和返回

                         如果是null,则返回0

                          如果是underfined,则返回NaN

                         如果是字符串,则遵循如下规则:1.如果字符串只包含数字,则转换成为十进制。

                                       2.如果字符串包含有效浮点数,则转换为相应的浮点数

                                       3.如果字符串包含有效的十六进制数,则转换为相同大小的十进制整数型。

                                       4.如果字符串是空,则转换成0

                                       5.如果字符串包含了上述之外的字符,则返回NaN

                        如果是对象,则调用对象的valueof()方法,然后依照前面的规则转换成返回值。如果返回的结果是NaN,则调用对象的tostring()方法,然后在依次按照

                        前面的规则转换返回的字符串值。

      由于number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是paresint()函数。parseint()函数在转换成字符串时,更多的是看其是否符合数值模式。他会忽略

      字符串前面的空格,直到找到第一个非空格字符。如果第一个字符串不是数字字符或者负号,paresint()会返回NaN。如果第一个字符串是数字字符,则paresint()函数就会继续解析第二个字符,

      直到解析完所有后续字符或者遇到一个非数字字符。

      如果字符串的第一个字符是数字字符,paresint()也能够识别出各种整数格式(即十进制、八进制、十六进制)

      5.string类型

       string类型用于表示由0或多个16位Unicode字符组成的字符序列,,即字符串。字符串可以由单引号(‘’)或双引号(“”)表示。

       任何字符串的长度都可以通过访问其length属性取得

       要把一个值转换为字符串有两种方式:1.几乎每个值都使用的tostring()方法。数值、布尔值、字符串、对象,都使用tostring()方法,但null和underfined没有这个方法。

          多数情况下,调用tostring()方法不必传递参数,但是在调用数值的tostring()方法时,可以传递一个参数:输出数值的基数。

       在不知道转换的值是不是null或underfined的情况下,还可以使用转换型函数string(),这个函数可以将任何类型的数值转换为字符串。

        string()函数遵循如下规则:1.如果值有tostring()方法,则调用该方法(没有参数)并返回相应的结果

                       2.如果是null,则返回“null”

                       3.如果是underfined,则返回“underfined”

    5.object类型

     对象其实就是一组数组和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建object类型的实例并为其添加属性和方法,就可以创建自定义方法。

      object的每个实例都具有下列属性和方法:1.constructor——保存着用于创建对象的函数

                         2.hasOwnproperty(propertyname)——用于检查给定的属性在当前对象实例中(而不是实例的原型中)是否存在。其中,作为参数的属性名(propertyname)必须以字符串的形式存在。

                         3.isPrototypeOf(object)——用于检查传入的对象是否是另一个对象的原型

                         4.propertyisEnumberable(propertyName)——用于检查给定的属性是否是否能够使用for-in语句来枚举

                         5.tostring()——返回对象的字符串表示

                         6.valueOf()返回对象的字符串、数值、布尔值表示。通常与tostring()方法的返回值相同

猜你喜欢

转载自www.cnblogs.com/jacky912/p/10333630.html