JavaScript 运算
2011年04月01日
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;
发表评论
-
Firefox插件开发概述
2012-01-20 01:03 930Firefox插件开发概述 2011年02月15日 本文 ... -
思考mysql内核之初级系列10---mysql内核调试方法(摘自老杨)
2012-01-20 01:03 607思考mysql内核之初级系列10---mysql内核调试方法( ... -
windows server 2003 下项目配置步骤
2012-01-20 01:03 668windows server 2003 下项目 ... -
Microsoft SharePoint Portal Server 2001简介
2012-01-20 01:03 463Microsoft SharePoint Portal Ser ... -
PE文件格式详解(上)
2012-01-20 01:03 646PE文件格式详解(上) 2010 ... -
中国各省美丽女孩分析
2012-01-19 08:52 603中国各省美丽女孩分析 2010年10月24日 关于美女的 ... -
论文范例
2012-01-19 08:52 470论文范例 2010年08月14日 ... -
大同美女
2012-01-19 08:52 1062大同美女 2011年03月10日 ... -
老外眼中中国女性:眼光高野心大
2012-01-19 08:52 484老外眼中中国女性:眼光 ... -
全国各地的美女都是怎样的?
2012-01-19 08:51 625全国各地的美女都是怎样的? 2011年05月13日 全 ... -
Android 环境搭建、HelloWorld以及常见错误处理
2012-01-17 01:21 709Android 环境搭建、HelloWorld以及常见错误处理 ... -
使用Eclipse+CDT+MinGW32进行C++开发
2012-01-17 01:21 708使用Eclipse+CDT+MinGW32进行 ... -
[转]win7搭建Android开发 个人测试成功
2012-01-17 01:21 618[转]win7搭建Android开发 个人测试成功 2011 ... -
vb 编写的qq查询交谈工具源码
2012-01-15 20:03 581vb 编写的qq查询交谈工 ... -
vb QQ消息辅助连发软件代码(vb)
2012-01-15 20:02 1771vb QQ消息辅助连发软件代码(vb) 2009年12月27 ... -
手把手教你用vb6.0写一个桌面网址小软件
2012-01-15 20:02 688手把手教你用vb6.0写一个桌面网址小软件 2009年11月 ... -
QQ日志刷人气工具 VB源码
2012-01-15 20:02 698QQ日志刷人气工具 VB源码 2010年01月20日 ' ... -
VB编程
2012-01-15 20:02 442VB编程 2010年05月13日 正在工作中 ... -
判断数字字符8位
2012-01-11 12:12 684判断数字字符8位 2011年04月01日 //判断是否是 ... -
oa之歌-咸鱼凤凰-iteye技术网站
2012-01-11 12:12 624oa之歌-咸鱼凤凰-iteye技术网站 2011年04月01 ...
相关推荐
JavaScript实现检验除法运算JavaScript实现检验除法运算JavaScript实现检验除法运算JavaScript实现检验除法运算JavaScript实现检验除法运算
JavaScript常用运算符和操作符总结(教辅).pdf
jsFloatMath JavaScript库,用于数学运算,包括十进制数字有两种方法, 1> addFloat(array)传递要在数组中相加的数字2>乘法Float(array)传递要在数组中相乘的数字建立新物件var floatJs = require('decimal-...
,先算乘方,再算乘除,最后算加减 ,有括号,先算括号里面的,同一级运算按照从左到右的顺序依次进行 这一点所有的程序设计语言都采取数学中数字的计算顺序。当然程序设计语言中还有一些不同于数学中的运算符。那...
此函数是我自己写的,虽然在网上可以搜到很多,不过我找到的都是在算法中存在基本的浮点数的运算,导致结果仍然是错误的。由于刚刚学写JS,所以可能考虑不够周全,望大家批评指正。 代码中加了四舍五入函数,是网上...
使用HTML5、CSS3和JavaScript实现加、减、乘、除四个基本算术运算操作。
javascript float运算会有误差,可以用此脚本中的函数进行修补。
JavaScript中极易出错的操作符运算总结 目录 算术运算符 非正常情况1: 有特殊值字面量参与的运算非正常情况2: 其他类型的数据参与数学运算。比较运算符 非正常情况1: 特殊值参与比较运算非正常情况2: 其他数据...
进行特别大的数的加减运算,可以使用字符串+科学记数法的方法来进行,如: 代码如下: // 这里只考虑大整数的情况,不考虑小数 function strAdd(sNum1, sNum2){ /*增加一位数位以记录最高位进一的情况*/ var ...
JavaScript中的数学运算介绍.docx
用javascript做的一个简单计算器,可以直接运算,然后按回车直接运算。 例如:直接输入运算式 1+2 按回车,输出 1+2=3
Javascript提供了丰富的运算功能,包括算术运算、关系运算、逻辑运算和连接运算。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。本文...
在编写代码时我们有时候会碰到需要自己解析四则运算表达式的情况,本文简单的介绍使用JavaScript实现对简单四则运算表达式的解析。 一、熟悉概念 中缀表示法(或中缀记法)是一个通用的算术或逻辑公式表示方法, ...
var num1 = prompt('请输入第一个数:'); var re = prompt('请输入你要进行的运算符:'); var num2 = prompt('请输入第二个数:'); function getSum(num1,re,num2,) { switch (re) { case '+': ...
用Javascript实现一个基本的运算器,具体内容如下 使用表格布局,JS添加事件 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>计算器</title> </...
Javascript 和大部分语言一样在浮点数运算时,经常出现精度丢失的问题,由于现在的大量Web项目经常涉及到货币计算或数学高级计算,此插件提供简单浮点运算,浮点存储格式符合IEEE754计算机
使用Javascript的功能性质执行基本矩阵运算的Javascript库 用法 var a = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] var A = matrix ( a ) ; 运作方式 1.身份 A ( ) ; //returns [[1, 2, 3], [4, 5, 6], [7...
以下是使用JavaScript实现相关系数(Correlation Coefficient)运算的示例代码: 使用该函数,可以传入两个数组作为参数,返回它们的相关系数值。例如: javascript Copy code const arr1 = [1, 2, 3, 4, 5]; const...
javascript写的计算器,解决的JavaScript小数运算精度的损失