***** 程序基础知识理解*****
程序:“人的想法”在计算机中的执行
运算符:程序模拟人类想法的特殊符号
表达式:由变量,运算符和数据组成的公式
所有表达式都返回一个结果,都可当做一个值使用
运算符和表达式正课:
1. 算数运算:
%模运算(取余数):m%n,先m/n,取除不尽的余数部分
何时使用:1. 判断能否被整除
2. 限制运算结果的上限
++和-- 运算符:
n++; 这种写法相当于 n=n+1;
如果单独使用,++写前写后都一样
如果参与其他表达式中:
都是将变量中的值+1
写在前++: 返回*新*值 ->如:var n=1;console.log(++n);(此时返回的是新值,是+1后的值->2)
写在后++: 返回*旧*值 ->如:var n=1;consoloe.log(n++);(此时返回时旧值,是未+1的值->1)
2. 关系运算:做比较!返回bool类型结论
普通:> < >= <= != ==
做关系运算时隐式转换:默认都转为数字再比较
如果参与比较的都是字符串,则按位PK unicode号
特殊:1. 判断是不是NaN:isNaN(num)
如果num是NaN,就返回true,否则返回false
为什么:NaN不等,不大于,不小于任何值,甚至自己
NaN和任何数据做!=比较,永远返回true
习惯用法:判断num是不是数字
!isNaN(num): 返回true,说明num是数字
返回false,说明num不是数字
2. null undefined
undefined: 所有变量的默认值,自动赋值
null: 主动清空一个变量(主动释放对象)
问题:用==无法判断null和undefined
解决:全等===:先数据类型必须相同,再数值相等
===不带隐式转换
何时使用:狭义:区分null和undefined时
广义:只要不希望隐式转换时,就用全等
3. 逻辑运算:将多个关系运算综合得出最终结论
做判断-->返回bool类型true/false
隐式转换:默认将所有条件转化为bool,再联合判断结果
&&:"且",所有条件都为true,结果才为true,
只要一个条件为false,结果就为false
||:"或",只要一个条件为true,结果就为true
只有所有条件都为false,结果才为false
! :"不",颠倒任意关系运算和逻辑运算的结果
***短路逻辑:只要前一个条件已经可以得出最终结论,后续条件不再执行。
利用短路逻辑:2种:
1.一个条件,一件事,满足条件才执行,不满足就什么也不做
total>=500&&(total=total*0.8)
2.设置默认值:||
值1||值2 -->返回两值中有效的一个
4. 位运算:>> <<
左移: m<<n 将m的二进制数左移n位,相当于*2的n次方
右移: m>>n 将m的二进制数右移n位,相当于/2的n次方
5. 扩展赋值运算:先修改变量中的值,再存会变量
+= -= *= /= %=
m+=n --> m=m+n
6. ***三目/三元/条件运算:
什么是根据不同的条件返回不同的值/执行不同的操作
何时使用:
如何使用:
条件1?操作1/值1:
条件2?操作2/值2:
... ...:
默认操作/默认值;-->不能省!
三目 vs if...else
第一种情况:
如果操作简单,首选三目
如果操作复杂,用if...else
第二种情况:
如果操作只是获得不同的值,也可用三目代替if...else
第三种情况:
如果希望省略默认操作时,只能用if...else