数据运算和运算规则

1.1 js表达式

1.1.1 简单表达式和复杂表达式

1、简单表达式:仅仅由文字组成;

2、复杂表达式:更多的表达式中包含变量、函数、函数调用以及其他表达式,可以用运算符将简单表达式组合,创建复合表达式,运算符可以是js中任意的运算符。

1.1.2 赋值表达式和单值表达式

1、赋值表达式:用于变量赋值;

2、单值表达式:纯粹是被计算为单个值。

1.2 算数运算符

运算符号 意义 运算符号 意义
+ 加法运算 % 取余数
- 减法运算 ++ 累加
* 乘法运算 -- 递减
除法运算    

注意事项:

1、运算溢出:数字类型的变量有一个范围,超出范围就会导致溢出,算术运算不会自动抛出异常,因此需要自己来处理。

2、进行算术运算时,两端的值可能不是数字,那么会尝试将该数据转换为数字,如果能转换成数字,则可以进行数字运算,否则返回非数字常量NaN;

但有一个例外,就是加法运算符,因为加法运算符可以用来当作字符串运算符。因此会有另外的一些规则。

(1)当两个或多个数字使用“+”运算符时,执行加法运算符;

(2)当单个数字与其他类型的数据使用“+”运算符时,首先会将两个表达式的值转换为字符串,然后执行字符串运算。

document.write(10+new Array("40",30));    // 1040,30  首先会将数组转换成字符串

document.write(10+new Array(40,30));       // 1040,30  首先会将数组转换成字符串

(3)当多个数字与其他类型的数据使用“+”运算符时,首先会从左到右,根据运算符两边的数据类型进行判断,是采用算术运算还是字符串运算。

document.write("10"+20+5);    // 10205

document.write(10+20+"5");    // 305

 1.3 赋值运算符:用来为变量或者常量赋值,可以让程序精简,提高程序的执行效率

运算符号 意义
= 将右边的值赋到左边
+= 将右边的值加左边的值,并将结果值赋给左边。
-= ~减~~
*= ~乘~~
/= ~除~~
%= ~取余~~
&=  
<<=  
|=  
>>=  
>>>=  
^=  

1.4比较运算符和逻辑运算符

比较运算符表:

运算符号 意义
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
!= 不等于
=== 如果两个表达式(包括它们的数据类型)相等,则结果为 true
!== 与===相反

逻辑运算符表:

运算符号 意义
&& 并且,两边表达式必须同时为true
|| 或者,一边成立即可
不,非
&&= 进行&&运算,并将运算结果赋给左边的表达式。
||= 进行||运算,并将运算结果赋给左边的表达式。如:x||=y;=>x=x||y

===确定是否相等,取决于参数的数据类型:

(1)数字和逻辑值按值进行比较,如果它们具有相同的值,则相等。

(2)如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。

(3)表示对象、函数、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会视为相等。

var str="abc";

var str1 = new String("abc");

var str2 = new String("abc");

var str3 = str1;

document.write(str==str1); //true

document.write(str1==str2); //false

document.write(str1==str3); //true

 

document.write(str1===str2); //false

document.write(str1===str2); //false

document.write(str1===str3); //true

 

1.4.1特殊值的比较 

document.write(NaN==NaN); //false

document.write(NaN===NaN); //false

document.write(null==undefined); //true

document.write(null===undefined); //false

 

1.5其他运算符

运算符号 意义
[] 用指定的元素访问数组中的元素或者实例化一个新数组,它还能访问对象的属性,方括号运算符也被称为下标运算符 
, 计算表达式1,然后计算表达式2,依次类推。 
?: 三元条件运算符
. 访问对象的属性和方法,定义包路径。 
in 计算属性是否为特定对象的一部分,经常用在for in循环中。 
instanceof 计算表达式的原型链是否包含function的原型对象 
new 构造器方法,用来创建实例。 
{} 定义块,还可以创建并初始化一个新的Object实例。 
() 对一个或多个参数执行分组计算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括号前面的函数。 
/ 如果 用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式,而不是一个变量、字符串或其他js元素,除此之外,可用作算术的除法运算。
delete 破坏对象的属性。如果在运算完成后该属性不存在,则结果为true。否则为false。 
typeof 用来测量表达式的类型
void 计算表达式,然后放弃其值,返回underfind

 

 

 

 

原文地址:https://www.cnblogs.com/chengmingxiaowu/p/7661605.html