发表于: 2017-01-20 02:13:40

1 1257


今天完成的事:刷js高级程序设计

明天计划的事:继续刷js

遇到的问题:今天刷了js里的操作符已经全部刷完,学习到了以下内容


操作符
一元操作符
1.递增和递减操作符
分为前置型和后置型
前置型
var age = 29;            等于               var age = 29;
++age;                                           age = age + 1;
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2;  //等于21
var num4 = num1 + num2;  //等于21
后置型
后置与前置有个非常重要的区别,即递增和递减操作是在包含它们的语句被求值后才执行的。
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; //等于22
var num4 = num1 + num2;  //等于21
递增和递减操作符遵循下列规则:
1.在应用于一个包含有效数字字符的字符串时,先将其转换为数值,再执行加减1的操作。字符串变量变成数值变量。
2.在应用于一个不包含有效数字字符的字符串时,将变量的值设置为NaN。字符串变量变成数字变量。
3.在应用于布尔值false时,现将其转换为0再执行加减1的操作。布尔值变量变为数值变量
4.在应用于布尔值true时,现将其转换为1再执行加减1的操作。布尔值变量变为数值变量
5.在应用于浮点数数值时,执行加减1的操作
6.在应用于对象时,先调用valueOf()方法以取得一个可供操作的值。然后该值应用前述规则。如果结果为NaN,则在调用toString()方法后再应用前述规则。对象变量变成数值变量。

2.一元加和减操作符
主要用来基本的算术运算,与平时的用法没有差别,符号放在数值前面仅仅表明正负。
3.位操作符
位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值。
位操作符并不直接操作64位的值。而是先将64位的值转换为32位的整数,然后执行操作,最后再将结果转换为64位。
对于有符号的整数,32位中的前31位用于表示整数的值,第32位用于表示数值的符号:0表示正数,1表示负数。这个表示符号的位就叫符号位,符号位的值决定了其他位数值的格式。其中正数以纯二进制格式存储,32位中的每一位都表示2的幂。
负数同样以二进制码存储,但使用的格式是二进制补码。需要以下三个步骤:
但是在实际的应用中,在以二进制字符串形式输出一个负数时,我们看到的只是这个负数绝对值的二进制码前面加了一个负号。
var num = -18;
alert(num.toString(2));  // "-10010"
(1) 按位非(NOT)
按位非操作符就是一个波浪线(~)表示,执行按位非的结果就是返回数值的反码。
表明了按位非操作符的本质:操作数的负值减一。
(2)按位与(AND)
按位与操作符由符号(&)表示,它有两个操作符。
从本质上来讲按位与操作就是将两个数值的每一位对齐。
 var result = 25 & 3;
 alert(result);  //1
(3)按位或(OR)
按位或由符号(|)表示,同样也有两个操作符。
 var result = 25 | 3;
 alert(result);  //27
(4)按位异或
由符号(^)表示
var result = 25 ^ 3;
 alert(result);  //26
(5)左移和有符号的右移
由符号(<<)和符号(>>)表示
左移
var oldValue = 2;    // 等于二进制的10
var newValue = oldValue << 5;   //等于二进制的1000000,十进制的64
以此类推
(6)无符号右移
由符号(>>>)表示,与有符号右移的区别为,无符号右移是以0来填充空位,而不是像有符号右移那样以符号位的值来填充空位。
其次,无符号位右移操作符会把负数的二进制码当成正数的二进制码。而且,由于负数以其绝对值的二进制补码形式表示,因此就会导致无符号右位移后的结果非常之大。

布尔操作符
1.逻辑非
由一个(!)符号表示,该操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。
1.如果操作数是一个对象,返回false;
2.如果操作数是一个空字符串,返回true;
3.如果操作数是一个非空字符串,返回false;
4.如果操作数是数值0,返回true;
5.如果操作数是任意非0数值(包括Infinity),返回false;
6.如果操作数是null,返回true;
7.如果操作数是NaN,返回true;
8.如果操作数是undefined,返回true;
2.逻辑与
由符号(&&)表示,在操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值;
1.如果第一个操作数是对象,则返回第二个操作数
2.如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;
3.如果两个操作数都是对象,则返回第二个操作数;
4.如果第一个操作数为null,则返回null;
5.如果第一个操作数为NaN,则返回NaN;
6.如果第一个操作数为undefined,则返回undefined;
逻辑与是一个短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。
3.逻辑或
用符号(||)表示,与逻辑或相似。

乘性操作符
1.乘法
用(*)表示,遵循以下规则
1.如果操作数都是数值,执行常规的乘法计算
2.如果有一个操作数是NaN,则结果是NaN
3.如果是Infinity与0相乘,则结果是NaN
4.如果是Infinity与非0数值相乘,则结果为Infinity或-Infinity,取决于有符号操作数的符号
5.如果Infinity与Infinity相乘,结果为Infinity
6.如果有一个操作数不是数值,则在后台调用Number()将其转换为数值,然后再应用上面的法则
2.除法
与乘法相似。
3.求模
由符号(”%“)表示,用法如下:
1.如果操作数都是数值,执行常规的除法计算,返回除得的余数
2.如果被除数是无穷大值而且除数是有限大的值,则结果为NaN
3.如果被除数是有限大的而除数为0,则结果为NaN
4.如果是Infinity被Infinity除,则结果是NaN
5.如果被除数是有限大的数值而除数是无穷大的数值,则结果是被除数
6.如果除数是零,结果也为0
7.如果有一个操作符不是数值,则在后台调用Number()将其转换为数值,然后再应用上面的规则
加性操作符
(1)加法
用符号(+)表示
1.如果有一个操作符是NaN,则结果为NaN
2.如果是Infinity加Infinity,则结果为Infinity
3.如果是-Infinity加-Infinity,则结果为-Infinity
4.如果是-Infinity加Infinity,则结果为NaN
5.如果是+0加+0,结果为+0
6.如果为-0加-0,结果为-0
7.如果为+0加-0,结果为+0
8.如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来
9.如果两个操作数都是字符串,则将两个操作数拼接起来
如果有一个操作数为对象、数值或布尔值,则调用toString()方法取得相应的字符串值,然后在应用前面关于字符串的规则。
对于undefined和null,则分别调用String()函数并取得字符串”undefined“和”null“
(2)减法
与加法相似

关系操作符
小于(<),大于(>),小于等于(<=),大于等于(>=)
1.如果两个操作数都是数值,则执行数值比较
2.如果两个操作数都是字符串,则比较两个字符串对应的字符编码值
3.如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较
4.如果一个操作数是对象,则调用这个对象的valueOf()方法,并用得到的结果按照前面的规则执行,
  如果对象没有valueOf()方法,则调用toString()方法,并用得到的结果根据前面的规则执行
5.如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较

相等操作符
1.相等和不等
分别由符号(”==“)与(”!=“)表示
1.如果有一个操作数是布尔值,则在比较相等性之前将其转换为数值——false 转换为 0,而true转换为1
2.如果一个操作数是字符串,另一个操作数为数值,在比较之前先将字符串转化为数值
3.如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较
在进行比较时要遵循下列规则
1.null和undefined是相等的
2.要比较相等性之前,不能将null和undefined转换为其他任何值
3.如果有一个操作数是NaN,则相等操作符返回false,而不相等返回true。重要提示:即使两个操作数都是NaN,相等操作符返回也为false;因为按照规则,NaN不等于NaN
4.如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true;否则,返回false。
2.全等和不全等
由符号(===)与(!==)表示
除了在比较之前不转换操作数外,全等与相等,不全等与不相等,没什么区别。

条件操作符
由符号(?)表示
var max = (num1 > num2)? num1 : num2
表达式的意思:如果num1 > num2 则将num1赋值给max ,否则将反之。

赋值操作符
由符号(=)表示

逗号操作符
由符号(,)表示
可以在一条语句中执行多个操作


收获:以上。


返回列表 返回列表
评论

    分享到