概述
这是我的学习笔记,记录了JavaScript的学习过程,我是有一些Python基础的,因此在学习的过程中不自觉的把JavaScript的代码跟Python代码做对比,以便加深印象。我本人学习软件开发纯属个人兴趣,大学所学的专业也非软件工程相关专业,从事的工作也非编程领域,学习编程也只能在工作闲暇时间,因此难免有些专业术语不是那么专业,并且博客会不定时更新,还请多多包涵。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。
今天来学习操作符。
1.赋值操作符
在JavaScript和Python中都是用一个等号来给变量赋值,是将等号右边的元素赋值给左边的变量,例如:
//赋值操作
var a = 100;
var b = a;
console.log(a, b); //返回:100 100
2.一元操作符
一元操作符只能作用于一个操作数,一元操作符有三种用法:
①最简单的是定义一个负数,如下代码中的“-”减号就是一元操作符:
//2.一元操作符
var c = -5;
console.log(c); //返回:-5
②在一个字符串形式的数字前面添加一个“+”加号,就会把这个字符串形式的数字转换成数值类型,如下代码:
var d = +"15"; //前面有一元操作符 +
var e = "15"; //前面没有+
console.log(d, typeof d); //返回:15 'number'
console.log(e, typeof e); //返回:15 string
注意:一个加号作为二元操作符的话,如果加号前后都是数值类型,就是直接执行数学运算,返回计算的结果,如果加号前后有一个是字符串类型的话,就会执行字符串拼接的操作,如下代码演示:
var num1 = 20;
var num2 = 30;
var str1 = "20";
var str2 = "30";
console.log(num1 + num2, typeof (num1 + num2)); //此处的加号为二元操作符,返回:50 'number'
console.log(str1 + num2, typeof (str1 + num2)); //此处的加号为二元操作符,返回:2030 string
console.log(str1 + str2, typeof (str1 + str2)); //此处的加号为二元操作符,返回:2030 string
③两个加号代表给这个操作自身增加1,如果把两个加号放在操作数后面,先返回这个操作数,然后再加1,如果把两个加号放在操作数的前面,先执行加1,再返回加1的结果。如下代码演示,这种操作一般用在循环中。
var num3 = 3;
console.log(num3++); //先返回自身的数,返回结果:3
console.log(num3++); //返回+1的结果,返回结果:4
console.log(num3++); //返回+1的结果,返回结果:5
var num4 = 3;
console.log(++num4); //先加1再返回加1的结果,返回结果:4
console.log(++num4); //返回+1的结果,返回结果:5
console.log(++num4); //返回+1的结果,返回结果:6
两个减号的操作与两个加号的操作相同,放在操作数前和后的区别也与之相同,如下代码:
var num5 = 10;
console.log(num5--); //先返回自身的数,返回结果:10
console.log(num5--); //返回-1的结果,返回结果:9
console.log(num5--); //返回-1的结果,返回结果:8
var num6 = 10;
console.log(--num6); //先减1再返回减1的结果,返回结果:9
console.log(--num6); //返回-1的结果,返回结果:8
console.log(--num6); //返回-1的结果,返回结果:7
3.算术操作符
算术操作符与数学中的一样,只是个别有一些特殊,都比较简单,以下是代码演示:
//算术操作符
console.clear();
console.log("5+5=", 5 + 5); //加法操作,返回: 5+5= 10
console.log("5-1=", 5 - 1); //减法操作,返回: 5-1= 4
console.log("5*5=", 5 * 5); //乘法操作,返回: 5*5= 25
console.log("10÷2=", 10 / 2); //除法操作(用斜杠/),返回: 10÷2= 5
console.log("2**10=", 2 ** 10); //幂操作(用两个**号),返回: 2**10= 1024
console.log("10%3=", 10 % 3); //取模操作(用%号),返回: 10%3= 1
console.log(3 * 5 + 8 * 10 - 8 / 5); //混合操作,返回: 93.4
4.比较操作符
比较操作符也是与数学中一样,比较的结果返回的是布尔类型,true或false,如下代码演示:
//4.比较操作符
console.clear();
console.log(5 > 3); //返回: true
console.log(5 < 3); //返回: false
console.log(5 >= 3); //返回: true
console.log(5 <= 3); //返回: false
//console.log(5 = 3); //会提示报错,一个等号代表赋值操作
console.log(5 == 3); //两个等号表示比较两个数是否相等,返回: false
console.log(5 == "5"); //两个等号不比较类型,会自动把字符串类型的数字转换成数值类型再比较,返回: true
console.log(5 === "5"); //三个等号是绝对等于,会判断数据类型,返回: false
console.log(5 != "5"); //一个感叹号一个等号是不等于,不会会判断数据类型,返回: false
console.log(5 !== "5"); //一个感叹号两个等号是不等于,会判断数据类型,返回: true
console.log(undefined == null); //因为undefined和null值是一样的,返回: true
console.log(undefined === null); //因为undefined和null类型不一样, 返回: false
PS:在Python中没有===三个等号的比较操作符,Python中的两个等号==的比较操作符与JavaScript中的三个等号是相同的,例如:
# 以下是Python代码
print(5 == "5") # 返回结果为:False
print(5 != "5") # 返回结果为:True
5.逻辑操作符
逻辑操作符有三个与、或、非,在JavaScript中与用两个&符号表示,或用两个竖线表示,非用一个感叹号表示,而在Python中与或非分别是and、or 和 not。如下表格所示:
逻辑运算符 | |||
JavaScript | Python | 运算规则 | |
与 | && | and | 两个操作数同时为真,则为真,有一个假则为假 |
或 | || | or | 只要有一个真则为真,两个假才为假 |
非 | ! | not | 将结果颠倒,假即是真,真即是假 |
在JavaScript中代表false的值有:false、0、""、null、undefined,其余都为真值。如下代码:
//5.逻辑操作符
console.clear();
console.log("true && true结果是:", true && true);
//返回:true && true结果是:true
console.log("true && false结果是:", true && false);
//返回:true && false结果是: false
console.log("true || false结果是:", true || false);
//返回:true || false结果是: true
console.log("false && false结果是:", false && false);
//返回:false && false结果是: false
console.log("!false结果是:", !false);
//返回:!false结果是: true
console.log("!true结果是:", !true);
//返回:!true结果是: false
在JavaScript中的与或具有短路特性, && 前面的表达式如果结果是真值,就会继续执行 && 后面的代码,并且返回后面的代码结果,如果 && 前面的表达式如果结果假值,就不再执行&& 后面的代码,直接返回&& 前面的表达式的结果。
||符号前面表达式结果如果是假值,就继续执行||符号后的代码,并返回||符号后的代码的结果。符号前面表达式结果如果是真值,就不再执行||符号后的代码,直接返回||符号前面表达式的结果。
如下代码演示:
var a = 1;//1为真值
console.log(a && 5 + 5); //返回结果:10
console.log(a || 5 + 5); //返回结果:1
var b = 0;//0为假值
console.log(b && 5 + 5); //返回结果:0
console.log(b || 5 + 5); //返回结果:10
在Python中也有同样的短路特性,如下代码:
# 以下为Python代码
a = 1
print(a and 5+5) # 返回结果为:10
print(a or 5+5) # 返回结果为:1
b=0
print(b and 5+5) # 返回结果为:0
print(b or 5+5) # 返回结果为:10
6.位运算符
位运算符是对二进制位进行操作的运算符,它们直接对整数在内存中的二进制位进行操作。位运算符包括以下几类:
位运算符 | ||
位运算符 | 运算规则 | |
按位与 | & | 当两个操作数相应的位都为1时,结果对应位上的值为1,否则为0。 |
按位或 | | | 当两个操作数相应的位中至少有一个为1时,结果对应位上的值为1,否则为0。 |
按位异或 | ^ | 当两个操作数相应的位一个为0,一个为1时,结果对应位上的值为1,否则为0。 |
按位取反 | ~ | 这是一个一元运算符,它将操作数的每一位翻转,即0变为1,1变为0。 |
左移 | << | 将左操作数的二进制位向左移动指定的位数,右边空出的位用0填补。左移操作实际上等同于将数字乘以2的某个幂次。 |
右移 | >> | 将左操作数的二进制位向右移动指定的位数,左边空出的位用符号位填补(正数填0,负数填1)。右移操作实际上等同于将数字除以2的某个幂次并向下取整。 |
无符号右移 | >>> | 与右移类似,但左边空出的位总是用0填补,无论原数的符号如何。 |
位运算符在编程中常用于底层操作,如硬件控制、位图处理、数据加密等场景。它们允许程序员直接操作数据的二进制表示,从而实现高效和精确的控制。但需要注意的是,位运算符直接对内存中的位进行操作,因此使用时需要小心,避免引发不可预见的结果。如下代码演示即注释说明:
//6.位运算符
console.clear();
// 按位与(&)
let x = 5; // 二进制表示为 0101
let y = 3; // 二进制表示为 0011
let andResult = x & y; // 结果为 0001,即十进制中的 1
console.log(andResult); // 输出:1
// 按位或(|)
let orResult = x | y; // 结果为 0111,即十进制中的 7
console.log(orResult); // 输出:7
// 按位异或(^)
let xorResult = x ^ y; // 结果为 0110,即十进制中的 6
console.log(xorResult); // 输出:6
// 按位取反(~)
let notResult = ~x; // 结果为 -6,即二进制中所有位取反后加1(因为JavaScript使用补码表示负数)
console.log(notResult); // 输出:-6
// 移位运算符
// 左移(<<)
let leftShiftResult = x << 1; // 5的二进制为0101,左移一位后变为1010,即十进制中的10
console.log(leftShiftResult); // 输出:10
// 右移(>>)
let rightShiftResult = x >> 1; // 5的二进制为0101,右移一位后变为0010,即十进制中的2
console.log(rightShiftResult); // 输出:2
// 无符号右移(>>>)
let unsignedRightShiftResult = -5 >>> 1;
console.log(unsignedRightShiftResult); // 输出:2147483645
// 注意:JavaScript中的数字是以64位浮点数形式存储的,但位运算符只作用于数字的32位整数表示。
// 对于超出32位的数字,位运算符的行为可能不是直观的,因为它们仅操作32位整数。
7.三目运算符
三目运算符,也被称为条件运算符,是具有三个操作数的运算符,因此有时也被称为三元运算符。其一般形式为:“表达式1 ? 表达式2 : 表达式3”。
三目运算符的执行过程如下:首先计算表达式1的值,然后根据这个值进行判断。如果表达式1的值为真(或非零),则执行并返回表达式2的值;否则,执行并返回表达式3的值。可以理解为“条件 ? 结果1 : 结果2”,其中的“?”是格式要求,它表示“如果条件成立则执行结果1,否则执行结果2”。
如下代码演示:
var age = 15;
console.log(age >= 18 ? "成年" : "未成年"); //输出:未成年
//上面的代码意思是判断age是不是大于等于18,如果是则返回成年,如果不是则返回未成年
以上便是今天的学习内容,如果对你有帮助就点个赞再走吧。