# JavaScript：运算符

94人阅读 评论(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;

var box = '89';

var box = 'ab';

var box = false;

var box = 2.3;

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

var box = 100;

var box = '89';

var box = 'ab';

var box = false;

var box = 2.3;

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


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

var box = 1 + NaN; //NaN，只要有一个 NaN 就为 NaN

var box = Infinity + Infinity; //Infinity

var box = -Infinity + -Infinity; //-Infinity

var box = Infinity + -Infinity; //NaN，正无穷和负无穷相加等 NaN

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

var box = '您的年龄是：'+ 10 + 20; //您的年龄是：1020，被转换成字符串

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

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

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

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

var box = -100 - 70 //等于-170

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

var box = 1 - NaN; //NaN，只要有一个 NaN 就为 NaN

var box = Infinity - Infinity; //NaN

var box = -Infinity - -Infinity; //NaN

var box = Infinity - -Infinity; //Infinity

var box = -Infinity - Infinity; //-Infinity

var box = 100 - true; //99，true 转成数值为 1

var box = 100 - ''; //100，''转成了 0

var box = 100 - '70'; //30，'70'转成了数值 70

var box = 100 - null; //100，null 转成了 0

var box = 100 - 'Lee'; //NaN，Lee 转成了 NaN

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

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

//乘法
var box = 100 * 70; //7000

var box = 100 * NaN; //NaN，只要有一个 NaN 即为 NaN

var box = Infinity * Infinity; //Infinity

var box = -Infinity * Infinity; //-Infinity

var box = -Infinity * -Infinity; //Infinity

var box = 100 * true; //100，true 转成数值为 1

var box = 100 * ''; //0，''转成了 0

var box = 100 * null; //0，null 转成了 0

var box = 100 * 'Lee'; //NaN，Lee 转成了 NaN

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

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

//除法
var box = 100 / 70; //1.42....

var box = 100 / NaN; //NaN

var box = Infinity / Infinity; //NaN

var box = -Infinity / Infinity ; //NaN

var box = -Infinity / -Infinity; //NaN

var box = 100 / true; //100，true 转成 1

var box = 100 / ''; //Infinity，

var box = 100 / null; //Infinity，

var box = 100 / 'Lee'; //NaN

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

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

/*

1.第一个操作数是对象，则返回第一个操作数；
2.第一个操作数的求值结果为 false，则返回第二个操作数；
3.两个操作数都是对象，则返回第一个操作数；
4.两个操作数都是 null，则返回 null；
5.两个操作数都是 NaN，则返回 NaN；
6.两个操作数都是 undefined，则返回 undefined；
*/

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

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

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

var box = null || null; //null

var box = NaN || NaN; //NaN

var box = undefined || undefined; //undefined



/*

1.第一个操作数是对象，则返回第二个操作数；
2.第二个操作数是对象，则第一个操作数返回 true，才返回第二个操作数，否则返回 false;
3.有一个操作数是 null，则返回 null；
4.有一个操作数是 undefined，则返回 undefined。

*/

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

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

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

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

var box = undefined && undefined; //undefined


/*
3.逻辑非(NOT)：! 逻辑非运算符可以用于任何值。

1.操作数是一个对象，返回 false；
2.操作数是一个空字符串，返回 true；
3.操作数是一个非空字符串，返回 false；
4.操作数是数值 0，返回 true；
5.操作数是任意非 0 数值(包括 Infinity)，false；
6.操作数是 null，返回 true；
7.操作数是 NaN，返回 true；
8.操作数是 undefined，返回 true
*/
var box = !(5>4); //false

var box = !{}; //false

var box = !''; //true

var box = !'Lee'; //false

var box = !0; //true

var box = !8; //false

var box = !null; //true

var box = !NaN; //true

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

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：124742次
• 积分：4511
• 等级：
• 排名：第6616名
• 原创：324篇
• 转载：10篇
• 译文：0篇
• 评论：12条
文章分类
最新评论