js中的操作符

算数运算符

+(加法)-(减法)*(乘法)/(除法)%(取余)

var num1 = 8;
var num2 = 4;

console.log(num1 + num2); //12
console.log(num1 - num2); //4
console.log(num1 / num2); //2
console.log(num1 * num2); //32
console.log(num1 % num2); //0

一元运算符

+(正号)

1.进行数据相加

var num1 = 2;
var num2 = 6;
var sum = num1 + num2; //8

2.放在数据前面,表示取正数

var num = 6;
console.log(+num); // 6

3.可以当作字符串连接符

var a = 'hello';
var b = 'world';
console.log(a + b); // helloworld

4.+可以将数字字符串或者布尔类型等隐式转换成number类型

var a = '123';
var b = true;
console.log(+a, +b); // 123  1

-(负号)

1.+ -可以对数字进行取正取负

var num1 = 6;
var num2 = -6;
console.log(-num1); //-6
console.log(+num1); //6
console.log(-num2); //6
console.log(+num2); //-6

2.将数字隐式转换成数字

var num1 = '20';
var num2 = '-20';
console.log(-num1); //-20
console.log(+num1, typeof +num1); //20 number
console.log(-num2); //20
console.log(+num2, typeof +num2); //-20 number

!(取反)

用作条件判断时取反,类型判断等,还可以用!将变量转换为Boolean类型

var a;
if (!a) {}
console.log(!null);  //true
console.log(!undefined);  //true
console.log(!''); //true
console.log(!100);  //false
console.log(!'abc');  //false

++(递增)

++放在前面  先累加,后赋值

var num = 1;
var a = ++num;
console.log(a,num);//2  2

++放在后面 先赋值,后累加

var num = 1;
var a = num++;
console.log(a,num);//1 2

delete

删除数组或对象中特定索引的值

delete 可以删除对象属性 删除数组元素

var obj ={
    name:'zhangsan',
    age:12
}
console.log(obj);
delete obj.name;
console.log(obj);

typeof

操作数放到typeof的后面,会返回当前操作数的类型,对于数值类型可以准确返回,对于引用类型,Function会返回'function',其他都只会返回'object'

赋值运算符

= 赋值运算符

=可以向变量赋值

+=  -=  *=  /=  %=赋值运算符

+=向变量添加值

-=从变量中减去一个值

*= 相乘变量

/=对变量相除

%= 把余数赋值给变量

var num = 10;
var c = 5;
num+=c;// num = num +c
console.log(num,c);//15 5

比较运算符

比较运算符在逻辑语句中使用,以判定变量或值是否相等。通常用于条件判断语句中。

比较运算符的优先级低于算术运算符,高于赋值运算符运算结果一般都为boolean

==

等同的意思 两边值类型不同的时候 先转换为同一类型,再比较值是否相等

// 常用于相同类型的值的比较
console.log(123 == 345);  //false
console.log('123' == '345');  //false
// 如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较
// 如果一个是null,一个是undefined,那么相等
console.log(null == undefined); //true
// 如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
console.log(123 == '123');  //true
//如果是整数类型和boolean类型的数值进行比较,1和true使用==比较结果为true,0和false使用==比较结果也为true,其它都为false;可以理解记忆为使用==比较整数时将1等同true,将0等同false。
console.log(1 == true); //true
console.log(0 == false);  //true

===

恒等的意思 不做类型转换 ,类型不同结果则不同

// 如果类型不同,就一定不相等
console.log(123 === '123'); //false
// 如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN() 来判断)
console.log(123 === 123); //true
console.log(123 === 10 / 'a');  //false
// 如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
console.log('hello' === 'hello'); //true
// 如果两个值都是true,或是false,那么相等
console.log(true === true); //true
console.log(1 === true);  //false
// 如果两个值都是null,或是undefined,那么相等
console.log(null === null); //true
console.log(null === undefined);  //false

==和===区别

双等表示只要值相等即可为真,而三等则要求不仅值相等,而且也要求类型相同。

对于string,number等基础类型,==和===时有区别的

1.不同类型间比较,双等之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等

2.同类型比较,直接进行“值”比较,两者结果一样

对于Array,Object等高级类型,==和===是没有区别的

对指针地址进行比较

var obj = {
    name:'zhangsan',
    age:12
}
var obj1 = {
    name:'zhangsan',
    age:12
}
var obj2 = obj1;
console.log(obj==obj1);//false
console.log(obj===obj1);//false
console.log(obj1==obj2);//true

基础类型和高级类型,==和===是有区别的 

1.对于==,将高级转化为基础类型,进行“值”比较

2.因为类型不同,===结果为false

!=

!= 和 ==用法类似 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。

>, <, >=, <=

数值情况下直接比较数值大小

非数值进行比较时,先将其转换为数值,在进行比较

// true转换为数值是1 false转换为数值是0
console.log(1 > true); // 结果为false
console.log(1 >= true); // 结果为true
console.log(1 > '0'); // 结果为true
console.log(1 > null); // 结果为true
//任何值和NaN作比较结果都是false
console.log(1 > 'hello'); // 结果为false 任何值和NaN作比较结果都是false

如果符号两侧都是字符串,不会将其转换为数值进行比较,而会分别比较字符串中字符的Unicode编码。

注意:所以在比较两个字符串型的数字时,一定要先转型。

console.log('134545353' > '5'); // 不转型则返回false
console.log('134545353' > +'5');// 这样结果才返回true

而在比较字符编码时,是一位一位进行比较的,如果符号两侧第一位一样,则比较下一位,所以借此可以用来对英文进行排序,而比较中文是没有意义的。

console.log('1' < '5'); // 结果为true
console.log('11' < '5'); // 结果也为true
console.log('be' > 'b'); // 结果为true 先比较第一位b的字符编码是一样的,再比较第二位,由于be有e,而b只有一位,所以be>b
console.log('be' < 'b'); // 结果为false

逻辑运算符

&& 与(同真才真,有假则假)

var a = 10, b =5;//并且 既满足前面表达式  又满足后面表达式
if(a>10&&b<6){
    console.log('满足条件');
}else{
    console.log('不满足条件');
}

如果两个操作数第一个是假的返回第一个操作数 null "" NaN false undefined

如果两个操作数第一个是真的 返回第二个

console.log(null && 'hello');//null
console.log("" && 'hello');// 空字符串
console.log(false && 'hello');//false
console.log(undefined && 'hello');//undefined
console.log('hello'/10 && 'hello');//NaN
console.log('hello' && 'world');//world

|| 或 (有真才真,同假则假)

//||或者  只要满足一个条件 就能进入条件语句
if(a<10||b<6){
    console.log('满足条件');
}else{
    console.log('不满足条件');
}

如果第一个操作数为假 返回第二个数

如果第一个操作数为真 返回第一个数

console.log(null || 'hello');//hello
console.log('hello' || null);//hello

三目运算符

表达式?"符合表达式的结果":"不符合表达式的结果"

var a = 16;
if(a>=18){
    console.log('成年人');
}else{
    console.log('未成年');
}
var result = a>=18?'成年人':'未成年';
console.log(result);//未成年

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值