+,-自动转换为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和任何数值去计算,结果都会输出NaNvar a = "10";var b = 1;var c = true;console.log(a-b+c); //10console.log(a+b-c); //100console.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和任何值做计算,结果一定是NaNvar a = true;var b = "10";var c = "hello"console.log(a>b); //Number(a)>Number(b);//falseconsole.log(a>c); //Number(a)>Number(c);Number(c) == NaN//falseconsole.log(Boolean(NaN)) //false
输出为false
undefined , NaN , "" , 0,null,false
运算
//Number(""),Number(" "),Number(null) 0console.log(false == ""); //trueconsole.log(true == 1); //trueconsole.log(null == undefined);console.log(undefined == false); //falseconsole.log(1 == "1");/*==运算中1.只有有一边为boolean,先将两边转为number2.如果一边为string,一边为number,先将两边转为number3.null == undefined4.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); //trueconsole.log(a=="1");//trueconsole.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 && falseconsole.log(3<2 && 4>3); //false && trueconsole.log(16>17 || 15>10);// false || trueconsole.log(16<17 || 15<10);// true || falseconsole.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"; //falseconsole.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); //13console.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 = 9console.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,结果才为true1.遇到false的情况,直接返回*/console.log("abc" && 10);console.log( 0 && "abc");
!非
var a = 190;console.log(!a);
