javascript--运算符

来源:互联网 发布:网络互联协议的端口号 编辑:程序博客网 时间:2024/06/15 01:17
运算符与操作数的组合就是表达式

运算符分为:算术运算符,比较运算符,逻辑运算符,赋值运算符,一元运算符,三元运算符以及特殊运算符

1.算术运算符

  +  —   *   /    %   ++   --     //都可进行数值的运算,隐式调用Number,转化为数值进行计算,不能转换返回NaN

  1)+  :加号的二义性

    a.数值的运算

    b.字符串的连接

      任何的数据类型和字符串相加表示连接

var name="张三";var age=12;var str= "我的名字叫"+name+",我的年龄是"+age+"岁";console.log(str)   //我的名字叫张三,我的年龄是12岁//在EC6中新添加的一种表示连接的方式,` ${变量名} `var str1=`我的名字叫${name},我的年龄是${age}岁`console.log(str1)//我的名字叫张三,我的年龄是12岁//效果是一样的

  2)++:进行自增,相当于+1

  a++:先运行再自增

  ++a:先自增再运行

  先看一个例子

var d=1;               // 1console.log(d++);      // 1 d先输出1后自增为2d++;                   // 3console.log(d);        // 3

  在控制台输出之后,变量b进行了自增

  结合变量的赋值,再来看一个例子

var num=1;var num1=num++;console.log(num);    //2console.log(num1);   //1    num先赋值给num1为1再自增var nub=1;var nub1=++nub;console.log(nub);   //2console.log(nub1)  //2

2.比较运算符

  >  <  >=   <=   ==   ===    !=   !==

  1)比较运算符运算的结果都是布尔值(true false)

  2)==   :比较两个数的值是否相等,进行隐式的数据类型转换

  3)=== :不仅比较值,还要比较两个数据的类型是否相等

//都是number数据类型时,正常比较console.log(1>2);   //true//一个是字符串,一个是数值,将字符串转换为数值进行比较,不能转换为数值类型直接返回falseconsole.log("1"<2); //true//两个字符串之间进行比较,则把第一个值转化为ASII码进行比较 console.log("ab"<"b");  //true console.log("a"<"b");  //true//如果一个数值与布尔值进行比较,会把布尔值转化为数值进行比较,true为1,false为0console.log(0<true); //true//== 比较值的大小是否相同console.log(1=="1"); //trueconsole.log(""==0);  //trueconsole.log(" "==0); //true
console.log(undefined==null)//true
//===要求数值、类型都相等console.log(1==="1"); //false

3.赋值运算符

  =       +=      -=      *=       /=     %=

  +=:var a=1;   a+=2相当于a=a+2,其它类似

var a=1;a+=2;        //a=3console.log(a);  //3a*=3;        console.log(a);  //9console.log(a++);  //9    a=10,但输出值为9console.log(++a);  //11  a=11a%=2;   console.log(a); //2

  同时要注意+的二义性

var num="3";num+=4;console.log(num)  //34     +表示连接

4.逻辑运算符

   &&  ||  !      //与、或、非

  &&:运算符两边有假为假,全真为真              ||:运算符两边有真为真,全假为假          ! :取反,真为假,假为真

  1)逻辑运算符可以对任意类型的数据进行运算,但在运算的过程中会转变为对应的boolean类型值,除了null 、undefined、0、空字符串、false、NaN是false,其余的数值类型都转化为false

  2)&&  、||  隐式调用boolean类型值进行运算,在能判断真假的时候停止,但表达式最后的值不会转化为boolean类型值,返回值是停止值

console.log(1||2)  //1   console.log(1||0)  //1 console.log(0||2)  //2console.log(0||null) //null//"||":有真为真,全假为假,在可以判断的时候停止console.log(1&&2)  //2console.log(1&&0)  //0console.log(0&&2)  //0console.log(0&&null) //0//"&&":有假为假,全真为真,在可以判断的时候停止

 

  3)!:非运算结果必定是boolean类型值

console.log(!0)  //trueconsole.log(!1)  //false

5.一元运算符:操作一个数据的运算符

  typeof   !   +(正)    -(负)  ++   --   delete  new

  1)typeof:检测数据类型,返回的结果有:number\string\undefined\object\boolean\function

console.log(typeof("12"));  //stringconsole.log(typeof(12));   //numberconsole.log(typeof(function () {}));  //functionfunction object(){}var obj=new object()console.log(obj)    //object
console.log(typeof(undefined)) //undefined
console.log(typeof(null)); //object *null是个空对象console.log(typeof(false));//boolean//typeof的检测结果是字符串类型var aa=typeof ("")console.log(typeof(aa)); //string

  2)delete:删除对象的属性或方法

var obj={name:"zhangsan",sex:"man"};delete obj.sex;console.log(obj.sex) //undefinedps(null删除对象)obj=null;console.log(obj)   //null

   3)new:用来创建一个对象

5.三元运算符

  根据表达式的计算结果有条件的为变量赋值

  格式:var 变量=boolean expression ?   条件为真的值:条件为假的值

var num=1>2?  3:4;console.log(num)   //4

6.特殊运算符

  , :逗号   1)一次声明多个变量   2)函数传多个参数用逗号隔开   3)多个键值对之间用逗号隔开。。。

  ():括号   1)运算的时候有优先级的作用     2)函数的调用     3)正则形成原子分子

 

ps:运算符运算过程中有些会涉及到隐式调用,隐式 调用主要包括:

  1)算术运算符调用Number类型,如果能转换为数值进行运算,不能就返回NaN

  2)比较运算符调用Number 

  3)逻辑运算符调用boolearn类型值,但&&   ||  返回的值不是boolearn类型值

  4)三元运算符调用boolearn类型值     

  另外,if语句判定条件也会隐式调用boolearn类型值,条件为真执行

原创粉丝点击