写点什么

JavaScript06 - 操作符

发布于: 2021 年 01 月 24 日
JavaScript06 - 操作符

操作符

  • 加、- 减 、 * 乘、/ 除、% 取余数,即余数即为所得值,() 提高优先级

// 乘、除、取余运算时,首先会将字符串转换成数字,然后再进行减运算。
console.log('28' - '18'); // 10
console.log('32' / '4'); // 8
console.log('3' * '4'); // 12
console.log('12' % '5'); // 2
// 数值和字符运算
console.log(12 + ''); // '12'
console.log(12 + 3 + '4'); // '154'
console.log('4'+ 12 + 3); // '4123'
//特殊情况console.log('123abc'-'123'); //NaN
复制代码

赋值运算符

简单的赋值操作符用等号(=)表示,它的作用是把右侧的值赋值给左侧的变量

简单的赋值操作符由等号(=)表示,它的作用就是把右侧的值赋值给左侧的变量,如下所示:

var num = 7; //刚开始班里有7个人
复制代码

如果在等号(=)前面再添加算术运算符的话,就可以完成复合赋值操作。如下所示:

var num = 7; //刚开始班里的人数num = num + 9 //后来有来了9个
复制代码

第二行代码可以用一个复合赋值来代替:

var num = 7; //刚开始班里的人数num += 9 //后来有来了9个
复制代码

每个算术操作符都有对应的复合赋值操作符,如下图所示:


自增自减操作符

i++ ++i

  • 在不参与运算的情况下:它们都是自增 1

  • 在参与运算的情况下,++写在后面,先参与运算,然后加 1;++写在前面,在参与运算前,i 先加 1,然后再参与运算。

// 在不参与运算的情况下,无论 ++ 写在操作数(age)的前面还是后面,结果都是 age 自身加一。var age = 18;age++;++age;console.log(age); 
// 在参与运算的情况下,++ 写在操作数后面,age 先参与运算,然后再自身加一。// ++ 写在操作数前面,age 先自身加一,然后再参与运算。
var age1 = 18;var num1 = 82 + age1++;console.log(num1, age1); // 100, 19
var age2 = 18;var num2 = 82 + (++age2);console.log(num2, age2); // 101, 19
复制代码

i-- --i

  • 在不参与运算的情况下,都是自减 1

  • 在参与运算的情况下,--写在后面,先参与运算,然后减 1;--写在前面,在参与运算前,i 先减 1,然后再参与运算。

// 在不参与运算的情况下,无论 -- 写在操作数(age)的前面还是后面,结果都是 age 自身减一。var age = 18;age--;--age;console.log(age);  // 16 
// 在参与运算的情况下,-- 写在操作数后面,age 先参与运算,然后再自身减一。// -- 写在操作数前面,age 先自身减一,然后再参与运算。
var age1 = 18;var num1 = 82 + age1--;console.log(num1, age1); // 100, 17
var age2 = 18;var num2 = 82 + (--age2);console.log(num2, age2); // 99, 17
复制代码

逻辑运算符

逻辑与(&&)

逻辑与操作符由符号 && 表示,有两个操作数,如下例所示

var result = true && false;  //false
复制代码

逻辑与的真值表如下:

逻辑与的操作数不仅仅是布尔值,还可以应用于任何类型的操作数。此时,它遵循下列规则:

  • 如果两个操作数被转换成布尔值第一个是 true,则返回第二个操作数;

  • 如果两个操作数被转换成布尔值第一个为false,则返回第一个操作数;

 // var result = 3 < 2 && 5 < 15;  //falseconsole.log(false && true); // falseconsole.log('abc' && 1); // 1console.log(0 && 1); // 0console.log('' && 0); // ''
复制代码

逻辑或(||)

逻辑或操作符由两个竖线符号(||)表示,由两个操作数,如下所示:

var result = true || false;  //true
复制代码

逻辑或的真值表如下:

与逻辑与操作符一样,逻辑或的操作数也不仅限于布尔值,它也可以是其他类型的操作数。此时,它遵循下列规则:

  • 如果两个操作数被转换成布尔值第一个是 true,则返回第一个操作数;

  • 如果两个操作数被转换成布尔值第一个为false,则返回第二个操作数;

console.log(false || true); // trueconsole.log('abc' || 1);    // 'abc'console.log('' || 0);       // 0
复制代码

与逻辑与操作符一样,逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为 true,就不会对第二个操作数求值了。示例如下:

var found = true;var result = (found || undefinedVariable);  //这里不会发生错误alert(result);  //这一行会执行
复制代码

逻辑非(!)

逻辑非操作符由一个叹号(!)表示,可以应用于 ECMAScript 中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。逻辑非操作符遵循下列规则:

  • 如果操作数被转换成布尔值之后是 true,直接返回布尔值:false;

  • 如果操作数被转换成布尔值之后是 false,直接返回布尔值:true;

下面举几个例子:

alert(!new Object());    //falsealert(!"");               //truealert(!"hello world");  //falsealert(!0);               //truealert(!23);              //falsealert(!null);            //truealert(!NaN);             //truealert(!undefined);        //true
复制代码

关系运算符

>大于号

<小于号

>=大于或等于

<=小于或等于

==等于

===全等于

!=不等于

!==不全等于

小于(<)、大于、小于或等于、大于或等于这几个关系操作符用于对两个值进行比较,比较的规则与数学中的一样。这几个操作符都返回一个布尔值。

当参与比较的操作数是非数值类型时,则会先进行数据类型转换,然后再参与比较。比较规则如下:

  • 如果两个操作数都是数值,则执行数值比较。

  • 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值。

  • 如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。

  • 如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较。

  • 如果一个操作数是对象,则调用这个对象的 valueOf() 方法,将得到的结果按照前几条规则执行比较。如果对象没有 valueOf() 方法,则调用 toString() 方法,将得到的结果按照前几条规则执行比较。

示例:

var result = "Brick" < "alpha";  //true
复制代码

==和===的用法

  • 对于基本数据类型来说:==当类型相等时,判定值是否相等,当类型不相等时,转换成相同的类型后,比较值是否相等。===只有当类型相等时,判定值是否相等。

连比的写法

比如,想要查看 2 这个数字,是不是在 315 之间,像下面这样写是错误的:

alert(3 < 2 < 15)  //true
复制代码

这是因为,计算机会先比较 3 < 2,得到的结果是 false。然后再比较 false < 15false 会被隐式转换为0,所以 0 < 15 的结果是 true

正确的写法应该先拆开,中间用一个 && 连接。也就是说:3 小于 2 且 2 小于 15 。

alert(3 < 2 && 2 < 15)  //false
复制代码

条件运算符(三元运算符)

语法:

表达式 ? 如果表达式结果为 true 执行这里的代码 1 : 如果表达式结果为 false 执行冒号后面的代码 2 ;

执行顺序:

  1. 判断条件表达式是否为 true

  2. 如果为 true,执行问号(?)后面的代码。

  3. 如果为 false,执行冒号(:)后面的代码。

运算符优先级

常用运算符优先级从高到底

  1. () 优先级最高

  2. 一元运算符 ++ -- !

  3. 算数运算符 先* / % 后 + -

  4. 关系运算符 > >= < <=

  5. 相等运算符 == != === !==

  6. 逻辑运算符 先 && 后||

  7. 赋值运算符 =


发布于: 2021 年 01 月 24 日阅读数: 17
用户头像

所思在远道 2020.08.19 加入

一只慢慢进步的小白

评论

发布
暂无评论
JavaScript06 - 操作符