JavaScript高级程序设计总结——基本类型和对象类型

315 阅读5分钟
1.JavaScript简介

JavaScript是一种专门为网页交互设计的脚本语言,由下列三个不同的部分组成:

  • ECMAScript: 由ECMA-262定义,提供核心语言功能;
  • 文档对象模型(DOM):提供访问和操作网页内容的方法和接口;
  • 浏览器对象模型(BOM):提供与浏览器交互的方法和接口;
2.标识符

所谓标识符,就是指变量,函数,属性的名字,或者函数的参数。标识符可以是按照下列格式规则组合起来的一个或多个字符。

  • 第一个字符必须是一个字母,下划线,或一个美元符号;
  • 其他字符可以是字母,下划线,美元符号或数字。
3.typeof操作符

对一个值使用typeof操作符可能会返回下列某个字符串:

  • “undefined” 这个值未定义
  • “boolean” 这个值是布尔值
  • “string” 这个值是字符串
  • “number” 这个值是数值
  • “object” 这个值是对象或者null
  • “function” 这个值是函数
4.undefined

未经初始化的变量就会默认为undefined,主动赋值为undefined的值,它们在typeof检测的时候没有任何区别。但alert的时候一个会报错,另一个不会。

5.null

1.从逻辑角度看,null值表示一个空对象指针,使用typeof时会返回object。

2.实际上undefined是派生自null值的,所以null==undefined

3.没有必要将一个变量赋值为undefined,但如果变量将要保存为对象,就应该赋值为null

6.Boolean类型

1.可以调用Boolean()将任何类型的值变为Boolean类型的值

2.转换为false的其他类型的值有

  • 空字符串
  • null
  • undefined
  • 0和NaN
7.Number类型
  1. 0.1+0.2不等于0.3,永远不要测试浮点数的数值。

  2. Infinity(正无穷)和-Infinity(负无穷),可以使用i是Finite()函数来检测,这个函数在位于负无穷和正无穷之间时会返回true

  3. NaN,任何数值除以0都会返回NaN.其次,NaN与任何值都不相等,包括NaN自身。isNaN()函数,任何不能被转换为数值的值都会返回true,否则返回false

8.数值转换

有三个函数可以把非数值转换为数值:Number(),parseInt()和parseFloat().第一个函数Number()可以用于任何数据类型,另两个函数则专门把字符串转换为数值。

Number()函数的转换规则如下:

  • Boolean值:true为1,false为0
  • null 为0
  • undefined为NaN
  • 字符串:
    • 如果字符串只包含数字,则“1”变成1,“123”变成123.“011”变成11,前面的0被省略了。
    • 如果字符串中包含有效的浮点格式,如“1.1”,则将其转换为对应的浮点数值(同样,也会忽略前导零);
    • 如果字符串中包含有效的浮点格式,如“0xf”,则将其转换为对应的十进制整数值。
    • 如果字符串为空,则为0.
    • 如果字符串包含有上述格式之外的字符,则将其转换为NaN.
  • 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。

parseInt()函数:

  • parseInt函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的字符,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号,就会返回NaN.
  • 为了消除在使用parseInt()函数时可能导致的问题,可以为这个函数提供第二个参数:转换时使用的基数(即多少进制)。

parseFloat()函数:

  • 从第一个字符开始解析每个字符,直至遇见一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了。
  • 由于parseFloat()只解析十进制值,因此它没有用第二个参数指定基数的用法。
  • 如果小数点后面为0,则parseFloat返回整数。
9.String类型

1.字符字面量

String数据类型包含一些特殊的字符字面量,也叫转义字符,用于表示非打印字符。

10.转换为字符串
const example = {
    a: 100
}
console.log(example.toString()); //[object Object]
console.log(example.valueOf());// {a: 100}
console.log(example);// {a: 100}
11.toString()

数值,布尔值,对象和字符串值都有toString()方法。但null和undefined值没有这个方法。

在调用toString()方法时,可以传递一个参数:输出数值的基数。通过传递基数,toString()可以输出以二进制,八进制,十六进制,乃至其他任何有效进制格式表示的字符串值。

12.String()

在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。遵循以下规则:

  • 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果。
  • 如果值是null,则返回“null”
  • 如果值是undefined,则返回“undefined”
13.Object类型

ECMAScript中的对象其实就是一组数据和功能的集合。

Object的每个实例都具有下列属性和方法:

  • Constructor: 保存着用于创建当前对象的函数。
  • hasOwnProperty(propertyName): 用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
  • isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型。
  • toLocaleString():返回对象的字符串显示,该字符串与执行环境的地区对应。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象的字符串,数值或布尔值表示。