JavaScript运算符类型及用法

标题JavaScript运算符

算数运算符 + - * / %
1、 数值的+ , - ,* , / , %(取模)和数学运算完全相同
2、 小数点运算时会产生误差
3、 - * / % 都是隐式转换成数值,不论有没有字符

“+” 运算
1、 如果是字符和非字符相加,则会自动将非字符隐式转换成字符 String() 此时+为拼接符首尾相连
2、 数值 + NaN = NaN
3、 true + false = 1
4、 如果一侧是布尔值,重要是另一侧值,会根据另一侧转换
5、 如果两测都没有字符或者数值,就会都转换为数值运算
6、 布尔值一旦遇到对象都会隐式转换为字符相加
true+ {a:1}结果为true[object Object]
7、 true+[]或true+null结果为1

- * / % 都是隐式转换成数值,不论有没有字符

赋值运算符 += -= *= /= %=
看到一个=号时,就是表示将等号右侧的结果赋值给等号左侧,并且返回一个值
在元数据的基础上进行累加 累减等操作,得到计算后的新值,原数据也会发生改变
a += 2; 等价于 a = a+2; 其中2为布长
连续取模无意义

一元运算符
a++ <=> a=a+1 a为数值的情况下,一元运算符使用时会全部隐式转换为数值进行计算
++a与a++的区别:运算后a的值没有区别
++a是先自增运算,再使用返回a的值
a++是先使用返回a的值,再自增运算

var a=2;
var y=a++;
console.log(y,a);//2,3
var y=++a;
console.log(y,a);//3,3

var a="10.35";
a=a-0;
console.log(a);//10(数值10)

快速转换为数值型

		a-=0;快速转换为数值型

var a=10;
a=a+"";
console.log(a);——10(字符10)
快速转换为字符型

		a+="";快速转换为字符型

关系运算符 > >= < <= == != ===
关系运算符返回一个布尔值
判断,比较时使用
隐式转换内容为数值,如果都是字符,则通过ASCII转换成编码值,再比较
没办法比较时,结果为 false
null和undefined特殊都没有值 不和其他值进行比较
console.log(null == undefined);——true
console.log(0 == null);——false null是用来切断引用关系的
console.log("" == 0);——true空字符串会隐式转换成数值 0
console.log("" == false); ——true
console.log(0 == false); ——true
console.log(![] == false); ——true![] 优先将[]看做对象,所以[]就是true ,取反后变成false
console.log([] == false); ——true数组比较时,如果比较布尔值,优先将数组转换为字符串,再比较
console.log(![] == []);——true
console.log(" " == true); ——false空格字符串,布尔值转换为字符串console.log(2 == true); ——false布尔值转换为数值
console.log(undefined == false); ——false不能转换为undefined,所以不相同
console.log(null == false); ——false不能转换为null,所以不相同
console.log({a:1} == true); ——false不能转换为对象,所以不相同
console.log(NaN == NaN);——false非数值永不等
console.log(isNaN(Number(“a”)));判断是否是数值型的方法
console.log(“undefined” == undefined);——false
console.log(“null” == null); ——false
console.log("" == null); ——false
console.log("" == undefined); ——false
console.log("[object Object]"=={a:1});——true
console.log({a:1}.toString());——[object object]
console.log([“a”].toString())——a
console.log(“a” == [“a”]);——true数组转换为字符串
console.log(“3” == true);——false字符串和布尔值比较,布尔值转字符串
console.log(3 == true);——false数值和布尔值比较,布尔值转换为数值

当字符类型和引用类型比较时,优先将引用类型执行toString()转换为字符类型
isNaN() 用来判断是不是非数值
返回值 true => 非数值
false => 数值

!==(绝对不等) 和 === (绝对相等)都不会隐式转换

===
使下列函数能运行的a

1、 if(!a){

    	 		}——"",undefined,0,null,false,NaN

2、 if(a==false){

    			}—— 0 "" false

3、 if(a==undefined){

    			}——null undefined

4、 if(a===undefined){

    			}——undefined

Object.is类似于===
console.log(Object.is(“3”,3));——false
console.log(Object.is(3,3));——true
console.log(Object.is(NaN,NaN));——true
console.log(Object.is([], [])😉 ——false

==是否相等 其实是由valueOf方式决定的,在此不做详细解释

if(a==1 && a==2 && a==3){
 				console.log("aaa");
			}

逻辑运算符&& || !
&&
一假即假
遇到第一个条件为假,则停止后续的判断,返回其假值,否则则一直运行到最后,若最后一个条件为真,则返回该值
true && true =true 返回最后一个值
true && false =false 返回false对应的值
false && true =false 返回false对应的值
false && false =false 返回第一次遇见false对应的值

||
一真即真
遇到第一个条件为真,则停止后续的判断,返回其真值,否则则一直运行到最后,若最后一个条件为假,则返回该值
true || true =true; 第一个遇到true的对于值
true || false =true; 返回true对应的值
false || true =true; 返回true对应的值
false || false =false 返回最后一个false对应的值

!
遇到! 优先将后面的内容先转换布尔值再取反

简单案例:
1、点击按钮实现反选(创建两个div,ID分别为bn0和bn1)

var bn0=document.getElementById("bn0");
var bn1=document.getElementById("bn1");
bn0.onclick=function(){
        bn1.checked=!bn0.checked;
}

2、实现点击按钮html背景色改变(创建一个按钮,ID为bn0)
document.documentElement HTML标签

var bool=false;
var bn0=document.getElementById("bn0");
bn0.onclick=function(){
bool=!bool;
if(bool){
document.documentElement.style.backgroundColor="#000000";
else{
 document.documentElement.style.backgroundColor="#FFFFFF";
 		}
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页