1.2 JavaScript运算符

来源:互联网 发布:阿里云备案账号是什么 编辑:程序博客网 时间:2024/05/29 17:19

       按照运算符的优先级排序,运算符集合性,L(从左至右)或R(从右至左),操作数类型的列表示期望的操作数类型以及运算符的结果类型(在"->"符号之后)。

lval是left-value的简写,意思是左值

     运算符大致包含:

        算术运算符

        等式运算符

        关系运算符

        字符串运算符

        逻辑运算符

        按位运算符

        赋值运算符

        其它运算符

优先级

运算符的集合性

运算符

执行操作

操作数个数

操作数类型

15

L

.

属性访问

2

object, identifier

 

L

[]

数组索引

1

array, integer

 

L

( )

函数调用

1

function, arguments

 

R

new

创建新对象

1

constructor call

14

R

++

前或后递增的(一元)

1

lval > num

 

R

--

前或后递减(一元)

1

lval > num

 

R

-

求反

1

number -> number

 

R

+

转换为数字

1

number -> number

 

R

~

按位求反(一元)

1

Int > Int

 

R

!

逻辑非(一元)

1

bool >bool

 

R

delete

取消定义的属性(一元)

1

lval -> bool

 

R

typeof

返回的操作数类型(一元)

1

any  ->  str

 

R

void

返回未定义的值undefined(一元)

1

any -> undefined

13

L

*, /, %

乘,除,余数;

2

num ,num -> num

12

L

+, -

加法,减法

2

num ,num -> num

 

L

+

字符串串联

2

str, str-> str

11

L

<< 

左移位

2

int, int-> int

 

L

>> 

有符号右移

2

int, int-> int

 

L

>>> 

无符号右移

2

int, int-> int

10

L

<, <=

小于,小于或等于

2

num ,num ->bool

 

L

>, >=

大于,大于或等于

2

num ,num ->bool

 

L

instanceof

检查对象类型

2

obj, func->bool

 

L

in

检查是否属性存在

2

obj, str->bool

9

L

==

测试相等

2

any, any->bool

 

L

!=

测试不等

2

any, any->bool

 

L

===

测试恒等

2

any, any->bool

 

L

!==

测试不恒等

2

any, any->bool

8

L

&

按位与

2

int, int-> int

7

L

^

按位异或

2

int, int-> int

6

L

|

按位或

2

int, int-> int

5

L

&&

逻辑与

2

any, any->any

4

L

||

逻辑或

2

any, any->any

3

R

?:

条件运算符(三操作数)

3

bool, any, any->any

2

R

=

变量赋值或对象属性赋值

2

lval, any->any

 

R

*=, /=, %=, +=, -=, <<=, >>=,  >>>=, &=, ^=, |=

运算且赋值

2

lval, any->any

1

L

,

忽略第一个操作数,返回第二个操作数

2

any,any->any

 

部分代码示例:

 

//,返回右操作值

  if((true,false))

   {

   alert("ooo");

       }

       vari,j,k;

       //alert((i=1,j=2,k=8));

      

      

      

       //转化类型+

       varpoint = "7";

       //alert(typeof(point));//typeofx返回值有undefined,object,boolean,number,string,function.

       point= +point;

       //alert(typeof(point));

      

      

      

       //删除属性delete

       varo = new Object;

   o.name = "David";

   //alert(typeof(o.name));  //输出 "string"

  delete o.name;

   //alert(typeof(o.name));  //输出 "undefined";

      

       //alert(void(1));

      

      

       //左移,左移一位相当于它乘以2,移两位乘以4

       varst = -8;

       //alert(st=st.toString(2));//转化成2进制

       //alert(st.toString(8));//转化成8进制

       //alert(st.toString(16));

       //alert("st="+st);

       st=st<<1;

       //alert("st="+st);

      

      

       //有符号右移,右移一位相当于它除以2,右移两位除以4,忽略余数(如:7>>1=3, -7>>1=-4

       varsty = -7;

       //alert("sty="+sty);

       sty=sty>>1;

       //alert("sty="+sty);

      

      

       //"==""==="的区别

       //alert("1"==true);

       //alert("1"===true);

       var  ppl;

       varlpl=null;

       var  koo =3;

       var  kok ="3";

       //alert(typeof(ppl));

       //alert(typeof(lpl));

       //alert(ppl==lpl);

       //alert(koo==kok);

      

      

       //in运算符

       varpointy ={x:1,y:3};

       //alert("x"in pointy)

       //alert("toString"in pointy);//继承了toString()方法

       vardata = [7,8,9,6];

       //alert(4in data);//没有索引为4的元素

      

      

      

       //instanceof希望左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧的实例(右侧应该是个函数),返回true

       vard = new Date();

       //alert(dinstanceof Date);

       //alert(dinstanceof Object);//所有对象都是Object实例

       //alert(dinstanceof Number);

       //alert(dinstanceof d);//右侧不是函数,抛类型错误异常

原创粉丝点击