JavaScript高级程序设计(第3版)学习笔记4 js运算(2)

这里如果调用Fn未传入obj,则会自动给obj赋值为undefined,然后因为undefined的相应Boolean值为false,所以会将一个空对象{}赋值给obj,如果调用传入了obj,则因为任意对象的Boolean值为true,所以就不会取后面的{},从而达到给obj一个默认值{}的效果。

这种方式还被应用在大型JS库的多个相对独立的文件中:
//jsLib
var jsLib;
//file1
(function (jsLib){
   jsLib = jsLib || {};
})(jsLib);

//file2
(function (jsLib){
   jsLib = jsLib || {};
})(jsLib);


使用这种方式,无论先加载哪个文件,都会判断jsLib是否已经定义,如果未定义就提供一个默认值,这样做可以使得相对独立模块可以不用考虑加载顺序。

 

关系操作符

(比较操作符)

  <    小于  

1、只要有一个操作数是Number类型或Boolean类型值,就将两个操作数转换成Number类型值(如果需要转换)执行数值比较。

2、字符串比较,会逐个比较字符编码值。

3、操作符是对象时,调用valueOf()(如果没有,就调用toString()),再将结果按上面规则比较。

4、任意数和NaN比较返回false。

 
<=    小于或等于  
>    大于  
>=    大于或等于  
==    相等  

1、相等和不等(==、!=)在比较时,只要有必要,就会隐式类型转换。

2、全等和不全等(===、!==)在比较时,不会转换类型,如果类型不一致,直接为!==。

3、结合1、2,可以知道,a===b则一定有a==b,而a!=b则一定有a!==b。

 
!=    不等  
===    全等  
!==    不全等  
赋值操作符   =    赋值      
复合算术赋值操作符    算术运算符加=   对应算术运算符,有+=、-=、*=、/=、%=   
复合按位赋值操作符    按位运算符加=   对应按位运算符,有~=、&=、|=、^=、<<=、>>=、>>>=  
按位操作符   ~    按位非   按位取反,也即返回反码  
&    按位与   按位对齐,逐位操作,只有两个操作位均为1才返回1,否则该位返回0,最后将所有位操作结果组合返回  
|    按位或   按位对齐,逐位操作,只有两个操作位均为0才返回0,否则该位返回1,最后将所有位操作结果组合返回   
^    按位异或   按位对齐,逐位操作,两个操作位不相同时返回1,否则该位返回0,最后将所有位操作结果组合返回  
<<    左移   二进制数向左移位,左移不会改变符号位   
>>    有符号右移   二进制数向右移位,高位以符合位填充   
>>>    无符号右移   二进制数向右移位,直接右移,对于正数,结果和>>相同,对于负数,会把负数的二进制补码当成正数的二进制码处理  
字符串操作符   +    字符串连接   相当于concat()函数,会先将所有操作数转换为字符串,然后再连接。注意,字符串一旦创建就不会变更,执行字符串连接时,在后台会有一个中间的连接和销毁过程,这也是老旧浏览器在大量字符串连接操作时运行缓慢的原因。  
+=    字符串连接复合   a+=b,相当于a=a+b。   
对象操作符   .    属性访问符   简单的对象属性访问符。  
[]    属性或(类)数组访问   通过[],可以访问名称是一个变量或含有特殊字符的属性。  
new    调用构造函数创建对象   返回一个新创建的对象,在构造函数内部的this被指向这个新创建的对象。  
delete    变量、属性删除   删除属性(变量可以看成是全局对象或执行环境的一个属性)。  
void       返回undefined。  
in    判断属性   对象属性或原型链上的属性。  
instanceof    原型判断   比较同一个上下文中的对象是否为另一个对象的原型。  
其它操作符   ?:    条件操作符   语法;var value = exp ? trueExp : falseExp。 相当于var value; if(exp){ value = trueExp;}else{value = falseExp;}  
,    逗号操作符   主要用于声明多个变量,这也是很多JS库的流行做法。例如:var num1=1,num2=2,num3=3;  
()    分组操作符  

主要用途:

1、结合逗号操作符用于赋值。例如:var num = (5,1,4,8,0);这里num最后的值为0。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wddsgg.html