数据类型、函数

5种简单数据类型:
    Undefined  
         |--Undefined只有一个值undefined,声明变量但未对其加以初始化时为undefined。实际上undefined值是派生自null,因此ECMA-262规定他们的相等性测试为true。

    Null 
         | --  只有一个值null,从逻辑角度来看,null值表示一个空对象指针,因此使用typeof进行检测时会返回"object"。如果定义的变量准备用来保存对象,最好初始化为null,这样可以通过判断这个对象是否为null来知道是否保存了一个对象的引用。

    Boolean
         | --只有两个字面值,true和false,这两个值与数字值不是一回事,因此true不一定等于1,false也不一定等于0.Boolean类型的字面值true和false是区分大小写的。 
         |--类型转换规则

 Number 
         |--这种类型使用IEEE754格式来表示整数和浮点数值。不要测试某个特定的浮点数值。
         |--NaN (Not a Number)非数值,表示一个本来要返回数值的操作数未返回数值的情况,如除零操作。
              |--NaN的特点:
                   |--任何涉及NaN的操作都会返回NaN
                   |--NaN和任何值都不相等,包括NaN本身。
                   |--ECMAScript定义了isNaN()函数,可以判断参数是否非数值:
  |--数值转换方法
              |--Number() //任何类型
              |--parseInt() //将字符串转成整型
              |--parseFloat //将字符串转成浮点型
                   |--Number()函数转换规则:
|--如果是Boolean值true和false会分别被转换成1和0
|--null值返回0
|--undefined返回NaN
|--如果字符串只包含数字或者进制数或浮点数,则会将其转换成对应的十进制数或浮点数
|--如果字符串为空则返回0
|--如果字符串包含除上述格式之外的字符,则将其转换成NaN
|--如果传入的是对象,则调用valueof()方法,依照以上规则转换成返回值。如果转换的结果是NaN,则调用对象的toString()方法,然后重新转换。

String
        |--String 类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。
        |--字符串是不可变的
        |--toString():除了null和undefined值以外都有该方法,数值类调用该方法时可以传入进制数,默认十进制。
1种复杂数据类型:Object(由一组无序的名值对组成的)
         |--一组数据和功能的集合,是所有对象的基础          var obj = new Object();
         |--属性和方法:
              |--Constructor:保存用于创建当前对象的函数。以上面的方法为例,构造函数(constructor)就是Object();
              |--hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中propertyName必须以字符串的形式指定。
              |--isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型。
              |--propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。与hasOwnProperty()方法一样,propertyName必须以字符串形式指定。
              |--toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
              |--toString():返回对象的字符串表示。
              |--valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()返回的值相同。     
              |--replace():
typeof
    |--检测给定变量的数据类型
         |--"undefined" ——如果这个值未定义
         |--"boolean" ——如果这个值是布尔值
         |--"string" ——如果这个值是字符串
         |--"number" ——如果这个值是数值
         |--"object" ——如果这个值是对象或null
         |--"function" ——如果这个值是函数
   |--typeof 操作符的操作数可以是变量,也可以是数值字面量
         |--typeof对未声明和未初始化的变量都会返回undefined,因此如果显示地初始化变量依然是明智的选择,可以以此来判断变量是否已经声明。
函数:
    |--理解参数
         |--ECMAScript函数的参数和大部分语言中函数的参数有所不同。ECMAScript不介意传进来参数的个数和类型。原因是因为参数在内部是以数组的形式来表示的,函数始终接受该数组,而不在乎数组内包含什么参数。在函数体内可以通过arguments对象访问参数数组,从而获得函数的每一个参数。
         arguments与数组类似,但是并不是Array的实例。但是可以使用方括号访问每个元素,也可以使用length属性确定参数个数。arguments的行为有一点很有意思,就是他的值永远和对应的命名参数的值保持同步。修改arguments的值会自动反映到对应命名参数,但是这两个值的内存空间是独立的,但值会同步。然而这种影响是单向的:修改命名参数不会修改对应arguments中的值。arguments对象的长度是由传入的参数个数决定的。
         最后一点就是,没有传递的命名参数将自动被赋予undefined值。
 ECMAScript函数没有重载,如果有两个名字相同的函数,则改名字只属于后定义的函数。

你可能感兴趣的:(js)