一、表达式
表达式是ECMAScript中的一个短语,解释器会通过计算把它转换成一个值,最简单的表达式是字面量或者变量名。
例如:3.14 //数值字面量 true//布尔字面量 ‘cai’//字符串字面量 null //空值字面量。
还可以通过合并简单的表达式来创建复杂的表达式,比如:
3.14+box //加法运算的表达式 typeof(box) // 查看数据类型的表达式
结论:单一的字面量和组合字面量的运算符都可以称为表达式。
二、一元运算符
只能操作一个值的运算符叫做一元运算符。
三、算术运算符
四、关系运算符
五、逻辑运算符
六、位运算符
七、赋值运算符
八、其他运算符
九、运算符优先级
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js运算符</title>
</head>
<body>
<script type="text/javascript">
/*var box = 100;
//box++; //把box累加一个1,相当于box=box+1; 后置运算符
//box--; //把box累减一个1,相当于box=box-1;
//++box; //同上 前置运算符
--box; //同上
alert(box); 前置和后置的区别:
在没有赋值操作时,前置和后置是一样的。但在赋值操作时,如果递增或递减运算符前置,那么前置的操作符会先累加或累减再赋值,后置的运算符则先赋值再累加或累减。应用的地方:循环语句*/
var box = 100;
//var age = ++box; box=101; 先运算再赋值给新的变量
var age = box++; //age=100; 后加加功能没有实现,没有自增1; 先赋值给新的变量再运算
document.write(age + "<br />");
//算数运算符
//ECMAScript定义了5个运算符,加减乘除取模。如果算术运算的值不是数值时,后台会先使用Number()转型函数将其转换为数值(隐式转换)。
var box1 = 3*8;
document.write(box1 + "<br />");
var box2 = 9%5;
document.write(box2 + "<br />");
/*关系运算符
用于进行比较的运算符叫做关系运算符;大于(>),小于(<),小于等于(<=),大于等于(>=),相等(==),
不等(!=),全等(恒等)(===),不全等(不恒等)(!===)。当关系运算符操作非数值时遵循的规则:
1、两个操作数都是数值时,则数值比较。
2、两个操作数都是字符串时,则比较两个字符串对应的字符编码值。
3、两个操作数有一个是数值时,将非数值操作数转换为数值后,再进行数值比较
4、两个操作数有一个是对象时,则先调用valueOf()方法或toString方法,再用结果比较。
*/
//var box3 = 3>2;
var box3 = 3==2;
document.write(box3 + "<br />");
/*在相等和不等的比较上,如果操作数是非数值时,则遵循以下规则:
5、一个操作数是布尔值时,则比较之前先将其转换为数值,true转换为1,false转换为0。
6、一个操作数是字符串,则将其转换为数值后再比较。
7、一个操作数是对象,则先调用valueOf()或toString方法后再和返回值比较。
8、在不需要任何转换的情况下,null和undefined是相等的。
9、一个操作数是NaN,则==返回false,!=返回true。并且NaN和自身不等。
10、两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象则返回true,否则返回false。
11、在全等和全不等的判断上,值和数据类型都相等返回true,否则返回false。
*/
var box4 = 1==false;
document.write(box4 + "<br />");
var box7 = 0==false;
document.write(box7 + "<br />");
var box5 = null==undefined;
document.write(box5 + "<br />");
var box6 = NaN==NaN;
document.write(box6 + "<br />");
var box8 = "100"==100;
document.write(box8 + "<br />");
var box9 = '100'===100;
document.write(box9 + "<br />");
var box10 = null==0;
document.write(box10 + "<br />");
/*逻辑运算符
逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:
逻辑与( && and)、逻辑或( || or)、逻辑非(not)
*/
var luo1 = (5>4)&&(4>3);
document.write(luo1 + "<br />"); //luo1=true,只有两边都是才返回true
var luo2 = (9>7)||(7>9);
document.write(luo2 + "<br />"); //luo2=true,只要有一边是true就返回true
/*逻辑非:逻辑非运算符可以用于任何值;无论这个值是什么数据类型,这个运算符都会返回一个布尔值;
它的流程是:先将这个值转换为布尔值,然后取反,规则如下:*/
var luo3 = !(5>4);
document.write(luo3 + "<br />");
var luo4 = !!(5>4);
document.write(luo4 + "<br />");
//位运算符
var wei = ~25;
document.write(wei + "<br />");
//赋值运算符:用等号(=)表示,就是把右边的值赋给左边的变量。
var fu = 10;
fu += 100; //复合运算符用x=的形式表示,x表示算术运算符或位运算符
document.write(fu + "<br />")
var fu = 10;
fu /= 100;
document.write(fu + "<br />")
/*其他字符串
1、字符串运算符:只有一个(即"+"),它的作用就将两个字符串相加(连接符)。*/
var qi = "ab" + "cd";
document.write(qi + "<br />");
var qi1 = 1, qi2 = 2, qi3 = 3; //逗号运算符,可以在一条语句中执行多个操作;一个关键字声明多个变量(用逗号分隔)。
//三元条件运算符:if语句的简写形式,
var san = 5>4? '正确' : '错误';
document.write(san + "<br />")
//运算符优先级
var you = 5-4*8;
document.write(you + '<br />')
var you2 = (5-4)*8;
document.write(you2 + '<br />')
</script>
</body>
</html>