一、一元运算符
一元符串:一元运算符只一个参数,就是要操作的对象或者值,是ECMAScript中最简单的运算符
//自加加与自减减运算
var an = 12;
var num = ++an; //这里就相当于 var num = an + 1;
var an2 = 12;
var num2 = --an2; //这里就相当于 var num = an - 1;
//当++或者--再后时
// var an = 12;
// var num = ++an; //这里分两步分析: 第一步:an = an + 1,第二步:var num = an;
// var num = an++; //这里分两步分析:第一步:var num = an,第二步:an = an+ 1;
//减减同理
二、算术运算符
算术运算符有:加(+),减(-),乘(*),除(/),取模(%);
// 减(-),乘(*),除(/);
var num = 12;
var num1 = 13;
alert(num - num1);
alert( "12"-13 ); //打印-1
alert( "12"-"20" ); //打印-8
alert( "胖胖"-"20" ); //打印NaN
// 总结:当进行减(-),乘(*),除(/) 会先把运算数转换成Number类型,然后再做数学计算,
// Number类型的NaN与任何值做运行,返回的结果都是NaN;
// javascript中的加法运算
var num = 5;
var an = 6;
alert(num + an);
alert( "5" + 6 ); //56;
var str = "5";
var num = 6;
var num2 = str + num;
alert(num2);
alert(typeof num2); //string
//总结:加号有两个作用
//1:当两边的运算数类型都为Number类型时,那就是普通的加法运算
//2:当两边有字符串时,这时会把两边都转换成String类型,然后字符串的拼接
// 被除数÷除数=商
// 取模(%);
var num = 3; //除数
alert(0%num); //打印0
alert(1%num); //打印1
alert(2%num); //打印2
//总结:当被除数小于除数时,取模值就等于被除数本本身
alert(3%num); //打印0
alert(4%num); //打印1
alert(5%num); //打印2
alert(6%num); //打印0
alert(7%num); //打印1
alert(8%num); //打印2
//总结:当被除数大于除数时,取模值就取余
三、关系运算符
//关系运算符有:>,<,>=,<=;
var an = 12,num = 13;
alert(an > num); //false
alert(an < num); //true
var str = "a";
var str1 = "b";
alert(str > str1); //打印false 这里比较的是Unicode编码;
alert(str1 > str);
alert("a".charCodeAt()); //打印97 a的Unicode编码是97
alert("b".charCodeAt()); //打印98 b的Unicode编码是98
alert("z".charCodeAt()); //打印122 z的Unicode编码是122
//[a-z] --> [97-122]
var str = "a";
var str1 = "B";
alert(str > str1); //打印true;
alert("A".charCodeAt()); //打印65
alert("B".charCodeAt()); //打印65
alert("Z".charCodeAt()); //打印90
// [A-Z] --> [65--90]
var str = "aB";
var str1 = "ab";
alert(str > str1);//false 会挨个字符做比较,直到有结果为止
四、等性运算符
// 等性运算符:等于(==),不等于(!=),全等于(===),非全等于(!==)
alert(12 == 12); //打印true
alert(12 != 12); //打印false
var str = "12";
var str1 = 12;
alert(str == str1); //打印true 因为当其中有一个运算数是字符串时,另一个是数字,就会把字符串转换成Number类型,再比较
var str = "胖胖";
var num = 12;
alert(str == num); //打印false str做类型转换成NaN,NaN与它自己都不相等,与其他比较更不相等咯
var str = "12";
var str1 = 12;
alert(str === str1); //打印false 因为当全等于时,两边不会做数据类型的转换,
alert(str !== str1); //打印true
五、三目运算符
var an = 6;
if(an > 5){
alert("an大于5");
}else{
alert("an小于5");
}
// 可以用三目运算符来写
var an = 5;
var str = an>5?"大于":"小于或者等于";
alert(str);
六、赋值运算符
//赋值运算符;
var an = 10;
alert(an-=10); //打印0 //an-=10 --> an = an - 10;
alert(an+=10); //打印20
alert(an*=10); //打印100
alert(an/=10); //打印1
alert(an%=10); //打印0
七、逻辑运算符
逻辑运算符:逻辑与(&&),逻辑或(||),逻辑非(!)
//逻辑与(&&):两边必须同时为真才为真,不然就为假
var an = (5>10)&&(10>5);
alert(an);//打印false
// 1:如果两个运算数都是对象,就会返回后面那个对象
var bool = new Object("aa") && new Object("bb");
alert(bool);//打印bb
// 2:如果某一个运算数是null另一个是一个对象, 返回null;
var bool = new Object("aa") && null;
var bool = null && new Object("aa");
alert(bool);//打印null
// 3:如果某一个运算数是undefined另一个是一个对象,返回undefined;
var bool = new Object("aa") && undefined;
var bool = undefined && new Object("aa");
alert(bool);//打印undefined
var bool = true && a; //报错,因为a没有定义过
var bool = false && a; //这里不报错,因为第一个就是false,逻辑与就没有必要去执行后面的代码
alert(bool);
// 逻辑或(||) 只要有一边为真就为真,两边全为假才为假;
var an = (5>10)||(10>5);
alert(an);//true
// 1:如果两个运算数都是对象,就会返回前面那个对象
var bool = new Object("aa") || new Object("bb");
alert(bool);//打印aa
alert(typeof bool);//打印object
// 2:如果某一个运算数是null另一个是一个对象;返回对象
var bool = new Object("aa") || null;
var bool = null || new Object("aa");
alert(bool);//打印aa
// 3:如果某一个运算数是undefined另一个是一个对象 ,返回对象;
var bool = new Object("aa") || undefined;
var bool = undefined || new Object("aa");
alert(bool);//打印aa
var bool = true || a; //逻辑或,当第一个运算数就为true时,就是直接返回true,不会再执行下面的代码;
var bool = false || a; //报错;
alert(bool);