--、简单值:通过计算转换成一个值、字面量或变量名
5.9
true
'abc'
没有任何意义
--、复杂:字面量和运算符组合
var box=1
var box2=box+1
box>10
box=20
box<5
2、一元运算符
--、++
--、+:加法,字符串拼接
var box=100
var box2=100+"88"
console.log(box2) // 10088
var str="abc"+"bcd"
var box=true+100
console.log(box) // 101
console.log(true+false) // 1
// console.log(true++) // 报错
console.log(+true) // 1
简写形式
var a=100
a+=2 // a=a+2
--、-减法
var a='a'
var b='A'
console.log(a.charCodeAt()-b.charCodeAt())
--、乘法:*
--、乘法:*
console.log("60"*"4") // 240
--、除法:/
console.log("60"/true) // 60
--、取余(取模)
console.log(100%30) // 10
console.log(100%true) // 0
console.log(100%false) // NaN
console.log(100%null) // nan
console.log(100 / null) // Infinity
console.log(100 / undefined) // NaN
console.log(100%'30') // 10
注:+如果计算值,需要强转,/、*、% 、- 都有隐式转换的功能
关系运算符
<:小于
>:大于
>=:大于等于
<=:小于等于
==:等于
注:结果是boolean值
var box='a'>'b'
console.log(box) // false,ASCII码
var box='A'>'b' // A=65 a=97 b=98
console.log(box) // false
console.log(undefined==null) // true
console.log('null'==null) // false
console.log('1'==1) // true
console.log(false==0) // true
console.log(true==2) // false
console.log(undefined==0) // false
console.log(null==0) // false
console.log(100=='100') // true
console.log(5>3>1) // false
console.log(true+false) //1
console.log(true+2>4) //false
全等(恒等)===:比值,比类型,没有隐式转换(完全一模一样)
console.log('1'==1) // true
console.log('1'===1) // false,没有隐式转换,比值,比类型(完全相等)
console.log(undefined===null) // false
console.log(undefined===undefined) // true
console.log(null===null) // true
console.log((1==1)===true) // true===true
var a
console.log(a===undefined) // true
var a=1
var b='a'
console.log((a+b)===(a+'b')) // false
console.log(a/b===b/a) // NaN===NaN,false
!=:不等于
!==:(不全等)
var a=100
console.log(a!=a) // false
var b="100"
console.log(a!=b) // false
var c=200
console.log((a!=c)!=false) // true
var d=2
console.log(((d++)==3)===true) // false
--、逻辑运算符
1、&&(and):与运算(两个值都为true,结果为true,只要有一个为false,结果就是false),两个条件同时满足
var a=100
var b=200
var c=300
var d=400
var e=500
var f=600
console.log(a<b && c<d && e<f) // true
<input type="text" placeholder="请输入用户" id="user"/>
<input type="button" value="注册" onclick="check()"/>
<script>
function check(){
var u=user.value
if(u!='' && u.length>=6){
alert('合法')
}else{
alert('用户名不合法')
}
}
</script>
2、|| (or):或,两个条件满足一个就是true
<input type="text" placeholder="请输入用户" id="user"/>
<input type="button" value="注册" onclick="check()"/>
<script>
function check(){
var u=user.value
if(u=='' || u.length<6){
alert('用户名为空或长度少于6位')
}
}
</script>
3、!(not):非,取反,如果是true那结果是false,如果是false,结果是true
var a=true
console.log(!a) // false
var b=false
console.log(!b) // true
var c=0
console.log(!c) // true
var d=200
console.log(!d) // false
var e=''
console.log(!e) // true
var h='abc'
console.log(!h) // false
var f=null
console.log(!f) // true
var g=undefined
console.log(!g) // true
var h=NaN
console.log(!h) // true
var i=true
console.log(!!!i) // false
<input type="text" placeholder="请输入用户" id="user"/>
<input type="button" value="注册" onclick="check()"/>
<script>
function check(){
var u=user.value
if(!u=='' && !(u.length<6)){ // 用户名不能为空
alert('合法')
}else{
alert('用户不能为空!')
}
}
--、赋值与复合运算符
1、赋值
var box = 200 // 把200赋给box
var a=100
注:带var和不带var是有区别的
function a(){
var box=100 // 局部变量,只能在函数内部使用,外部自动销毁
box1=200 // 全局变量
}
a()
console.log(box1) // 200,box无法输出(报错 not defined)
2、复合赋值运算符
var box=200
box=box+200 // 在box的自身上加200
简写成:box+=200
如:box*=3
var box=5
box+=5
console.log(box) // 10
box*=2 // box=box*2
console.log(box) // 20
box/=2 // box=box/2
console.log(box) // 10
box-=3 // box=box-3
console.log(box)
var box=100
box%=3 // box=box%3
console.log(box) // 1
3、其他运算符
+:字符串运行符(拼接字符串)
var a='abc'
var b="bcd"
var c=a+b
,:一条语句可以执行多个操作
var a=100
var b=200
var c
可以简写成:
var a=100,b=200,c
三元(三目)运算符
<input type="text" placeholder="请输入用户" id="user"/>
<input type="button" value="注册" onclick="check()"/>
<script>
function check(){
var u=user.value
/*
if(u==''){
alert('用户不能为空!')
}else{
alert('正确')
}
*/
// 条件?true(满足条件)执行:false(不满足条件)执行
u==''?alert('用户不能为空!'):alert('正确')
}
注:用于取代简单条件if判断,如果太多的条件判断不推荐使用。
</script>