<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
/*
1.算术运算:
+:-可以对两值进行加法运算,并返回结果
-字符串与任何值相加(包括字符串)结果都转换成字符串
-可以利用此方法进行隐式类型转换原理和String()函数一样
-:-可以对两值进行减法运算,并返回结果
*:-可以对两值进行乘法运算,并返回结果
/:-可以对两值进行除法运算,并返回结果
注意:任何值做- * / 运算时都会自动转换为Number
我们可以利用这一特点做隐式类型转换
例如通过将一个值-0 *1 /1来将其转换为Number
其原理和Number()函数一样,使用起来更加简便
+ 正号:不会对数值产生影响
- 负号:对数值进行负号的取反
对于非Number类型的值:
会先将其转换成Number,然后运算
注意:可以对一个非Number类型的值使用+,来将其转换成Number
原理和Number()函数一样
2.自增++:
-使变量在自身的基础上加一,原变量也增加一
注意:区别a++的值相当于原值a(自增前的值)
++a的值等于a+1(自增后得值)
通俗的理解就是从左往右运算a++是先看到a所以是a的原值
++a是先+1再+a所以是a+1
自减--:
-使变量在自身的基础上减一,原变量也增减一
注意:a--和--a的值不同,原理同自增
3.逻辑运算符:
-!非:逻辑取反
-对非布尔值取反则先将其转换为布尔值,然后取反
-利用上述特征可以为任意数据两次取反将其转换为布尔值
-原理和Boolean()函数一样
-&&与
-只有当两个true与运算结果才返回true
-||或
-只要有一个true结果就返回true
注意:JS中的或和与是短路的,当或中第一个是true就立刻返回
结果true当与中第一个为false就立刻返回结果false
4.联值运算:
-a += 5; 相当于a = a + 5; a -= 5; 相当于a = a - 5;
5.关系运算符:
-大于号>,判断符号左侧值是否大于右侧值
-关系成立结果返回true,不成立结果返回false
-小于号< 大于等于>= 小于等于<=同理
注意:对于又一边为非数值的会转换为数值进行比较
两边均为非数值时比较的是字符串的字符编码
不过任何值和NaN比较都是false
6.unicode编码:
7.条件运算符(三元运算符):
-语法:条件表达式?语句1:语句2;
-执行流程:首先条件表达式进行求值,
-如果值为true,则执行语句1,并返回执行结果
-如果值为false,则执行语句2,并返回执行结果
8.运算符优先级,不确定优先级灵活使用括号!!
*/
var a;
a = (1 + 2 -1)*3/2;
console.log("a = "+a);//a = 3
//任何值和字符串相加都会转化成字符串,并做拼串操作:
a = "123" + "456"
console.log(a);
console.log(typeof a);//字符串“123456”
a = 123 + "h";
console.log(a);
console.log(typeof a);//字符串“123a”
//a = 123 + "";-相当于String(a)
a = "123";
a = a - 0;//通过此方法不改变值本身大小,将类型转换成Number
console.log(a);
console.log(typeof a);//number
a = 1 + "2" +3;
console.log(a);
console.log(typeof a);//"string"
a = 1 + +"2" + 3;
console.log(a);//6
console.log(typeof a);//通过字符串“2”前面加正号转换成Number2
a = 1;
console.log(a++);//1
console.log(a);//因为a++ a自增得2;a=2,a++=1
a = 1;
console.log(++a);//2
a = 1;
a = a++ + ++a +a;//相当于1+3+3
console.log(a);
a = true;
a = !a;
console.log(a);//false
a = "hello"
a = !!a;
console.log(typeof a);//非布尔值两次取反转换为布尔值
a = true && false;
console.log(a);//false
a = true || false;
console.log(a);//true
var result = 4 > 5;
console.log(result);//false
console.log("\u2610");//在字符串中使用unicode编码
a = NaN;
console.log(isNaN(a));//isNaN()函数检查数值是否为NaN
var a=1,b=2,c=3;
//a>b?alert("a大"):alert("b大")
var max=a>b?a:b;//两个数求最大值
//console.log("max="+max);
var max=max>c?max:c
//var max=a>b?(a>c?a:c):(b>c?b:c)一行写法不推荐,不方便分析!!
console.log(max);//三个数求最大值
</script>
</head>
<body>
<!--在网页中使用unicode编码,不过记得转化成十进制!
"font-size: 尺寸xp"
-->
</h1>爱打篮球的⛹</h1>
</body>
</html>
运行结果:
运算符的优先级: