js的运算
1.表达式
表达式是EMCAscript中的一个“短语”,解释器会通过计算把它转换成一个值。最简单的表达式是字面量或者变量名。
2.前置递增(++box)和后置递增(box++)的区别
看下面一段代码的实现过程:
var box = 100; alert(box++); // 100 box = box+1;先执行打印box,再赋值,100 + 1 = 101 alert(++box); // 102 box = 1+box;先赋值,再打印box, 101 + 1 = 102 age = box++; height = ++box; alert(age); //102 alert(height); //104
对比一下是不是这样:
var box = 100; age = box++; alert(age); //100
var box = 100; age = ++box; alert(age); //101
3.++号的隐含的Number的转换
3.1字符串
var box = '89'; var box1 = 'lc'; alert(typeof box); //string alert(typeof box1); //string age = ++box; age1 = ++box1; alert(typeof box); //number alert(typeof box1); //number alert(typeof age); //number alert(age1); //NaN alert(typeof age1); //number
3.2 Boolean
var box1 = false; box1++; //将false转换成0,0+1=1 alert(box1); // var box2 = true; box2++; //将true转换成1, 1+1=2 alert(box2); //2
3.3对象Object
var box= {}; alert(box); //[object object] box++; alert(box); //NaN box = { toString:function(){ return '123' } } alert(typeof box); //object box++; alert(box); //124 alert(typeof box); //number var box1 = { toString :function(){ return 'lc' } }; box1++; alert(box1); //NaN alert(typeof box1); //number
4+号也有这样的功能;但是注意一点
var box = '100'; +box; //这样并不能改变变量,变量也是不能改变,只能消掉重新创建变量。(这是底层原理) alert(box); //100 alert(typeof box);//stringalert(typeof +box);//number
4.1+号对string的转换
var box = false; alert(typeof box);//boolean alert(+box); //0 alert(typeof +box); //number var box1 = true; alert(+box1);//1
4.2Object
var box = {};//+box表正数,-box表示负数 alert(box);//[object object] alert(typeof box); //object alert(+box); //NaN alert(typeof +box);//number var box1 = { toString:function(){ return '123' } }; alert(+box1);//123 alert(typeof +box1); //number
5运算
var box = 1 +NaN; alert(box);//NaN var box1 = 100 + '100'; alert(box1);//100100 alert(typeof box1);//string 运算规则是:number和string的运算有一个string,‘+’号就会变string的连字符
5.()括号强制优先级
var age = '年龄:'+10+20; alert(age);//年龄:1020 var age = '年龄:'+(10+20); //括号强制优先级 alert(age);//年龄:30
6.number 和object
var box = 10 + {}; alert(box); //10[object object] alert(typeof box);//string 很奇怪 var box = 10 + { toString:function(){ return '20'; } }; alert(box);//1020 alert(typeof box);//string var box = 10 = { toString:function(){ return 20; } }; alert(box);//30 alert(typeof box);//number
其他的运算转换,以后补充
js的运算的更多相关文章
- js赋值运算的理解
简介 js引擎由于为了效率,很多时候的非直接量赋值都不是copy一份在赋值给新的变量,而是一个引用 ps:直接量:直接值数字字符串等 为什么使用len = doms.length; 里的len效率要比 ...
- JS浮点数运算Bug
JS浮点数运算Bug的解决办法(转) 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.0849999 ...
- js浮点数运算需要注意的问题
最近在js运算浮点数时发现了一个问题.问题是这样的:js函数中处理两个浮点数的相加,为了防止出现0.1+0.2=0.30000000000000004的问题,两个数都先乘以10000后再相加,得到结果 ...
- 通过一张简单的图,让你彻底地搞懂JS的==运算
大家知道,JavaScript中的==是一种比较复杂运算,它的运算规则很奇怪,很容易让人犯错,从而成为JavaScript中“最糟糕的特性”之一. 在仔细阅读ECMAScript规范的基础上,我画了一 ...
- 一道JS 连续赋值运算的问题
原文链接:https://www.cnblogs.com/joesbell/p/6229423.html <script> var a = {n:1}; var b = a; a.x = ...
- js浮点数运算封装, 起因财务部分精确计算
目录 背景 具体代码 背景 项目中用到浮点数,Int 等 js中 Number类型比较多, 加上牵涉到财务软件, 前台js运算等. 有时候会出现精确度的问题 , 公共方法中有好事者写的方法. 此处拿来 ...
- 【转】JS浮点数运算Bug的解决办法
37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一 ...
- JS小数运算失精度的问题
JS因为是解释性语言,在运算中会有丢失精度的问题,这种现象多出现在浮点型运算的情况下. 例如 5.11 * 100 得到的结果是 511.00000000000006 这种情况尤其是在处理金额的时候 ...
- JS位运算和遍历
JS位运算符 整数 有符号整数:允许使用正数和负数,第32位作为符号位,前31位才是存储位 无符号整数:只允许用正数 如果用n代表位 位数 = 2^n-1 由于位数(1.2.4.8.16...)中只有 ...
- js的运算小数点的问题
问题这样的: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这 ...
随机推荐
- Geronimo应用服务器和MySQL数据库服务器
就是Web 2.0的全部,尽管该术语出现才几乎一年的时间,但现在好像只有烹饪杂志还没有加入到讨论Web 2.0未来出路的行列中.自从出现了里程碑式的文章"What Is Web 2.0:De ...
- Lucene实战(第2版)》
<Lucene实战(第2版)>基于Apache的Lucene 3.0,从Lucene核心.Lucene应用.案例分析3个方面详细系统地介绍了Lucene,包括认识Lucene.建立索引.为 ...
- Java下利用Jackson进行JSON解析和序列化
Java下利用Jackson进行JSON解析和序列化 Java下常见的Json类库有Gson.JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行 ...
- OpenSSL使用方法
生成CA (勾选Generate Self Signed Certificate)openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout & ...
- Powershell的内置变量
ls Variable: Name Value Description $ ? TRUE Status of last command ^ args System.Object ...
- linux下IPTABLES配置
如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables - ...
- 连连看的设计与实现——四人小组项目(NABCD)
小组名称:天天向上 成员:王森.张政,张金生,栾骄阳 题目:连连看游戏 NABCD N(需求) 游戏最大的乐趣在于玩法,我们要想在众多的连连看游戏当中脱颖而出,就需要增加更多富有乐趣.吸引用户的玩法. ...
- OC学习笔记——类别(Category)
类别,有些程序员又称之为分类. 类别是一种为现有的类添加新方法的方式,尤其是为系统的做扩展的时候,不用继承系统类,可以直接为类添加新的方法.也可以覆盖系统类的方法. 如: @interface NSO ...
- Gitolite配置管理和GIT基本操作
简述公司版gitolite的项目配置与管理 1. 基于秘钥对的管理 1.1 客户端(需要访问代码库的机器)生成秘钥对,采用RSA加密ssh-keygen -t rsa -f path_to_store ...
- 龙珠 超宇宙 [Dragon Ball Xenoverse]
保持了动画气氛实现的新时代的龙珠视觉 今年迎来了[龙珠]系列的30周年,为了把他的魅力最大限度的发挥出来的本作的概念,用最新的技术作出了[2015年版的崭新的龙珠视觉] 在沿袭了一直以来优秀的动画世界 ...