Javascript运算符操作
一、作用
执行特定逻辑运算
二、分类:按功能划分 算数运算符("+" , "-" ,"*" ,"/" , "%)
位运算符
关系运算符
逻辑运算符
按操作数个数划分 单目运算符(i++ , !)
双目运算符(a+b , a-b)
三目运算符(a>b?1:0)
三、优先级
先算优先级高的后优先级底的
优先级相同的就从左到右执行
四、算数运算符(+-*/%和数学上的运算是一样的)
4.1.1 + 比较不同它还可以做为两个字符串的链接符
<script type="text/javascript">
var num='12'+100;
console.log(num);//12100
console.log(typeof num);//number
</script>
4.1.2 如果非number类型运算时会先转换成number类型后运算
<script type="text/javascript">
var num=true+100;
console.log(num);//101
console.log(typeof num);//number
</script>
<script type="text/javascript">
var num=null+100;
console.log(num);//101
console.log(typeof num);//number
</script>
4.1.3 任何值和NaN做运算都为NaN
<script type="text/javascript">
var num=NaN+100;
console.log(num);//101
console.log(typeof num);//number
</script>
4.2.1 / 运算符时 分母为零输出infinite
4.2.3 % 范m/n取余时 n=0 返回nan
m=0 返回0
m>n 返回正常取余的值
m<n 返回m
五、正负运算符
<script type="text/javascript">
var num=100;
num=+num;
console.log(num);//nan
</script>
<script type="text/javascript">
var str=null;
var res=str;
console.log(res);//0
</script>
六、赋值运算符
“=”右边是常量,左边是变量 X=10;
"+=" a+=1 相当于a=a+1
"-=" a-=1 相当于a=a-1
"*=" a*=1 相当于a=a*(1)
"/=" a/=1 相当于a=a/(1)
七、自增运算符
7.1 无论运算符在前还是在后变量在自身基础上都会改变
<script type="text/javascript">
var i=10;
i++; //++i也输出11 --i和i--输出9
console.log(i);//11
</script>
7.2 i++和i--是先用i当前值作为表达式的值,在进行自身自增自减就是“先使用后改变”
<script type="text/javascript">
var a1=10;
var a2=20;
var res=(a1++)+(a2++);
console.log(res);//30
console.log(a1);//11
console.log(a2);//21
</script>
7.3 ++i和--i是先用i当前值进行自身自增自减后作为表达式的值,“先改变后使用” <script type="text/javascript">
var a1=10;
var a2=20;
var res=(++a1)+(++a2);
console.log(res);//32
console.log(a1);//11
console.log(a2);//21
</script>
八、关系运算符(返回值为true或false)
8.1 两边都是数值进行比较
<script type="text/javascript">
var a=100;
var b=100;
console.log(a<b);//false
console.log(a>b);//false
console.log(a<=b);//true
console.log(a>=b);//true
console.log(a==b);//true 比较数值大小相等是返回true
console.log(a!=b);//false
console.log(a===b);//true 比较数值和类型都要相同时返回true
console.log(a!==b);//false
</script>
8.2 对于非数值运算时转换成数值进行比较
<script type="text/javascript">
var a=100;
var b='100';
console.log(a<b);//false
console.log(a>b);//false
console.log(a<=b);//true
console.log(a>=b);//true
console.log(a==b);//true 比较数值大小相等是返回true
console.log(a!=b);//false
console.log(a===b);//false 比较数值和类型都要相同时返回true
console.log(a!==b);//true
</script>
8.3 两边都不是数值进行比较,不会将其转换成数字进行比较而会分别比较字符串中字符Unicode编码
Unicode码 是统一的标准码
<script type="text/javascript">
console.log("a"<"b");//a为97 b为98 所以输出为true
</script>
8.4 null ,undefined ,NaN比较
<script type="text/javascript">
console.log(null==0);//false
console.log(null==null);//true
console.log(undefined==0);//false
console.log(undefined==undefined);//true
console.log(NaN==0);//false
console.log(NaN==NaN);//false
</script>
<script type="text/javascript">
var num=100;
console.log(isNaN(num));//false
console.log(null==undefined);//true
console.log(null===undefined);//false
</script>
8.5 isNaN()函数——是否不为数值型(就是是数值返回false,不是数字返回true)
<script type="text/javascript">
var num=100;
console.log(isNaN(num));//false
</script>
九、逻辑运算符
&&(与) , ||(或) , !(非)
&&(与):一假则假
<script type="text/javascript">
//9.1 对于Boolean类型直接转换成Boolean类型转换
true && alert("111"); //弹出111 短路测试
//9.2 如果A条件不成立返回条件A本身
false && alert("111"); //无反应 短路测试
//9.3 如果A成立条件B成不成立都返回B本身
var res = 123 && "aaa";
console.log(res); //aaa
var res1 = null && 0;//null
console.log(res1); //aaa
</script>
||(或):一真则真
<script type="text/javascript">
var res=(3>7)||(14>10)
console.log(res);//true
//短路测试
(7<3)||alert("222");//弹出222
//9.4对于Boolean类型直接转换成Boolean类型转换
//9.5 如果A条件成立返回条件A本身
(17>3)||alert("222");//返回true,因为前面已经为真就不执行后面的了
//9.6 如果A不成立条件B成不成立都返回B本身
var res1=123||"123";
console.log(res1);//返回123
var res2=null||0;
console.log(res2);//返回0
</script>
!(非):真就是假,假就是真
<script type="text/javascript">
var res=!(3>1);
console.log(res);//false
//一个值进行两次去反不会有变化
var res1=!!100;//可以转化为Boolean类型
console.log(res1);//true
</script>
十、逗号运算符(不常用,并不是出现逗号的都是逗号表达式)
a=1,b=3,c=4;
<script type="text/javascript">
var res=(num1=1+2,num2=1*3,num3=1/4);
console.log(res);//0.25 只是num3赋值给了res
</script>
十一、三目运算符(条件运算符)
条件语句?语句1:语句2
如果前面的语句为true则执行语句1,否则执行语句2
<script type="text/javascript">
7>9?alert(true):alert(false);
</script>
练习1:用户从键盘中输入三个数,找到最大的值并且输出
<script type="text/javascript">
//问题:用户输入的三个值找到最大的,并且输出
//定义三个变量,用来接收用户输入的值
var num1,num2,num3;
//处理用户的输入 alert , console.log , prompt()(利用这个接收用户输入的值)
num1=Number(prompt("请输入第1个数"));
num2=Number(prompt("请输入第2个数"));
num3=Number(prompt("请输入第3个数"));
//定义一个变量来
var max;
//利用三目运算符进行两两比较
max=num1>num2?num1:num2;
max=max>num3?max:num3;
//输出结果
console.log(max);
</script>
优化后
<script type="text/javascript">
//问题:用户输入的三个值找到最大的,并且输出
//定义四个变量,用来接收用户输入的值和保存他的最大值的变量
var num1,num2,num3,max;
//处理用户的输入 alert , console.log , prompt()(利用这个接收用户输入的值)
num1=Number(prompt("请输入第1个数"));
num2=+(prompt("请输入第2个数"));
num3=+(prompt("请输入第3个数"));
//利用三目运算符进行两两比较
max=num1>num2?num1:num2;
max=max>num3?max:num3;
//输出结果
console.log(max);
</script>
上一篇: 工作日休息日统计函数