JavaScript:运算符

原创 2016年06月01日 12:26:46
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);
版权声明:本文为博主原创文章,未经博主允许不得转载。

javascript中得in运算符

1、For...In 声明用于对数组或者对象的属性进行循环/迭代操作。     对于数组 ,迭代出来的是数组元 素,对于对象 ,迭代出来的是对象的属性; var x va...
  • alex8046
  • alex8046
  • 2014年10月29日 14:23
  • 582

JavaScript特殊运算符

在JavaScript中有一些运算符,不直接产生运算效果,而是用于影响运算效果,这一类运算符的操作对象通常是“表达式”,而非“表达式的值”。另外的一些运算符不直接针对变量的值运算,而是针对变量运算。详...
  • sysuzjz
  • sysuzjz
  • 2016年02月18日 17:09
  • 861

(javascript进阶) 运算符“||”和“&&”的巧妙用法

首先出个题:如图: 假设对成长速度显示规定如下: 成长速度为5显示1个箭头; 成长速度为10显示2个箭头; 成长速度为12显示3个箭头; 成长速度为15显示4个箭头; 其他都显示都显示...
  • ClydeKuo
  • ClydeKuo
  • 2017年02月08日 16:06
  • 8466

JavaScript中的typeof运算符

首先,typeof是一个一元运算符(就像++,--,!,- 等一元运算符),不是一个函数,也不是一个语句。这个辨析很必要,初学者往往以为它是一个函数,因为它经常被以typeof(abc)类似的形式使用...
  • cuixiping
  • cuixiping
  • 2009年07月11日 23:10
  • 5320

javascript运算符之相等与严格相等

例:      var a=[1,2,3];      var b=[1,2,3];      var c=a;      var result=[a==b,a==c,a==a]; 看到上述...
  • xautlily
  • xautlily
  • 2015年09月28日 22:14
  • 588

JavaScript的语法变量运算符

JavaScript中的基本语法
  • jinhuoxingkong
  • jinhuoxingkong
  • 2016年05月22日 14:42
  • 1024

等号重构(operator=)函数中应该注意的问题

编写等号运算符重构函数(operator=)时,有些问题是需要注意的: 注意1:等号运算符重构函数(operator=)中应该处理“自我赋值” 注意2:等号运算符重构函数(operator=)返回一个...
  • spencerzou
  • spencerzou
  • 2014年08月01日 11:10
  • 1040

JavaScript中逻辑运算符(布尔操作符)

逻辑非NOT !参数按照下表中的规则转换为逻辑值: 参数类型 结果 Undefined false Null false Boolean 结果等于输入的参数(不转换) ...
  • itpinpai
  • itpinpai
  • 2017年04月18日 14:35
  • 388

JavaScript的typeof运算符的可能结果有哪些?

typeof运算符用来检测给定变量的数据类型。对一个值使用typeof运算符可能的返回值有: "undefined" —— 如果这个值没有定义 "boolean" —— 如果这个值是布尔值 "obje...
  • github_39673115
  • github_39673115
  • 2017年08月01日 17:56
  • 300

JavaScript实现call、apply和bind

每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。详细内容查看JavaScript中call()、a...
  • qq_27626333
  • qq_27626333
  • 2017年12月13日 17:29
  • 351
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript:运算符
举报原因:
原因补充:

(最多只允许输入30个字)