是各类变量、数值、运算符的综合体。最简单的表达式是一个字面量或者变量。数组
只能操做一个值的运算符叫一元运算符。函数
其余类型应用一元运算符的规则。编码
var box="89"; box++ //90,数值字符串自动转换成数值 var box="a"; box++; //NaN,字符串包含非数值转成NaN var box=flase; box++; //1,flase转成数值是0,累加结果是1 var box=1.3; box++; //2.3, var box={ toString: function(){ return 1; } }; box++;
加、减、乘、除、余。若是在算数运算的值不是数值,那么后台会使用Number()转型函数将其转换为数值(隐式转换)。spa
1.加code
//加法 var box=1+2; //3 var box=1+NaN; //NaN 只要有一个NaN就为NaN var box=Infinity+Infinity; //Infinity var box=-Infinity+-Infinity; //-Infinity var box=Infinity+-Infinity; //NaN,正无穷和负无穷相加等于NaN var box=100+"100" //100100 字符串链接符 有字符串就不是加法 var box="您的年龄是:"+10+20; //您的年龄是:1020,被转换成字符串 var box=“您的年龄是:”+(10+20); //您的年龄是:30,没有被转换成字符串 var box=10+20+“您的年龄是:”; //30您的年龄是:,没有被转换成字符串 var box=10+对象 //10[Object Object],若是有toString()或valueOf(),则返回10+返回数的值
减、乘、厨、余能够本身试对象
var a=56; var b=++a; //b=++a <==> [a=a+1;b=a;] b=a++ <==> [b=a;a=a+1] alert(a); alert(b); // b=++a 结果是57 57 // b=a++ 结果是57 56
< > <= >= ==相等 !=不等 ===全等值和数据类型 !==不恒等字符串
1,两个操做数都是数值,则数值比较;it
2,两个操做数都是字符串,则比较两个字符串对应的字符编码值;io
3,两个操做数有一个是数值,则将另外一个转换为数值,再进行数值比较;字符编码
4,两个操做数有一个是对象,则先调用valueOf()方法或toString()放的,再进行结果比较;
var box=3>2; //true var box=3>22; //flase var box="3">22; //flase var box="3">"33" //flase var box="a">"b" //flase var box=1>对象 //flase 若是有toString()或valueOf(),z则返回1>返回数的值
在相等和不等的比较上,若是操做数是废树脂,则遵循如下规则
1,一个操做数是布尔值,则比较值钱将其转换为数值,flase转换为0,true转换为1;
2,一个操做数是字符串,则比较值钱将其转换为数值再比较;
3,一个操做数是对象,则先调用valueOf()或toString()方法后再和返回值比较;
4,不须要任何转换的状况下,null和undefined是相等的;
5,一个操做数是NaN,则==返回flase,则!=返回true;而且NaN和自身不等;
6,两个操做数都是对象,则比较他们是否为同一对象,若是都指向同一对象,则返回true,不然返回flase.
7,在全等和不等的判断上,好比值和类型都相等,才返回true,不然返回flase.
一般用于布尔值的操做,and or not非
1.and &&
var box=(5>4)&&(4>3) //两边都为true 返回true 有一个flase 返回flase
第一个操做值 第二个 结果
true true true
true flase flase
true flase flase
flase true flase
flase flase flase
若是两边的操做数有一个不是布尔值的状况下,与运算就不必定返回布尔值,此时,遵循如下原则:
1,第一个操做数是对象,则返回第二个操做数;
2,第二个操做数是对象,则第一个操做数返回true,才返回第二个操做数,不然返回flase
3,有一个操做数是null,则返回null
4,有一个操做数是undefined,则返回undefined
var box=对象&&(5>4); //true,返回第二个操做数 var box=(5>4)&&对象 //[object object] var box=(3>4)&&对象 //flase var box=(5>4)&&null //null
2.or ||
var box=(9>7)||(7>8); //true,两边只要有一个是true,返回true
3,非 !
非运算符能够用于任和数据类型,这个运算符否是返回一个布尔值,它的流程是,现将这个值转换成布尔值,而后取反。
= 把右边的值赋给左边的变量
var box=100; //把100赋值给box变量
复合赋值运算符经过x=的形式表示x表示算数运算符及位运算符
var box=100; box=box+100;
1.字符串运算符
字符串运算符只有一个,即"+" 它的做用是将两个字符串相加。
规则:至少有一个操做数是字符串
var box="100"+100; //100100 var box=100+100; //200
2,逗号运算符
逗号运算符能够在一条语句中执行多个操做。
var box=100,age=20,height=168; //多个变量声明 var box=[1,2,3,4,5]; //数组字面量声明 var box={1:2,3:4,5:6} //[object object],对象的字面量声明
3,三元条件运算符
三元条件运算符就是if语句的简写形式
var box=5>4?"对":"错"; //对,5>4返回true则把“对”赋值给box,反之 //至关于 var box=""; if(5>4){ box="对" } else{ box="错"; }