javascript中算术运算符规则

javascript中提供了几种算术运算符,+(加)  -(减)  *(乘)  /(除)  %(余),常规用法与数学上的一致;  但还规定一些特殊规则:

  注:JavaScript中保存数值的方式,可以保存正零(+0)和负零(-0);正零与负零被认为相等。

乘性操作符(*):

  如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。

  如果某个运算数是 NaN,结果为 NaN。

  Infinity 乘以 0,结果为 NaN

  Infinity 乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity。

  Infinity 乘以 Infinity,结果为 Infinity。

  若果一个数不是数值,则在后台调用Number()将其转换为数值,然后再应用上面规则;

除性操作符(/):

  如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。

  如果某个运算数是 NaN,结果为 NaN。

  Infinity 被 Infinity 除,结果为 NaN。

  Infinity 被任何数字除,结果为 Infinity。

  0 除一个任何非无穷大的数字,结果为 NaN。

  Infinity 被 0 以外的任何数字除,结果为 Infinity 或 -Infinity

  若果一个数不是数值,则在后台调用Number()将其转换为数值,然后再应用上面规则;

取模运算符(%):

  如果被除数是 Infinity,或除数是 0,结果为 NaN。

  Infinity 被 Infinity 除,结果为 NaN。

  如果除数是无穷大的数,结果为被除数。

  如果被除数为 0,结果为 0。

加法运算符(+):

  某个运算数是 NaN,那么结果为 NaN。

  -Infinity 加 -Infinity,结果为 -Infinity。

  Infinity 加 -Infinity,结果为 NaN。

  +0 加 +0,结果为 +0。

  -0 加 +0,结果为 +0。

  -0 加 -0,结果为 -0。

  如果某个运算数是字符串,采用下列规则:

  如果两个运算数都是字符串,把第二个字符串连接到第一个上。

  如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串

减法操作符(-):

  某个运算数是 NaN,那么结果为 NaN。

  Infinity 减 Infinity,结果为 NaN。

  -Infinity 减 -Infinity,结果为 NaN。

  Infinity 减 -Infinity,结果为 Infinity。

  -Infinity 减 Infinity,结果为 -Infinity。

  +0 减 +0,结果为 +0。

  -0 减 -0,结果为 -0。

  +0 减 -0,结果为 +0。

  某个运算符不是数字,那么结果为 NaN。

  

时间: 2024-08-09 05:04:59

javascript中算术运算符规则的相关文章

JavaScript中的运算符

JavaScript中的运算符,JavaScript是具有全范围的运算符,包括算术.逻辑.位.赋值以及其他某些运算符. 计算逻辑位运算赋值杂项 描述符号描述符号描述符号描述符号描述符号 负值-逻辑非!按位取反~赋值=删除deletewww.mlybyby.com 递增++小于<按位左移<<运算赋值oP=typeof 运算符typeof 递减--大于>按位右移>>voidvoid 乘法*小于等于<=无符号右移>>>instanceofinstanc

JavaScript中“typeof”运算符与“instanceof”运算符的差异

在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了.“typeof”是一元运算符,其后直接跟需要进行类型判断的数据:而“instanceof”是二元运算符,其左侧是需要判断的数据,右侧是用于比较的类型. //typeof是一元运算符: var amount = 108; console.log(typeof amout);//控制台输出“numbe

JavaScript学习系列7 -- JavaScript中的运算符

今天,我们来说一说JavaScript中的运算符,首先我们来讲一讲 一元运算符 JavaScript中的一元运算符有以下几种 1. delete delete 运算符主要用于删除对以前定义的对象属性或者方法的引用, 举个例子如下 var myObj = new Object(); // 这一句和 var myobj = new Object(); 等价 myObj.name = "Luke"; alert(myObj.name); // 输出 "Luke" dele

JavaScript中逗号运算符和this

遇到一道题目,写出下面的输出: 结果如下: 第一个是child's name没有问题,第二个指定的也是child,依然是child's name,第三个和第二个实际上是一样的,(parentObj.child=parentObj.child)相当于(parentObj.child),都是函数名,第四个又是什么鬼呢. 逗号运算符是很少见的,查了资料才知道,使用逗号运算符时,先计算左操作数的值,再计算右操作数的值,最后返回右操作数的值.因此,(parentObj.child,parentObj.ch

javascript中关系运算符的说明

决定javascript语法的部分叫做ECMAScript,JavaScript的语法相比较java来说宽松了很多,同时也复杂了很多.在ECMAscript中进行关系符运算时,经常会遇到各种类型转换,大部分的类型转换都是自发的,在应用不同的操作符进行转换时,数据类型的转换又会有所不同. javascript中的关系运算符包括'>','<','>=','<='. 当两个做比较的操作数都是数字的时候,直接进行比较(当然了,这是废话). 当两个操作数都是字符串的时候,比较字符串对应的字符

JavaScript的算术运算符

ECMAScript 定义了 5 个算术运算符,加.减.乘.除.求模(取余).如果在算术运算的值不是数值,那么后台会先使用 Number()转型函数将其转换为数值(隐式转换). 一.加法 var box = 1 + 2; //等于 3 var box = 1 + NaN; //NaN,只要有一个 NaN 就为 NaN var box = Infinity + Infinity; //Infinity var box = -Infinity + -Infinity; //-Infinity var

javascript中new运算符

创建一个用户自定义的对象需要两步: 1.通过编写函数,来定义对象类型. 2.通过new来创建对象实例. new的工作流程: 1.创建一个空对象(var obj = {};) 2.使该空对象继承于构造函数的原型(obj.__proto__ = Foo.prototype;) 3.使用指定的参数调用构造函数 Foo ,并将 this 绑定到新创建的对象.(Foo.call(obj, x, y, z);) 4.由构造函数返回的对象就是 new 表达式的结果.如果构造函数没有显式返回一个对象,则使用步骤

JavaScript中instanceof运算符的用法以及和typeof的区别

instanceof : 为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型栗子①: <script type="text/javascript"> var aColors = ["red", "green", "blue"]; alert(typeof aColors[0]); //output "string" alert(aColors[0] inst

javaScript中&quot;==&quot;和&quot;===&quot;运算符的区别

相同点: 两个运算符均可用于比较两个值是否相等,可允许操作任意类型的操作数,如果操作数相等则返回true,否则返回false. 不同点: "==="运算符也称为严格相等运算符,它用来检测两个操作数是否严格相等.该运算符首先计算其操作数的值,然后比较这两个值,比较过程中并不会首先对操作符进行任何类型转换. "=="运算符称为相等运算符,用来检测两个操作数是否相等,这里“相等”的定义非常宽松,可以允许进行类型转换.相等运算符"=="和"==