- 很高心您打开了本篇博客;
- 主要作用:通过学习JavaScript和整理笔记,为前端/后端/大数据项目提供基石;
- 复习前面两篇:
一,JavaScript基础知识。初识JavaScript,变量var和let,变量提升(var和let的区别),常量(const),标识符,注释,引入方式和输出方式-CSDN博客
二,JavaScript之数据类型。原始数据类型,引用数据类型,数据类型转换,查看数据类型。-CSDN博客
- 本篇博客是JavaScript专栏 笔记梳理 的第三篇;
- 主要内容:梳理js编程语言的运算符。算数运算符(+,-,*,/,%,**, ++,--),逻辑运算符(&&, ||,!),赋值运算符(+=,-=,*=,/-,**=,%=),比较运算符(==,===,<,>,<=,>=,!==,!=),位运算(<<,>>),其他运算符(void,delete,in, ,),运算符的优先级。
- 学习:知识的初次邂逅
- 复习:知识的温故知新
目录
一,算数运算符
1,加法运算符 +
加法运算符是最常见的运算符,用来求两个数值的合。
1,值相加
let sum=1+5;
console.log(sum);//6
console.log(1+2);//3
2,字符串互相加
同类型,字符串与字符串相加,相当于字符串的拼接
console.log('hi'+'hello');//hihello
console.log('hi'+1);//hi1'
3,不同类型的相加
不同类型的对象做加法运算,全部转为字符串,拼接
console.log(1+'2');//12
console.log(1+'hello');//1hello
console.log('hi'+'hello');//hihello
console.log('hi'+1);//hi1'
console.log([1,2]+[3]);//1,2,3
2,减法运算符 -
减法运算符,只能用于数值运算。其他类型互相做减法运算,返回NaN。数值和字符串数字做减法运算会转成字符串之间的运算。
let sub=10-5;
console.log(10-5);
console.log([1,2]-[2]);//NaN
console.log('hi'-2);//NaN
console.log('hi'-'hello');//NaN
console.log('10'-8);//2
3,乘法运算符 *
乘法运算符,通常用于数值运算。其他类型互相做乘法运算,返回NaN。数值和字符串数字相互*会转为字符串之间运算。
let mul=10*5;
console.log(10*5);//50
console.log(10*'hi');//NaN
console.log('hi'*2);//NaN
console.log(10*'2');//20
4,除法运算符 /
除法运算符。通常用于数值运算。其他类型之间互相做乘法运算,返回NaN。数值与字符串数字之间做除法运算会转为字符串之间运算
console.log('除法')
let div=10/5;
console.log(10/5);//2
console.log(10/0);//Infinity
console.log('10'/2);//5
console.log(2/'dd');//NaN
5,模运算符 %
模运算符就是取余。通常数值运算。用来取余2来判断是否是偶数或者奇数。其他类型之间互相做模运算会返回NaN。如果字符串数字和数值之间做模运算,会强制转为字符串之间运算
console.log('取余')
let mod=10%5;
console.log(8%2);//0
console.log(10%5);//0
console.log(10%'2');//0
console.log(10%'dd');//NaN
6,幂运算符 **
幂运算就是平凡运算。通常用作数值运算。其他类型之间互相做预算会返回NaN。数值和字符串数值之间运算会转为字符串之间的运算
console.log('幂运算')
console.log(2**2);//4
console.log(2**3);//8
console.log(2**'2');//4
console.log(2**'dd');//NaN
console.log(2**0);//1
7,自增运算符 ++
自增运算符又称为 一元运算符。分为++在前和++在后。
- ++在前,就是先运算,在执行代码;
- ++在后,就是执行代码,在做运算;
let inc=10;
console.log(++inc);//11
console.log(inc++);//11
console.log(inc);//12
#通常用作for循环里面
for(let i=0;i<10;i++){
console.log(i);
}
8,自减运算符 --
自减运算符也是一元运算符,也很--在前,和--在后。
- --在前,先运算,在执行代码语句;
- --在后,先执行代码语句,在做运算;
let dec=10;
console.log(dec--);//10
console.log(--dec);//8
console.log(dec);//8
二,赋值运算符
1,基础赋值 =
赋值运算符,就是用于给变量赋值。
// 赋值运算符
let a=10;
console.log(a); //10
2,自增赋值 +=
赋值运算符之自增运算 a+=1 可理解为a=a+1
a+=5;
console.log(a); //15
3,自减赋值 -=
赋值运算符之减运算 a-=1 可理解为a=a-1
a-=5;
console.log(a);//10
4,自乘赋值 *=
赋值运算符之乘运算 a*1=1 可理解为a=a*1
a*=5;
console.log(a);//50
5,自除赋值 /=
赋值运算符之除运算 a/=5 可理解为a=a/5
a/=5;
console.log(a);//10
6,自模赋值 %=
赋值运算符之取余运算 a%=5 可理解 a = a%5
a%=5;
console.log(a);//0
7,自幂赋值 **=
赋值运算符之幂运算 a**=5 可理解为 a=a**5
a**=5;
console.log(a);//0
三,比较运算符
比较运算符是用来比较两个值的大小,然后返回一个布尔值,表示是否满足指定的条件
1,小于运算符 <
小于运算符,返回布尔值。
console.log(10<9); //false
2,大于运算符 >
大于运算符,返回布尔值
console.log(10>9); //true
3,小于或等于 <=
小于或者等于运算符,返回布尔值
console.log(10<=9); //false
4,大于或等于 >=
大于或者等于运算符,返回布尔值
console.log(10>=9); //true
5,相等运算符 ==
相等运算符,返回布尔值,仅比较值,不比较类型
console.log(10==9); //false
console.log(10=='10');//true
6,严格相等 ===
严格相等运算符,返回布尔值,不仅比较值,还比较类型
console.log(10===9); //false
console.log('1'==1); //true
console.log('1'===1); //false
7,不等运算符 !=
不相等运算符,返回布尔值,仅比较值,不比较类型
console.log(10!=9); //true
console.log(10!='10'); //false
8,严格不相等 !==
严格不相等运算符,返回布尔值,不仅仅比较值,还比较类型
console.log(10!==9); //true
console.log(10 != 9); //true
console.log(10 !== '10');//true
四,逻辑运算符
逻辑运算符又称为布尔运算符。算的是与或非。
1,与运算 &&
两边都为真,才返回真,任何一方为假,结果都为假
console.log(true&&true);//true
console.log(true&&false);//false
console.log(false&&true);//false
2,或运算 ||
任何一方为真,结果就返回真,
console.log(true||true);//true
console.log(true||false);//true
console.log(false||true);//true
console.log(false||false);//false
3,非运算 !
取反,真的变成假的,假的变成真的
console.log(!undefined); //true
console.log(!null);//true
console.log(!0);//true
console.log(!'');//true
console.log(!NaN);//true
console.log(!false);//true
五,位运算符
位运算符是处理每一个字节,他是一个非常底层的运算,好处就是速度极快,缺点是代码很不直观,许多场合使用他们非导致代码难以差错,以及难以理解。
快速记忆:
- 左移运算符就是*2的n次方(n代表位移次数)
- 右移运算符就是/2的n次方 (n代表位移次数,不同点,出现小数时要取整)
console.log(2>>3);//0
console.log(2<<3);//16
console.log(10>>3);//1
console.log(100>>3);//12
底层:
1,左移运算符 <<
2,右移运算符 >>
十进制转为二进制,采用除2取余,逆序排列方法。
console.log(5 << 2); // 20
console.log(1000 >> 8); //3
假设把42转为二进制,如何实现?
六,运算符的优先级
运算符的计算优先级,以下是从高到底
- . [] () 字段访问,数组下标,函数调用 表达式分组 ,优先级最高;
- ++ -- typeof 一元运算符,返回数据类型;
- * / % ** 乘法,除法,取余,幂运算;
- + - + 加法,减法,字符串的连接;
- << >> 位运算;
- <= >= < > 小于等于,大于等于,小于,大于;
- == === != !== 相等,严格相等,不相等,严格不相等;
- && 逻辑运算 与;
- || 逻辑运算 或;
- ! 逻辑运算 取反;
- ?: 三元运算符
1,通过加()的方式,拆分成多条语句完成。
如果多个运算符混写在一起,常常非导致令人困惑的代码,所以我们一般可以通过多条语句完成,记住所有的运算符的优先级,是非常难的,也没有那么必要。
我们可以万能的括号() 手动拆分,手动指定不同的运算。
七,其他运算符
1,void 运算符
void 运算符。通常用于执行一个表达式,但是不关心其返回值,常用于将表达式的结果强制转为undefined,这些情况在某些应用场景的时候,非常有用。比如组织a链接的默认行为。
<a href="javascript:void(0);" onclick="alert('链接被点击,但不会跳转');">点击我</a>
<script>
// 或者在JavaScript代码中
function doSomethingWithoutReturning() {
// 执行一些操作
console.log("操作完成");
// 显式返回 undefined
return void 0; // 但实际上,直接 return; 也可以达到相同效果
}
console.log(doSomethingWithoutReturning()); // undefined
</script>
演示:
2,delete 运算符
delete 运算符用于删除对象的属性。需要注意的是,delete不能通过删除var或者let声明的变量。只能删除对象的属性。
let obj = {
name: "John",
age: 30
};
console.log(obj.name); // John
delete obj.name;
console.log(obj.name); // undefined,属性已被删除
// 尝试删除全局变量(不推荐,且可能不起作用,取决于严格模式和作用域)
// window.someGlobalVar = "Hello";
// delete window.someGlobalVar; // 可能会工作,但不建议这样操作全局变量
3,in 运算符
in 运算符用于检查一个属性是否存在指定的对象中
let obj = {
name: "John",
age: 30
};
console.log("name" in obj); // true
console.log("address" in obj); // false
// 也可以用于检查属性是否存在于原型链中
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() {
return "Hello, my name is " + this.name;
};
let person = new Person("Jane");
console.log("name" in person); // true
console.log("greet" in person); // true,因为 greet 存在于 Person 的原型链上
4, 逗号 , 运算符
逗号运算符用于执行多个表达式,并返回最后一个表达式的值。
let result = (1 + 2, 3 * 4, 5 - 1);
console.log(result); // 4,因为 5 - 1 是最后一个表达式
// 另一个例子,用于在同一行上声明多个变量
let a = 1, b = 2, c = a + b;
console.log(c); // 3
七,思维导图
1,算数运算符
2,赋值运算符
3,比较运算符
4,逻辑运算符
5,位运算符
6,运算符的优先级
7,其他运算符
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 谢谢观看~