`
Lewiss
  • 浏览: 19595 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaScript 运算

阅读更多
0. Boolean 运算符
    注意,逻辑 NOT 运算返回的一定是 Boolean 类型的值,而逻辑 OR 和 逻辑 AND 运算则不一定。

逻辑 NOT 运算行为如下所示:
    如果运算数是对象,返回 false;
    如果运算数是数字 0,返回 true;
    如果运算数是数字 0 以外的任何数字,返回 false;
    如果运算数是 null,返回 true;
    如果运算数是 NaN,返回 true;
    如果运算数是 undefined,返回 true(JavaScript 高级程序设计中说发生错误?)。

逻辑 AND 运算的运算数可以是任何类型,不止是 Boolean 值。如果某个运算数不是原始的 Boolean 值,那么 AND 运算不一定返回 Boolean 值。其运算行为如下:
    如果一个运算数是对象,另一个是 Boolean 值,返回该对象;
    如果两个运算数是对象,返回第二个对象;
    如果某个运算数是 null,返回 null;
    如果某个运算数是 NaN,返回 NaN;
    如果某个运算数是 undefined,返回 undefined(JavaScript 高级程序设计中说发生错误?);

与逻辑 AND 运算相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算不一定返回 Boolean 值,此时其运算行为如下:
    如果一个运算数是对象,另一个是 Boolean 值,返回该对象;
    如果两个运算数是对象,返回第一个对象;   
    如果某个运算数是 null,返回 null;
    如果某个运算数是 NaN,返回 NaN;
    如果某个运算数是 undefined,返回另外一个数(JavaScript 高级程序设计中说发生错误?);


1. 乘性运算包括乘法运算、除法运算和取模运算三种运算,这些运算方式与 Java 等语言中的运算方式相似,不过它们还具有一些自动类型转换功能。

2. 乘法运算行为规则
    如果运算数都是数字,执行常规乘法运算。如果结果太大或太小,那么生成的结果就是 Infinity 或 -Infinity;
    如果某个运算数是 NaN,结果为 NaN;
    Infinity 乘以 0,结果为 NaN;
    Infinity 乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity,由第二个运算数的符号决定;
    Infinity 乘以 Infinity,结果为 Infinity

3. 除法运算行为规则
    如果运算数都是数字,执行常规除法运算。如果结果太大或太小,那么生成的结果就是 Infinity 或 -Infinity;
    如果某个运算数是 NaN,结果为 NaN;
    Infinity 被 Infinity 除,结果为 NaN;
    Infinity 被任何数字除(包括 0),结果为 Infinity;
    0 除以一个非无穷大的数字,结果为 Infinity(JavaScript 说是 NaN ?);
    Infinity 被 0 以外的任何数字除,结果为 Infinity 或 -Infinity,由第二个运算数的符号决定;
   
4. 取模运算行为规则
    如果运算数都是数字,执行常规的算术除法运算,返回除法运算的到得余数;
    如果被除数是 Infinity,或者除数是 0, 结果为 NaN;
    Infinity 被 Infinity 除,结果为 NaN;
    如果除数是无穷大的数,结果为被除数

5. 加性运算包括加法运算和减法运算。

6. 加法运算行为规则
    如果两个运算数都是数字,则执行常规加法运算;
    如果某个运算数是 NaN,结果为 NaN;
    Infinity 加 Infinity,结果为 Infinity;
    -Infinity 加 -Infinity,结果为 -Infinity;
    Infinity 加 -Infinity,结果为 NaN;
    +0 加 +0,结果为 +0;
    -0 加 +0,结果为 +0;
    -0 加 -0,结果为 -0;
    如果两个运算数都是字符串,把第二个字符串连接到第一个字符串上;
    如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串。

7. 减法运算行为规则
    如果两个运算数都是数字,则执行常规减法运算;
    如果某个运算数是 NaN,结果为 NaN;
    Infinity 减 Infinity,结果为 NaN;
    -Infinity 减 -Infinity,结果为 NaN;
    Infinity 减 -Infinity,结果为 Infinity;
    -Infinity 减 Infinity,结果为 -Infinity;
    +0 减 +0,结果为 +0;
    -0 减 +0,结果为 -0;
    +0 减 -0,结果为 +0;
    -0 减 -0,结果为 +0;
    如果某个运算数不是数字(不能解析为数字?),结果为 NaN。

8. 关系运算
    即执行两个数比较的运算,比较方式与算术比较方式相同,每个关系运算都返回一个 Boolean 值(与乘性运算、加性运算不同)
    如果两个运算数都是字符串,则按字符串顺序进行比较;
    如果一个运算数是数字而另一个是字符串, ECMAScript 尝试把字符串解析为数字再进行比较,如果解析返回结果是 NaN,那么最终比较结果为 false,任何包含 NaN 的关系运算都返回 false
   
9. 等性运算
    ECMAScript 有两种运算机制处理等性运算,其中等号和非等号用于处理原始值,全等号和非全等号用于处理对象。

10. 等号和非等号运算时可能的类型转换
     如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0, true 转换成 1;
    如果一个运算数是字符串,另一个是数字,尝试把字符串转换成数字;
    如果一个运算数是对象,另一个是字符串,尝试把对象转换成字符串;
    如果一个运算数是对象,另一个是数字,尝试把对象转换成数字;
    值 null 和 undefined 相等;
    不能把 null 和 undefined 转换成其它值;
    如果某个运算数是 NaN,等号运算返回 false,非等号返回 true(即使两个运算数都是 NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN);
    如果两个运算数都是对象,那么比较的是它们的引用值,如果它们指向同一个对象,那么等号返回 true,否则返回false。示例:
    

11. 全等运算时不做类型转换的运算,只有在无需做类型转换两个运算数比较相等时返回 true,否则返回 false。

12. 条件运算,与 Java 运算方式相同。

13. 赋值运算,与 Java 运算方式相同。

14. 逗号运算,在一条语句中执行多个运算。如声明 var a = 1, b = 2, c = 3;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics