二.运算符
运算符也叫操作符,操作符是我们如何在变量和值时实施操作的方式,.是我们发起运算最简单的方式.
JavaScript 拥有如下类型的运算符。
- 赋值运算符((Arithmetic operators)
- 比较运算符((Comparison operators)
- 算法运算符((Logical operators))
- 位运算符(Bitwise operators)
- 逻辑运算符(Logical operators)
- 字符串运算符(String operators)
- 条件(三元)运算符(Conditional operator)
- 逗号运算符(Comma operator)
- 一元运算符(Unary operators)
- 关系运算符(Relational operator)
1赋值运算符
一个 赋值运算符(assignment operator) 将它右边操作数的值赋给它左边的操作数。最简单的赋值运算符是等于(=
),它将右边的操作数值赋给左边的操作数。那么 x = y
就是将 y 的值赋给 x。
= 赋值
+= 加法赋值
-= 减法赋值
*= 乘法赋值
/= 除法赋值
%= 取余赋值
**= 求幂赋值
++
...
let num = 4; //将数字2的值赋值给变量a
num += 3;// 等价于 a = a + 3;
console.log(num) // 7
let num_a = 2;
num_a **= 3; // 等价为 num_a = num_a * num_a * num_a 即 num_a的3次方
console.log(num)// 8
解构
对于更复杂的赋值,解构赋值语法是一个能从数组或对象对应的数组结构或对象字面量里提取数据的 Javascript
表达式。
const foo = ['one','two','three'];
//不使用解构
let one = foo[0],
tow = foo[1],
three= foo[2];
//使用解构赋值
let [one, two, three] = foo;
2.比较运算符
比较运算符]比较它的操作数并返回一个基于表达式是否为真的逻辑值,一般返回true 或false.
等于 == | 如果两边操作数相等返回true |
---|---|
不等于 != | 如果两边操作数不相等返回true |
全等 === | 两边操作数相等且类型相同,返回true |
不全等 !== | 两边操作数不相等且类型不相同,返回true |
大于 > | 左边操作数大于右边操作数返回true |
大于等于 >= | 左边的操作数大于或等于右边的操作数返回true |
小于 | 左边的操作数小于右边返回true |
小于等于 | 左边的操作数小于等于右边的操作数返回true |
let a = 1,
b = '1';
console.log(a === b)// 返回false 因为全等两边操作数类型不相同;
console.log(40 > 50) //fasle
3.算术运算符
算术运算符使用`作为操作数并返回一个数字,标准的算术运算符就是加减乘除;
加 +
减 -
乘 *
除 \
取余数 %
括号()
除了这几种标准运算符 还有 自增 ++
, 自减 --
, 一元负值符,-
,一元正值符,+
,指数运算符 **
;
consoel.log( 1 + 2) //3 两数之和
console.log( 1 - 4 )// - 3 两数之差
console.log( 1 * 2) // 2 两数之积
console.loh( 6 / 3 ) // 2 两数之商
console.log( 2 % 3 ) //2 两数之余
let a = 1;
a++; //等价为 a += 1;
console.log(a)// 2
-a;// 等价于 a = -a 返回操作数的负值.
console.log(a);//-3
4.逻辑运算符
逻辑运算符常用于布尔(逻辑)值之间; 当操作数都是布尔值时,返回值也是布尔值。
且 或非
&& 逻辑与预算(且);
&&
用于布尔值时,当操作数都为true时返回true;否则返回false.|| 逻辑或运算(或);
||
用于布尔值时,当操作数有一个为true时返回true;如果两个操作数都是false返回false;! 逻辑非元素 (非); 如果操作数能够转为true则返回false, 否则返回true;
console.log(true && true)// true
console.log(true || false)// true
console.log(!true)// false;
console.log(true || false && !true || false) // true
短路求值
作为逻辑表达式进行求值是从左到右,它们是为可能的“短路”的出现而使用以下规则进行测试:
false && angthing // 被短路求值为fasle;
true || anything // 被短路求值为 true
//anythin表示任意变量, anything部分不会被求值,所以这样做不会产生任何副作用。
5 .字符串运算符
除了比较操作符,它可以在字符串值中使用,连接操作符(+)连接两个字符串值相连接,返回另一个字符串,它是两个操作数串的结合。
console.log("my " + ' name ' + ' is ayu')//my name is ayu
简写操作符+= 也可以用来拼接字符串,例如:
let str = 'string';
str+='data';
console.log(str)// stringdata
6.条件(三元运算符)
条件操作符
是JavaScript中唯一需要三个操作数的运算符.运算的结果根据给定条件在两个值中取一.语法为:
//条件 ? 值一 : 值二
let num = 4;
let yesOrNo = (num >= 10) ? 'yes' : 'no';
console.log(yesOrNo)// no
//当num大于等于 10 条件成立返回true时, 将'yes'赋值给yesOrNo, 否则赋值'no'
7.逗号操作符
逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。
语法 expr1, expr2,expr3.... 参数任意表达式
描述:
当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for
循环中提供多个参数。
let x = 1;
x = (x++, 5);
console.log(x)// 5
let a,b =43;
console.log(a)//undefined ;
console.log(b)// 43
8.一元操作符
一元操作符仅仅操作一个操作数.
delete
delete
操作符, 删除一个对象或一个对象的属性或者一个数组中某一个的键值.语法如下
delete objectName;
delete objectName.property;
delete objectName[index];
delete property; // legal only within a with statement
objectName
是一个对象名,property
是一个已经存在的属性,index
是数组中的一个已经存在的键值的索引值。
你能使用 delete
删除各种各样的隐式声明, 但是被var
声明的除外。
// 如果删除成功返回 true 属性或元素会变成undefined 删除失败 返回false
x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4; // 创建一个属性 h
delete x; //返回true
delete y; // 返回false 如果用var 声明则不能删除
delete Math.PI; // 返回false 不能删除预定义的方法
delete myobj.h; //返回 true 可以删除用户定义的属性吗
delete myobj; // 返回 true 可以删除隐式声明的变量
删除数组的元素
删除数组中的元素时,数组的长度是不变的, 值变为undefined;
const arr = [43,5,4,546];
delete arr[0];
console.log(arr) //[empty, 5, 4, 546]
arr[0] = 1;
console.log(arr) //[1, 5, 4, 546]
//empty 表示空 数组下标0对应的数字变为空, 但下标依然存在
typeof
typeof
操作符 可以通过下面两种方式使用.
typeof operand
typeof (operand)
typeof 操作符返回一个表示 operand 类型的字符串值。operand 可为字符串、变量、关键词或对象,其类型将被返回。operand 两侧的括号为可选。
let fn = function(){}
let str = 'data';
let num = 43;
let today = new Date();
console.log(typeof fn);//function
console.log(str);// string
console.log(num); //Number
console.log(today); // object
console.log(typeof true)// boolean
console.log(typeof null) // object; null
console.log(typeof undefined)//undefined
void
void (expression)
void expression
void运算符表示一个运算没有返回值.
例如如下创建了一个超链接的文本, 当用户点击文本时, 不会任何效果.
<a href="javascript:void(0)">Click here to do nothing</a>
9关系运算符
关系运算符对操作数进行比较, 根据比较结果真或假, 返回相应的布尔值.
in
in
操作符,如果所指定的属性确实存在于所指定的对象中,则会返回true
,语法如下:
propNameOrNumber in objectName
在这里 propNameOrNumber
可以是一个代表着属性名的字符串或者是一个代表着数组索引的数值表达式,而objectName
则是一个对象名。
let arr = new Array("data1","data2","data3");
let obj = {name:"ayu",age:78};
console.log(0 in arr)// return true;
console.log('data1' in arr) // return true
console.log('name' in obj)// true
console.log(name in obj) // false
instanceof
如果所判断的对象确实是所指定的类型, 则返回true , 语法如下:
objectName instanceof objectType
objectName
是需要做判别的对象的名称,而objectType
是假定的对象的类型, 例如Date
或 Array
.
let date = new Date(2020, 5, 24);
console.log(date instanceof Date)//true