运算符
赋值运算符
+=、-=、/=、*=、%=这些都在别的语言里学过
一元运算符
做自增运算,别的语言也学过
++:让变量的值+1
--:让变量的值-1
用作计数,比如每进行一次操作,count++
前置自增和后置自增
和C语言一样,前置自增和后置单独使用没有区别
如果参与运算就有区别了:
独立使用没有区别,开发中一般都是独立使用,i++用的多,而且都是单独使用
let i=1
console.log(i++ + ++i +i);
运算结果是7,1+3+3(i++后i=2,++i等于2+1,新的i=3)
比较运算符
比较数据大小、是否相等
==是否相等
===左右两边是否值和类型都相等
!==左右两边是否不全等
双等号只能判断值
js里以后判断是否相等都用===
全局属性 NaN
是一个表示非数字的值。
比较异常的数字类型一般用NaN,比如失败的显示/隐式转换、计算出的结果不是实数、不定式、一个数被强制转换为NaN的表达式、将无效值表示为数字的其他情况
- 失败的数字转换(例如,显式转换,如
parseInt("blabla")
、Number(undefined)
,或隐式转换,如Math.abs(undefined)
)- 计算结果不是实数的数学运算(例如,
Math.sqrt(-1)
)- 不定式(例如,
0 * Infinity
、1 ** Infinity
、Infinity / Infinity
、Infinity - Infinity
)- 一个操作数被强制转换为
NaN
的方法或表达式(例如,7 ** NaN
、7 * "blabla"
)——这意味着NaN
具有传染性- 将无效值表示为数字的其他情况(例如,无效的 Date
new Date("blabla").getTime()
、"".charCodeAt(1)
)
NaN涉及数学运算(除位运算)结果也通常位NaN
当
NaN
是任何关系比较(>
、<
、>=
、<=
)的操作数之一时,结果总是false
。
NaN
不等于(通过 ==、!=、=== 和 !==)任何其他值——包括与另一个NaN
值。
比较运算符比的时候是根据ascii码表来比较的
Ascll完整码表(256个)_ascll码表-CSDN博客
可以进行字母字符的比较:
字符也是逐个逐个的比
console.log('aa'<'aac');//这个也是true,因为aa===aa,但是" "<c
尽量不要涉及小数的比较,因为小数有精度问题
比较运算符也有隐式转换
逻辑运算符
还是C语言的&&和||还有!
运算符优先级
语句
表达式:可以被求值的代码,JavaScript引擎会自己计算结果
语句:不一定有值,只是执行了一下
有时候表达式也可以理解为表达式语句,因为它是在计算结果,但不是必须的成分(continue)
三大语句
代码是按顺序结构执行的从上到下
分支结构
循环结构
三元运算符
条件 ? 满足条件执行的代码 : 不满足条件执行的代码
let a = +prompt()
let b = +prompt()
a>b? alert(a):alert(b)
在小于10的数字前面补零
let num = prompt()
num=num < 10 ? 0 + num : num
//let num = +prompt()
//num=num < 10 ? '0' + num : num
//这样也可以
字符串在比较的时候会隐式转换为数字,比完转回字符串
分支
if和C语言一样
let num=prompt('输入一个数')
if(num%4===0&&num%100!==0){alert('是闰年')
}
switch
switch (数据) {case 值1:代码1break case 值2:代码2break default:代码nbreak
}
在case里找到和switch里全等的数据,case里能连续写多个值,并执行里面的代码;如果没有===(全等)执行default
switch (1) {case 3:alert('我是case1')breakcase 1,1:alert('我是case2')breakdefault:alert('我是default')break
}//输出:我是case2
没有break会穿透执行(把剩下的也执行了)
不是什么时候都会穿透
仅当必要时才会对子句表达式进行求值——如果已经找到了匹配项,则后续的
case
子句表达式将不再进行求值,即使它们可能会因跳出和穿透机制而被执行到。
switch (undefined) {case console.log(1):case console.log(2):
}
// 仅输出 1
说人话就是经过计算的表达式语句在case里是不穿透的
循环
在满足条件期间重复执行某段代码
循环退出:
break:退出循环
continue:结束本次循环,继续下次循环
Ø continue 退出本次循环, 一般用于排除或者跳过某一个选项的时候, 可以使用continueØ break 退出整个循环, 一般用于结果已经得到, 后续的循环不需要的时候可以使用
断点调试
打开浏览器f12
点击sources
刷新浏览器
打个断点、调试
输入num检测num变量