+,-自动转换为number
// 算术计算中的自动转换+,-
// 在算术计算中先将数据转换为number,再计算
var a = true;
var b = "13";
var c = b-a;
// var c= Number(b)-Number(a);
console.log(c);
“+”有一边为字符串,输出为字符串
/*
+特殊:只要有一边为字符串,+是拼接符,结果还是字符串
*/
var a = true;
var b = "10";
var c =a+b;
console.log(c);
var d = "10";
var f = 1;
console.log(d+f);
NaN和任何数值去计算,结果都会输出NaN
// NaN和任何数值去计算,结果都会输出NaN
var a = "10";
var b = 1;
var c = true;
console.log(a-b+c); //10
console.log(a+b-c); //100
console.log(a+c-b); //a+c == 10true 10true-1 ==NaN
//String(a)+String(b)-Number(c);
// Number(a)-Number(b)+Number(c)
//"10true"-1
比较运算
// "",NaN,0-->false
// >,<,== 返回的是boolean
// 先将两边的值转为number,再比较
// NaN和任何值做计算,结果一定是NaN
var a = true;
var b = "10";
var c = "hello"
console.log(a>b); //Number(a)>Number(b);//false
console.log(a>c); //Number(a)>Number(c);Number(c) == NaN//false
console.log(Boolean(NaN)) //false
输出为false
undefined , NaN , "" , 0,null,false
运算
//Number(""),Number(" "),Number(null) 0
console.log(false == ""); //true
console.log(true == 1); //true
console.log(null == undefined);
console.log(undefined == false); //false
console.log(1 == "1");
/*
==运算中
1.只有有一边为boolean,先将两边转为number
2.如果一边为string,一边为number,先将两边转为number
3.null == undefined
4.null和undefined不能转化成其他值
*/
算术运算
// +,-,*,/,%
var a = 3;
var b = 3.3;
var c = 4;
console.log(a*b);
console.log(b/a);
console.log(c%a); //1
// 1-100; 2
比较运算
// 先将两边的值转换为Number再比较
// >,<,==,>=,<=,!=
var a = true;
var c = 1;
console.log(a==c); //true
console.log(a=="1");//true
console.log(2>=1);
console.log(2!=3);
逻辑运算
/* 逻辑运算时是将两边的值转换为boolean再运算 */
// && 逻辑与 只有两边为true,结果才为true
// || 或 只要一边为true,结果就为true
// ! 取反
console.log(3>2 && 4>3);
console.log(3>2 && 4<3); //true && false
console.log(3<2 && 4>3); //false && true
console.log(16>17 || 15>10);// false || true
console.log(16<17 || 15<10);// true || false
console.log(!(3>4)) // !false
赋值运算
// +=,-=;
var a = 2;
// a=a+4;
a+=4;
var b = 4;
b-=4; //b=b-4;
console.log(a); //6;
console.log(b); //0
三元表达式
// true 输出问号后面的第一段语句
// false 输出问号后面的第二段语句
var a = (5>4)? "5大于4":"4小于5"; //false
console.log(a);
++自增
// ++;
/*
1.++单独使用的时候都会自增(放在前面和后面都一样)
*/
var a = 10;
++a; //a=a+1;
console.log(a);
++放前放后
/*
1.++后
2.++前面
*/
/*
++放前面先自增,后运算
++放后面先运算,再自增
*/
var a = 10;
var c = 20;
b =++a + 2;
d = c++ +3;
console.log(b); //13
console.log(a);
console.log(d);
console.log(c);
—
/*
-- 放前面先自减,后运算
-- 放后面先运算,再自减
*/
var a = 10;
a--; //a = a-1;
console.log(a);
var a = 10;
b = a-- -1; //b=9 a = 9
console.log(b);
console.log(a);
—前面
var a = 20;
b = --a+1; //a = 19 b=20;
console.log(a);
console.log(b);
|| 或
/*
|| 有一边为true,结果就为true。遇到true,就会返回
*/
var b = 0 ||"abc";
var c = "abc" || 1;
var d = 0 || NaN;
console.log(b);
console.log(c);
console.log(d);
&& 与
/*
&& 两边都为true,结果才为true
1.遇到false的情况,直接返回
*/
console.log("abc" && 10);
console.log( 0 && "abc");
!非
var a = 190;
console.log(!a);