1.算数运算符
算数运算符包含+ - * / %(取余若a<b则余数为a 例console.log(3 % 5); // 3)
注意要点:
1.在算数运算中
true false 为1 0 null 为 0 undefined为 NAN
2.字符串与数字运算时 除了相加+外,得到的值的数据类型均为数字类型
当字符串内有非数字时,除了相加+,得到的值均为NAN
3.记住浮点数超过的位数截取之后不影响它和整型的计算(0.1 +1=1.1 不是1.10000000000021780000348)
4.当字符串使用- * / % 若字符串内只有数值 则将其转换为数字类型 若字符串内有非数字的,则直接为NAN
在编程语言里面进行计算,是要先将十进制的转换为二进制 二进制 + 二进制 = 二进制 => 十进制!!! 在javascript中最大值的存储位数为53位 需要将多余的位数进行截取,截取之后才能进行二进制相加
<script>
//算数运算符包含+ - * / %(取余(若a<b则余数为a 例console.log(3 % 5); // 3)
// 在运算中 true false 为1 0 null 为 0 undefined为 NAN 无论是与数字还是与字符串
// 字符串与boolean null 除了相加外得到的值的数据类型均为 数字类型的
// 记住浮点数超过的位数截取之后不影响它和整型的计算(0.1 +1=1.1 不是1.10000000000021780000348)
// 当字符串使用- * / % 若字符串内只有数值 则将其转换为数字类型 若字符串内有非数字的,则直接为NAN
//数字与数字
console.log(1+1);//2
console.log(1-1);//0
console.log(1 * 1);//1
console.log(1 / 1);//1
console.log(4 % 2); // 0
console.log(5 % 2); // 1
console.log(3 % 5); // 3
//数字与字符串
console.log(3 + "3");//6不过此类型为字符串
console.log(3 -"3");//0
console.log(3 *"3");//9
console.log(3 /"3");//1
console.log(3 %"3");//0
//数字与boolean null undefined
console.log(8 + true);// 9
console.log(8 - true);// 7
console.log(8+ null);// 8
console.log( 8 + undefined);// NAN
console.log(0.1 +true)//1.1 ?
// 字符串与boolean null
console.log("8" -true);//7
console.log("你好" -true);//NAN
console.log("8" -null);// 8
console.log ("10 你好" -5);//NAN
//浮点数相加(非常重要 面试99%会考)
//实际运算结果比自己预估值要大一些?为什么?
var num1 =0.1;
var num2 =0.2;
console.log(num1 +num2);//0.30000000000000004为什么不是3呢
// 在编程语言里面进行计算,是要先将0.1 二进制 0.2 二进制
// 二进制 + 二进制 = 二进制 => 十进制!!!
// 在javascript中最大值的存储位数为53位,
//此含义是将num1 num2转换为二进制 并且以字符串的形式出现
var str1 = num1.toString(2);
var str2 = num2.toString(2);
console.log(str1);//0.0001100110011001100110011001100110011001100110011001101
console.log(str2);//0.001100110011001100110011001100110011001100110011001101
//查看str1 str2的存储位数
console.log(str1.length);//57
console.log(str2.length);//56
// 57 56 均大于在javascript中最大值的存储位数为53位
// 需要将多余的位数进行截取,截取之后才能进行二进制相加
//所以 console.log(num1 +num2);为0.30000000000000004而不是3
</script>
2表达式
由数字、运算符、变量等能够求得数值
<script>
// 表达式 是由数字、运算符、变量等能够求得数值
console.log(1+1)
var num = 1 + 1;
</script>
3.递增递减运算符
有:num++ num-- ++num --num
num++ ++num 意思均为 num=num+1
区别就是 ++num先进行计算++,然后再赋值。num++,先赋值再进行++
num-- --num 意思均为 num=num-1
区别就是 --num先进行计算--,然后再赋值。num--,先赋值再进行--
<script>
// 递增递减运算符有:num++ num-- ++num --num
// num++ ++num 意思均为 num=num+1 区别就是 ++num先进行计算++,然后再赋值。num++,先赋值再进行++
var num1=10;
var num2= 10;
var num3=10
console.log(num1++ + 1 );//10
console.log(++num2 + 1);//11
// num-- --num 意思均为 num=num-1 区别就是 --num先进行计算--,然后再赋值。num--,先赋值再进行--
var age1= 10;
var age2= 10;
console.log(age1-- + 1);// 11
console.log(--age2 + 1);// 10
</script>
4比较运算符
比较运算符有 > < >= <= ==(等于)!=(不等于) === !==
比较运算符分两种
1.关系运算符 > < >= <=
2.相等运算符== != === !==
===(=== 三个等于号,不仅要判断数值,而且要判断数据类型!!!)
!==(与===相反 )
<script>
//比较运算符有 > < >= <= ==(等于)!=(不等于) === !==
//比较运算符分两种 1.关系运算符 > < = 2.相等运算符== != === !==
//===(=== 三个等于号,不仅要判断数值,而且要判断数据类型!!!)
//!==(与===相反 )
console.log(3>5);//自己预估值 false
console.log("3">5);//自己预估值 false
console.log(3<5);//自己预估值 true
console.log("3"<5);//自己预估值 true
console.log(3>=5);//自己预估值 false
console.log(3<=5);//自己预估值true
console.log(3==5);//自己预估值 false
console.log("林志玲" == "凤姐");//自己预估值false
console.log("林志玲" == "林志玲");//自己预估值true
console.log(3!=5);//自己预估值true
console.log(3===5);//自己预估值false
console.log(5===5);//自己预估值true
console.log("5"===5);//自己预估值false
console.log(3!==5);//自己预估值true
console.log(5!==5);//自己预估值false
console.log("5"!==5);//自己预估值true 预估均为正确
</script>
5逻辑运算符
逻辑运算符 包括 1.&& 2. || 3. !
1.&& 并且 and(同true为true 有false为false)
如果想要整体打印出true, &&两边都要为true,如果有一边为false,那么打印出来就是false.
2. || 或者 or(有true为true 同false为false)
如果想要整体打印出true,||两边只要有一个为true就打印true,如果两个都为false
3. ! 非 not
<script>
// 1.&& 并且 and
// 如果想要整体打印出true,&&两边都要为true,如果有一边为false,那么打印出来就是false
console.log(5>4 && 2<4);// true
console.log(5>4 && 5<4);//false
console.log(5<4 && 2>4);//false
console.log(5>"3"&& 2<4);//true
// 2. || 或者 or , 如果想要整体打印出true,|| 两边只要有一个为true就打印true,如果两个都为false,
// false
console.log(3 > 5 || 3 > 6); //false
console.log(3 < 5 || 3 < 10); // true
console.log(3 > 5 || 3 < 10); // true
// 3. ! 非 not
console.log(!(3 > 5));//true
</script>
6.逻辑运算符(短路)
看数值转化为boolean 为true false
1. 数字 && 数字 数字 && 字符串
2. 数字 || 数字 数字||字符串
1)逻辑与&&(反假不返真)
如果表达式1结果为真,则返回表达式2
如果表达式1结果为假,则返回表达式1
2)逻辑或||的短路运算
如果表达式1为真,则直接返回表达式1
如果表达式1为假,则返回表达式2
<script>
//看数值转化为boolean 为true false
// 1. 数字 && 数字 数字 && 字符串
// 2. 数字 || 数字
// 1)逻辑与&& 如果表达式1结果为真,则返回表达式2
// 如果表达式1结果为假,则返回表达式1
console.log(10 &&100 );// 100
console.log(0 && 100);// 0
var nul =null;
console.log(nul && 100)// null
console.log("24" && 100 );// 100
// 2)逻辑或||的短路运算
// 如果表达式1为真,则直接返回表达式1
// 如果表达式1为假,则返回表达式2
console.log(10 ||100 );// 10
console.log(0 || 100);// 100
console.log(null || 100)// 100
console.log("24"||100);//24 字符串类
//3.综合运用
console.log(10&&100||5);//100
console.log(10&&0||5)//5
console.log(10&&0||9||5)//9
console.log(10&&100&&null)//5
console.log(10&&0||null||null)//null
</script>
7.赋值运算符
+= -= *= /= %=
<script>
// += -= *= /= %=
var num=10
num += 5;// num = mum + 5
num -= 1; // num = num -1;
num *= 5; // num = num * 5;
num /= 1; // num = num / 1;
</script>
8.运算符优先级
1.括号();
2.一级运算符 ++ -- !
3.算数运算符 + - * / %
4.关系运算符 > < <= >=
5.相等运算符== != === !==
6.逻辑运算符 && || 先 && 后 ||
7.赋值运算符 += -= *= /= %=
不常用的运算符
按位运算符
按位运算符:1.左移 << 位数 右移 >> 位数 2. & |
1.左移 << 位数 右移 >> 位数
转换为二进制 然后向左或向右移动 再转换为10进制
例如 1的二进制 0000 0001 向左移动两位 0000 0100 值为4
2.& 的意思就是如果都为1则为1,如果有一个不为1,则为0
|的意思就是如果都为0则为0,如果有一个不为0,则为1
<script>
// << 位数 >> 位数
//转换为二进制 然后向左或向右移动 再转换为10进制
// 例如 1的二进制 0000 0001 向左移动两位 0000 0100 值为4
var num1 = 1;
// <<左移两位
var num2 = num1 << 2;
console.log(num2);// 4
// >>右移两位
var num3 = num2 >> 1;
console.log(num3);//2
// & |
var num4 = 10 ;
//00001010
var num5 = 20;
//00010100
//& 的意思就是如果都为1则为1,如果有一个不为1,则为0
var num6 = num4&num5;
//00000000
console.log(num6);//0
// | 的意思就是如果都为0则为0,如果有一个不为0,则为1
var num7 = num4|num5;
//00011110
console.log(num7);//30
</script>