第一节 算术运算
通过运算操作数据(事物)的行为,运算表示行为。
例:蜗牛爬井,一口井
10
米,蜗牛白天爬 3 米,晚上滑
2
米,蜗牛几天爬出?
//当前位置在井底,默认是 0
var position = 0;
//白天爬 3 米
position = position + 3;
//晚上滑 2 米
position = position - 2;
alert(position); //1 2 3 4 ....
//加赋值 1 表示爬行一米
//position = position + 1;
//position++; console.log("往上爬了"+ position + "步");
算术运算符
var y = 3;
运算符
|
描述
| 例子 | 结果 |
+ | 加 | x=y+2 |
x=5
|
- | 减 |
x=y-2
|
x=1
|
* | 乘 |
x=y*2
|
x=6
|
/ | 除 |
x=y/2
|
x=1.5
|
% | 取余(模运算) |
x=y%2
|
x=1
|
++ | 递增(累加) |
x=++y ; x=y++
|
x=4 ; x=3
|
-- | 递减 |
x=--y ;
x=y--
|
x=2 ; x=3
|
console.log('20' - '5'); //会隐式转换,结果:15,类型 number
console.log('24ad'-'12ad'); //NaN 非数字
console.log(100-""); //数字与字符串运算结果会转换数字,结果 100
console.log(20/0); //Infinity 无穷大,类型
number console.log(0/0); //NaN,类型
number console.log("4"/"2"); //转数字,结果:2
console.log("8"%"3"); //转数字,结果:2
//总结:除了+号可以做字符串连接,其它运算符基本都会做数据类型转换
运算优先级
var a = 2+3*5; //17 乘法优先级高于加法
var b = (2+3)/(5-3); //2.5 圆括号的优先级最后
第二节 强制转换
字符串转数字
parseInt() parseFloat() isNaN()
//定义函数
function 函数名(){
//方法体 -函数体 }
//点击事件
onclick="函数名()" //当点击时 调用函数体
-----------------------------------------
//例:一个字符串 12
//parseInt("12") --> 12 取整数
var str = "12";
alert(parseInt(str) + 1); //13
var str = "12px"; alert(parseInt(str)); //12
var str= "ab 12 px"; alert(parseInt(str)); //NaN
-----------------------------------------
//parseFloat(); 保留小数
var str = "12.5"; alert(parseFloat(str));//12.5
//isNaN 判断是不是非数字,非数字返回 true
alert(isNaN(parseInt(str))); //false
//注意坑:isNaN()如果判断数字型字符串会有隐式转换,返回 false
数字转为字符串
toString()
var num = 123;
var str = num.toString();
alert(typeof str);//string 转字符串
第三节
赋值运算
复合的赋值运算符
+= -= *= /= %=
//编程思想
var a = 3;
a = a + 1;
//第一步:读取 a 的值
//第二步:运算 a + 1
//第三步:把运算结果写回
a var x = 10; x = x + 2;
//读取 x 的值,在运算 x+2,运算结果写回 x
var x -= 2; //x = x - 2; 注意顺序
x+=2; //x = x+2
x-=2;
x*=2;
x/=2;
x%=2;
表达式
• 包含赋值运算的语句叫表达式
• 单独的运算不叫表达式
第四节 关系运算
关系运算:
> < <= >= != == === ==
和
=== !=
和
!==
var a = 2;
var b = "2";
var c = 2;
console.log(a == c); //true 类型相同,值相同
console.log(a === c ); //true 类型相同,值相同 console.log(a !== c );//false a 与 c 类型相同,值也相同,非运算肯定是 false
console.log(a == b); //true 把 b 转换为数字,检查是否相等
console.log(a != b); //false ==的非运算
console.log(a === b); //false 类型不同,直接返回 false
console.log(a !== b ); //true
//总结:==和!= 先尝试转换类型,再做值比较,最后返回值比较结果;而===和!== 只有 在相同类型下,才会比较里面的值
字符串比较
'2' == '2'; //true 两个操作数都是数字字符串,先转换成数字,再进行比较
'a' != 'b'; //true 两个操作数是字母字符串,转成 ascii 码,再比较
'abc' < 'aad'; //false 依次比较 ascii 码
13 > 'abc'; //false "abc"会转成 NaN
获取
unicode
字符编码
var str = "abc";
alert(str.charCodeAt(0)); //97 返回指定位置的字符编码
charAt(1); //返回字符串子串
小结:
“=”
、
“==”
、
“===”
有什么区别?
• = 是赋值符号,是对变量所代表的内存的写的操作;
• == 忽略数据类型的判断 是否相等
• === 数值和数据类型都要相等才判断为相等
第五节 逻辑运算
//满足两个条件
var username = "果果";
var password = "abc";
//使用 逻辑与 && 连接两个表达式
alert(username==="果果" && password==="abc"); //true
逻辑与
&&
逻辑与
&&
(
and
) 并且的意思:若干条件中,只有都是
true
时,条件才能为真
alert(true && true); //true
alert(true && false); //false
alert(false && (3>4)); //false
alert(false && false); //false
逻辑或
||
逻辑或
||
,若干条件中,只有有一个满足,返回
true
alert(true || true); //true
alert(false || true); //true
alet(true || false); //true
alert(false || (3==4)); //false
逻辑非
!
逻辑非!取反
!ture
的结果为
false
,
!false
的结果为
true
var n1 = !true; //false
var n2 = !false; //true
var n3 = !!true; //true
复合逻辑表达式
//中文:user 等于小星 并且 年龄大于等于 18 或者 地址是中国并且密码是 123;
(user=="小星")&&(age>=18 || addr=="中国")&&(pwd==123);
第六节 三元运算
根据不同的条件去处理不同的结果
条件运算符
?:
-5
正
5
一元运算
3+5
二元运算
三元运算符:
(
比较表达式
)
?结果
1:
结果
2
//输出最大值
var num1 = 3;
var num2 = 5;
var max = num1>num2?num1:num2;
console.log(max);
第七节 隐式转换
+
号在不同情况下的区别
console.log(3 + 5 + "hello"); //8 hello
console.log("hello" + 3 + 5); // hello 35