<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
// 运算符
//1.算术运算符: + - * / %(取余) 【浮点数运算精度不如整数】
// 不能直接用浮点数进行比较是否相等
// 表达式和返回值:表达式最终都会有一个结果,返回给开发者,称之为返回值
console.log(0.1+0.2); //最后结果是0.3000000000000007
var num=0.1+0.2;
console.log(num==0.3);//输出false
//2. 递增递减运算符:++ -- 【前置和后置在单独输出变量时没有区别】
// (1).前置运算符
var p=10;
console.log(++p+10); //【先赋值再运算】
console.log(p);
// (2).后置运算符
var t=10;
console.log(t++ +10); //【先运算再赋值】
console.log(t);
var a=2;
++a;
var b=++a+2;
console.log(b); //b=6,a=4
var c=10;
c++;
var d=c++ +2;
console.log(d); //d=13,c=12
var e=10;
var f=e++ + ++e;
console.log(f); //f=22,e=12
//3.比较运算符 :< > <= >= ==(默认情况下,会转换数据的类型,会把字符串转换成数值型) != ===(全等 要求数据类型和值全部相等) !=(不全等)
// 两个数据进行比较,返回值均为布尔值
// 不能直接比较两个浮点数的大小
console.log(18=='18');
console.log(18==='18');
//4.逻辑运算符:&&(逻辑与) ||(逻辑或) !(逻辑非)
//(1).逻辑与 : 两边的结果都是true的时候结果才是true,只要一侧是false,那结果就是false
console.log(3>5 && 3>2);
console.log(3<5 && 3>2);
//(2).逻辑或 :两边都是false的时候,才是false,只要有一侧是true,那结果就是true
console.log(3>5 || 3>2);
console.log(3>5 || 3<2);
//(3).逻辑非 :
console.log(!true);
//(4).短路运算:当有多个表达式时,左边表达式能确定整个表达式的结果时,就不比较其他表达式的值了
/* 逻辑与的短路运算
如果表达式1的值为真的话,返回的值是表达式2
如果表达式1的值是假的,那返回的就是表达式1
如果多个表达式,且表达式1的值为真,则返回最后一个表达式*/
console.log(123 && 456);
console.log(0 && 456);
console.log(123 && 1+2 && 56789 && 456);
//(5).
/* 逻辑或的短路运算
如果表达式1的值为真时,返回值为表达式1;
如果表达式1的值为假时,返回值为表达式2
如果多个表达式时,则返回第一个值为真的表达式
*/
console.log(123 || 456);
console.log(0 || 456);
console.log(0 || 56789 || 456);
//5.赋值运算符:把右边的值赋值给左边
// 三元运算符:表达式1?表达式2:表达式3
</script>
</head>
<body>
</body>
</html>