码迷,mamicode.com
首页 > 其他好文 > 详细

权威指南学习心得之运算符和表达式

时间:2015-12-10 16:38:24      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

1、数组

数组直接量中的列表逗号之间的元素可以忽略,这是省略的空位自动填充值undefined,元素列表结尾处可以留下单个逗号,这时并不会创建一个新的值undefined

2、操作符

技术分享

属性访问和函数调用排在最高级

一元操作符、赋值、三元条件运算符都具有从右到左的结合特性。

+ 加法运算符的转换规则优先考虑字符串连接,如果其中一个操作数是字符串或者转换为字符串的对象,则另外一个操作数也转换为字符串,加法将进行字符串的连接操作。如果两个操作数都不是类字符串,那么将进行算术加法运算

1、如果其中一个操作数为对象,则对象会遵循对象到原始值的转换规则转换为原始类值:日期对象通过toString()方法进行转换,其他对象则通过valueOf()方法进行转换(如果valueOf能返回一个原始值的话),由于多数对象不具有可用的valueOf方法,因此它们通过toString()方法进行转换。

2、在进行对象到原始值的转换后,如果其中一个操作数是字符串的话,则另一个操作数也转换为字符串,然后进行字符串连接

3、否则两个操作数都进行数字转换(或者NaN),然后进行加法操作

1+2 //3

"1"+"2" //"12"

1+"2" //"12"

1+{} //"1[object object]"

true+true //2

2+null //2,null转化为0 

2+undefined //NaN undefined转化为NaN后相加

== 相等 可以进行类型转换 对象只能等于对象本身,与其他任何对象不相等

===严格相等 不进行类型转换 

1、如果两个类型不相同,则它们不相等

2、如果两个值都是null或者都是undefined,则它们不相等

3、如果两个值都是false或者true,则它们相等

4、如果一个值为NaN,或者两个值都是NaN,则它们不相等,NaN与其他任何值都不相等,包括它自身,可以通过x!==x来判断NaN,只有x为NaN值,这个表达式的值才为true

5、如果两个数都是数字且数值相等,则它们相等,如果一个为0,两一个为-0,则它们相等

6、如果两个值都为字符串,且所含的对应位上的16位数完全相等,则它们相等,如果它们的长度或内容不同,则它们不相等,可以通过String.localeCompare()提供了另外一种比较字符串的方法

7、如果两个引用值指向同一对象,数组或者函数,则它们是相等的,否则不相等

三、==的比较

1、如果两个数的类型相等,则和上面的严格相等的比较规则一样,如果严格相等,则它们相等,如果严格不相等,则它们不相等

2、如果两个操作数类型不相等

如果一个是null,另外一个是undefined,则它们相等

如果一个操作数是数字,另外一个是字符串,先将字符串转换为数字,再进行比较

如果一直操作数为true,则将其转换为1再比较,如果一个操作数为false,则将其转化为0再比较

如果一个值为对象,两个一个值为数字或者字符串,则用转换规则将对象转换为原始值,然后再进行比较,javascript内置对象将尝试用valueOf,在尝试用toString,除了日期类,日期类只用toString转换

"1"==true//true

权威指南学习心得之运算符和表达式

标签:

原文地址:http://www.cnblogs.com/yhf286/p/5036183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!