操作符包括算数运算符、一元运算符、赋值运算符、逻辑运算符以及三目运算符
算数运算符包括加、减、乘、除、取余(+、-、*、/、%),用于正常的数据运算,需要注意的是在进行数据运算的时候,除了+以外,其他的运算符在进行数据运算的时候可以把字符串类型的数字隐形转换成数字。
var num = "8"
var num1 = 4
console.log(num+num1)//84
console.log(num-num1)//4
console.log(num*num1)//32
console.log(num/num1)//2
console.log(num%num1)//0
一元运算符
正号(+)、负号(-)、逻辑取反运算符(!)、递增(++)、递减(--)、删除(delete)、typeof、void
正号(+)的用法: 1.用于数据相加(等同于数字相加的算数运算) 2.+放在数据的前面,表示取正数; 3.+和字符串运算的时候,被当作字符串的连接符 4.'+'可以将数字字符串或布尔类型等隐式转换成number类型,+要放加在数据的前面(注意!) var a = '123'; var b = true; console.log(+a, +b); // 123 1
负号(-) 1.正号负号可以对数字进行取正或者取负,其他的符号不能进行取正取负的操作 2.正、负号可以将字符串数字隐式转换成数字,+、-要放加在数据的前面(注意!) var a = '123'; console.log(-a); // -123 console.log(typeof -a);//number
取反(!) 经常被用作条件判断时的取反操作,类型判断等,还可以用'!'将变量转换为Boolean类型 除了null/undefined/''(空字符串)/0取反转换成布尔值是true以外,其他的都是false var a; if (!a) {} console.log(!0);//true console.log(!null); //true console.log(!undefined); //true console.log(!''); //true console.log(!100); //false console.log(!'abc'); //false
递增(++)和递减(--) 通常用于循环语句,动画操作等,在使用的时候要注意符号的位置, 符号在前面和在后面表达的意思是不一样的 ++放在前面,并进行赋值的时候,执行的操作时先累加再赋值,例如: var num1 = 0; var a = ++num1 console.log(a)//1 console.log(num); // 1 ***num1先自加一再赋值给变量a ++放在后面,并进行赋值的时候,执行的操作时先赋值再累加,例如: var num = 0; var a = num++; console.log(a); // 0 console.log(num); // 1 ****先把num的值赋值给a,num再自加1 递减方法符号的使用方法和递增符号类似
delete:删除数组或者是对象中特定索引的值 var obj={ name:'zhangsan', age:52 } delete obj.name; console.log(obj);//{age:52} var arr = [1,2,3,4,5,6] delete arr[3] console.log(arr)//[ 1, 2, 3, <1 empty item>, 5, 6 ]
typeof用来判断当前操作数的数据类型,操作数放到typeof的后面,会返回当前操作数的类型,对于基本类型可以准确返回,对于引用类型,Function会返回'function',其他都只会返回'object' 基本数据类型 var a = 1 var b ='1' var c =null var d =undefined var f =true console.log(typeof a,typeof b,typeof c,typeof d,typeof f)//number string object undefined boolean 引用数据类型 var obj = { name:'zhangsan', age: 17 }; var arr = [1,2,3,4,5]; var a =function(){ console.log("123"); } console.log(typeof obj, typeof arr,typeof a); //object object function
void:丢弃表达式的返回值,返回undefined 使用方式: 1.void表达式 2.void(表达式) console.log(void(1+6)); //undefined
赋值运算符
=赋值运算符向变量赋值
var a = 7//把=右边的值赋值给左边的变量
+= 赋值运算符向变量添加值
var a = 7 a +=8 console.log(a)//15把+=右边的值加给左边的变量
-= 赋值运算符从变量中减去一个值。
var a = 7 a -=8 console.log(a)//-1
*= 赋值运算符相乘变量。
var x = 7; x *= 8; console.log(x)//56 把*=右边的值和变量相乘
/= 赋值运算符对变量相除。
var x =8 ; x/=4 console.log(x)//2变量x除以/=右边的值
%= 赋值运算符把余数赋值给变量。
var x =7 ; x%=4 console.log(x)//3
逻辑运算符(&&、||、!)
&&(与):同真才为真,有假则假
可应用于任意数值。如果有一个操作数不是布尔类型,逻辑与就不一定返回boolean类型
情况1:如果第一个操作数是null,NaN,undefined,false,0,""可被转换为false的值的时候就返回操作数本身 console.log(null && 'world'); //null 情况2:当第一个表达式为真,整个表达式的结果取决于第二个表达式,返回第二个表达式 console.log('hello' && 'world'); //world 情况3:当第一个表达式为假,整个表达式的结果就可以确定为假,返回第一个表达式 console.log(false && 'world'); //false 情况4:[null,NaN,undefined,false,0,""]直接返回该操作数 console.log(''&&123); //'' 空字符串 console.log(0&&null); //0 console.log(123&&345); //345 console.log(123&&undefined); //undefined
||(或):有真才为真,同假为假
情况1:如果两个或多个操作数都是null,NaN,undefined,false,0,""可被转换为false的值的时候返回最后一个操作数。 console.log(null || false); //false 情况2:如果第一个操作数是null,NaN,undefined,false,0,"" 则返回第二个操作数。 console.log(null || 'hello'); //'hello' 情况3:如果第一个操作数是真,直接返回第一个操作数。 console.log(123||345); //123
总结:当第一个表达式为真,整个表达式的结果就可以确定,返回第一个表达;当第一个表达式为假,整个表达式的结果取决于第二个表达式,返回第二个表达式。有一个为true结果就为true,同时为false结果才为false
!(not):经常被用作条件判断时的取反操作,类型判断等,还可以用'!'将变量转换为Boolean类型
var a; if (!a) {} console.log(!0);//true console.log(!null); //true console.log(!undefined); //true console.log(!''); //true console.log(!100); //false console.log(!'abc'); //false
JavaScript中的三目运算符用作判断时
基本语法为: expression ? sentence1 : sentence2
当expression的值为真时执行sentence1,否则执行 sentence2
var age = 19; var result = age > 16 ? "成年人":"未成年人"; // 当age大于16岁时,条件为真,执行sentence1,其次反之