js、运算符

来源:互联网 发布:吕雉与戚夫人知乎 编辑:程序博客网 时间:2024/06/05 08:51
一、一元运算符

一元符串:一元运算符只一个参数,就是要操作的对象或者值,是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 );      //打印-1alert( "12"-"20" );    //打印-8alert( "胖胖"-"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);   //打印0alert(1%num);   //打印1alert(2%num);   //打印2//总结:当被除数小于除数时,取模值就等于被除数本本身alert(3%num);  //打印0alert(4%num);  //打印1alert(5%num);  //打印2alert(6%num);  //打印0alert(7%num);  //打印1alert(8%num);  //打印2//总结:当被除数大于除数时,取模值就取余

三、关系运算符

//关系运算符有:>,<,>=,<=;var an = 12,num = 13;alert(an > num);   //falsealert(an < num);   //truevar str = "a";var str1 = "b";alert(str > str1);  //打印false   这里比较的是Unicode编码;alert(str1 > str);alert("a".charCodeAt());   //打印97   a的Unicode编码是97alert("b".charCodeAt());   //打印98   b的Unicode编码是98alert("z".charCodeAt());   //打印122  z的Unicode编码是122//[a-z] --> [97-122]var str = "a";var str1 = "B";alert(str > str1);  //打印true;alert("A".charCodeAt());   //打印65alert("B".charCodeAt());   //打印65alert("Z".charCodeAt());   //打印90// [A-Z] --> [65--90]var str = "aB";var str1 = "ab";alert(str > str1);//false   会挨个字符做比较,直到有结果为止

四、等性运算符

// 等性运算符:等于(==),不等于(!=),全等于(===),非全等于(!==)alert(12 == 12);   //打印truealert(12 != 12);     //打印falsevar 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);//打印undefinedvar 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);//打印aaalert(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);//打印aavar bool = true || a;   //逻辑或,当第一个运算数就为true时,就是直接返回true,不会再执行下面的代码;var bool = false || a;  //报错;alert(bool);