javascript--运算符

运算符与操作数的组合就是表达式

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

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;               // 1
console.log(d++);      // 1 d先输出1后自增为2
d++;                   // 3
console.log(d);        // 3

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

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

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

var nub=1;
var nub1=++nub;
console.log(nub);   //2
console.log(nub1)  //2

2.比较运算符

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

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

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

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

//都是number数据类型时,正常比较
console.log(1>2);   //true
//一个是字符串,一个是数值,将字符串转换为数值进行比较,不能转换为数值类型直接返回false
console.log("1"<2); //true
//两个字符串之间进行比较,则把第一个值转化为ASII码进行比较
 console.log("ab"<"b");  //true
 console.log("a"<"b");  //true
//如果一个数值与布尔值进行比较,会把布尔值转化为数值进行比较,true为1,false为0
console.log(0<true); //true
//== 比较值的大小是否相同
console.log(1=="1"); //true
console.log(""==0);  //true
console.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=3
console.log(a);  //3
a*=3;        
console.log(a);  //9
console.log(a++);  //9    a=10,但输出值为9
console.log(++a);  //11  a=11
a%=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)  //2
console.log(0||null) //null
//"||":有真为真,全假为假,在可以判断的时候停止

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

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

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

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

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

  1)typeof:检测数据类型,返回的结果有:numberstringundefinedobjectooleanfunction

console.log(typeof("12"));  //string
console.log(typeof(12));   //number
console.log(typeof(function () {

}));  //function
function 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) //undefined


ps(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类型值,条件为真执行

原文地址:https://www.cnblogs.com/wykbk/p/6800886.html