JS 数据类型与运算符

以下内容均整理自:廖雪峰老师的JS教程

非常感谢廖老师!

统一使用var声明即可,JS会自动判断类型。

数据类型

1. Number

JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型:

123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

2. 字符串

字符串是以单引号’或双引号"括起来的任意文本,无结束字符,比如:字符串'abc'只有abc这3个字符。

3. 布尔值

一个布尔值只有truefalse两种值

4. null

null表示一个“空”的值,它和0以及空字符串''不同,0是一个数值,''表示长度为0的字符串,而null表示“空”

5. undefined

表示“未定义”,即变量未赋值之前的状态。仅仅在判断函数参数是否传递的情况下有用。

6. 数组

JavaScript的数组**可以包括任意数据类型**。
另外有两种创建数组方式:

  • var arr =[1,2,'哈哈',null,true] ;
  • new Array(1,2,'哈哈',null,true);

7. 对象

JavaScript的对象是一组由**键-值**组成的无序集合,例如:

var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
};

要获取一个对象的属性,我们用对象变量.属性名的方式:

person.name; // 'Bob'
person.zipcode; // null

运算符

运算符大致与Java的运算符都一致,包括短路运算符等操作。不过,也有一些需要注意的:

  • 要特别注意相等运算符==。JavaScript在设计时,有两种比较运算符:

第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较
由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。

  • 另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:

NaN === NaN; // false,唯一能判断NaN的方法是通过isNaN()函数:isNaN(NaN); // true

  • 最后要注意浮点数的相等比较:

如:1 / 3 === (1 - 2 / 3); // false,这不是JavaScript的设计缺陷。浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

原文地址:https://www.cnblogs.com/tfxz/p/12823672.html