关闭

JavaScript:运算符

标签: javascript
106人阅读 评论(0) 收藏 举报
分类:
var box = 100;
++box;
alert(box); //101 相当于box = box + 1;
--box;
alert(box); //100 相当于box = box - 1
box--;
alert(box); //99  相当于box = box - 1
box++;
alert(box); //100 相当于box = box + 1;

var box = 100;
var age = ++box; //age 值为 101 ,先加1后赋值
alert(age);

var box = 100;
var height = box++; //height 值为 100,先赋值后加1
alert(height);

var box = '89';
box++;
alert(box); //90,数值字符串直接转化为数值

var box = '89aa';
box++;
alert(box);//NaN,包含非数值的转换为NaN

var box = false;
box++;
alert(box);//1 false转为数值是0
var box = true;
box++;
alert(box);//2 true转为数值是1

var box = {
    toString : function(){
        return 1;
    }

}; //1,不设置 toString 或 valueOf 即为 NaN 
box++;
alert(box); //2

var box; 
box++;
alert(box); //NaN

var box = 100;
alert(+box); //100,对于数值,不会产生任何影响 

var box = '89';
alert(+box); //89,数值字符串转换成数值 

var box = 'ab';
alert(+box); //NaN,字符串包含非数值转成 NaN

var box = false;
alert(+box); //0,布尔值转换成相应数值 

var box = 2.3;
alert(+box); //2.3,没有变化 

var box = { 
    toString:function(){ 
        return 1;
    } 
 }; 
alert(+box);//1,不设置 toString 或 valueOf 即为 NaN 

var box = 100;
alert(-box); //-100,对于数值,不会产生任何影响 

var box = '89';
alert(-box); //-89,数值字符串转换成数值 

var box = 'ab';
alert(-box); //NaN,字符串包含非数值转成 NaN

var box = false;
alert(-box); //0,布尔值转换成相应数值 

var box = 2.3;
alert(-box); //-2.3,没有变化 

var box = { 
    toString:function(){ 
        return 1;
    } 
 }; 
alert(-box);//-1,不设置 toString 或 valueOf 即为 NaN 

//加法
var box = 1 + 2; //等于 3 
alert(box);

var box = 1 + NaN; //NaN,只要有一个 NaN 就为 NaN 
alert(box);

var box = Infinity + Infinity; //Infinity 
alert(box);

var box = -Infinity + -Infinity; //-Infinity 
alert(box);

var box = Infinity + -Infinity; //NaN,正无穷和负无穷相加等 NaN 
alert(box);

var box = 100 + '100'; //100100,字符串连接符,有字符串就不是加法 
alert(box);

var box = '您的年龄是:'+ 10 + 20; //您的年龄是:1020,被转换成字符串 
alert(box);

var box = 10 + 20 + '是您的年龄'; //30 是您的年龄,没有被转成字符串 
alert(box);

var box = '您的年龄是:'+ (10 + 20); //您的年龄是:30,没有被转成字符串 
alert(box);

var obj = {};
var box = 10 + obj; //10[objectObject],如果有 toString()或 valueOf() 则返回 10+返回数的值
alert(box);

//减法
var box = 100 - 70; //等于 30 
alert(box);

var box = -100 - 70 //等于-170 
alert(box);

var box = -100 - -70 //-30,一般写成-100-(-70)比较清晰 
alert(box);

var box = 1 - NaN; //NaN,只要有一个 NaN 就为 NaN 
alert(box);

var box = Infinity - Infinity; //NaN 
alert(box);

var box = -Infinity - -Infinity; //NaN 
alert(box);

var box = Infinity - -Infinity; //Infinity
alert(box);

var box = -Infinity - Infinity; //-Infinity 
alert(box);

var box = 100 - true; //99,true 转成数值为 1
alert(box);

var box = 100 - ''; //100,''转成了 0
alert(box);

var box = 100 - '70'; //30,'70'转成了数值 70 
alert(box);

var box = 100 - null; //100,null 转成了 0 
alert(box);

var box = 100 - 'Lee'; //NaN,Lee 转成了 NaN 
alert(box);

var obj = {
    toString : function(){
        return '1';
    }

};
var box = 100 - obj //NaN,如果有 toString()或 valueOf() 则返回 100-返回数的值
alert(box);

//乘法 
var box = 100 * 70; //7000 
alert(box);

var box = 100 * NaN; //NaN,只要有一个 NaN 即为 NaN
alert(box);

var box = Infinity * Infinity; //Infinity 
alert(box);

var box = -Infinity * Infinity; //-Infinity 
alert(box);

var box = -Infinity * -Infinity; //Infinity 
alert(box);

var box = 100 * true; //100,true 转成数值为 1 
alert(box);

var box = 100 * ''; //0,''转成了 0 
alert(box);

var box = 100 * null; //0,null 转成了 0 
alert(box);

var box = 100 * 'Lee'; //NaN,Lee 转成了 NaN 
alert(box);

var obj = {
    toString : function(){
        return '1jgh1';
    }

};
var box = 100 * obj  //NaN,如果有 toString()或 valueOf() 则返回 100*返回数的值
alert(box);

//除法 
var box = 100 / 70; //1.42....
alert(box);

var box = 100 / NaN; //NaN 
alert(box);

var box = Infinity / Infinity; //NaN 
alert(box);

var box = -Infinity / Infinity ; //NaN 
alert(box);

var box = -Infinity / -Infinity; //NaN 
alert(box);

var box = 100 / true; //100,true 转成 1 
alert(box);

var box = 100 / ''; //Infinity,
alert(box);

var box = 100 / null; //Infinity,
alert(box);

var box = 100 / 'Lee'; //NaN 
alert(box);


var obj = {
    toString : function(){
        return '1';
    }

};
var box = 100 / obj; //NaN,如果有 toString()或 valueOf() 则返回 100/ 返回数的值
alert(box);

/*
逻辑或(OR):|| 
如果两边的操作数有一个操作数不是布尔值的情况下,逻辑与运算就不一定返回布尔值,此时,遵循已下规则: 
1.第一个操作数是对象,则返回第一个操作数; 
2.第一个操作数的求值结果为 false,则返回第二个操作数; 
3.两个操作数都是对象,则返回第一个操作数; 
4.两个操作数都是 null,则返回 null; 
5.两个操作数都是 NaN,则返回 NaN; 
6.两个操作数都是 undefined,则返回 undefined;
*/

var obj = {};
var box =  obj || (5>3); //[object Object]
alert(box);

var box = (5>3)|| obj; //true 
alert(box);

var obj1 = {};
var obj2 = {};
var box = obj1|| obj2; //[object Object] 
alert(box);

var box = null || null; //null 
alert(box);

var box = NaN || NaN; //NaN 
alert(box);

var box = undefined || undefined; //undefined
alert(box);


/*
如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时,遵循已下规则: 
1.第一个操作数是对象,则返回第二个操作数; 
2.第二个操作数是对象,则第一个操作数返回 true,才返回第二个操作数,否则返回 false; 
3.有一个操作数是 null,则返回 null4.有一个操作数是 undefined,则返回 undefined。

*/

var obj = {};
var box =  obj && (5>3); //true
alert(box);

var obj = {};
var box = (5>4) && obj; //[objectObject] 
alert(box);

var box = (3>4)&& obj; //false 
alert(box);

var box = (5>4)&& null; //null
alert(box);

var box = undefined && undefined; //undefined
alert(box);

/*
3.逻辑非(NOT):! 逻辑非运算符可以用于任何值。
无论这个值是什么数据类型,这个运算符都会返回一个布尔值。
它的流程是:先将这个值转换成布尔值,然后取反,规则如下: 
1.操作数是一个对象,返回 false2.操作数是一个空字符串,返回 true3.操作数是一个非空字符串,返回 false4.操作数是数值 0,返回 true5.操作数是任意非 0 数值(包括 Infinity),false6.操作数是 null,返回 true7.操作数是 NaN,返回 true8.操作数是 undefined,返回 true
*/
var box = !(5>4); //false 
alert(box);

var box = !{}; //false 
alert(box);

var box = !''; //true 
alert(box);

var box = !'Lee'; //false 
alert(box);

var box = !0; //true 
alert(box);

var box = !8; //false 
alert(box);

var box = !null; //true 
alert(box);

var box = !NaN; //true 
alert(box);

var box = !undefined; //true
alert(box);
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:162108次
    • 积分:5121
    • 等级:
    • 排名:第5804名
    • 原创:344篇
    • 转载:10篇
    • 译文:0篇
    • 评论:21条
    文章分类
    最新评论