1.运算符
常规分类:
一元运算符 typeof ++ -- !
二元运算符 + - * / % == >= <= != > < || &&
三元运算符 ?:
按作用分类:
算术运算符 + - * / %
逻辑运算符 && || !
比较运算符(关系) > < == === >=
赋值运算符 = += -= *=
位运算符 >> << ~
number 类型的数值运算
var num1 = 1;
var num2 = 2;
var num3 = num1 + num2;
console.log(num3);
var num4 = 15;
console.log(num4 % num2);
+
除了运算数之外 还可以运算字符串 字符串会进行拼接
var str1 = "He";
var str2 = "llo";
console.log(str1 + str2);
比较运算符
运算完之后 返回的结果是一个boolean类型
var num5 = 5;
var num6 = 6;
console.log(num6 > num5);
var num7 = 7;
// 错误写法
// console.log(num7>num6>num5);
// 正确写法
console.log(num7 > num6 && num7 > num5);
赋值运算符
简写格式+= -= /= *=
var sum=0;
sum+=2; // sum = sum+2;
自加 自减 ++ --
var num = 10;
console.log(num++); // 先赋值 然后再自加
console.log(num);
console.log(++num);// 先自加 然后再赋值
2.三元运算符:
条件?条件成立执行:条件不成立执行
赋值
var num = 7>3?7:3;
console.log(num);
执行语句
var b1= true?console.log(true):console.log(false);
console.log(b1);
prompt()获取用户输入
var num1 = prompt("请输入一个数字")*1; // 01 10
num1>10?alert(num1):alert("0"+num1);
if(num1>10){
alert(num1);
}else{
alert("0"+num1);
}
三元运算 嵌套使用
var res=7>3?8>4?8:4:3;
console.log(res);
3.运算符优先级:
先 乘除 后加减
var sum = 10 + 7 * 3 + 10;
console.log(sum);
先 && 后 ||
var res = 7 > 10 && 7 > 3 || 10 > 5 && 3 > 2;
console.log(res);
当我们无法 准确知道 优先级时 可以使用 () 进行辅助
运算符优先级口诀(必记)
括号成员最高级 ()
全体单目排第二 ++ -- !
乘除余三,加减四 * / % 第三 + - 第四
移位五,关系六 >>> <<< 移位 > < >= <= 关系
等于不等于排第七 == != === !==
逻辑八,赋值九 && || 七 = += -=
逗号成员最低级 ,
级别相同时候顺序优先
思考
怎么计算: 'aa' + 1 + 1 - 2 && 1 - 2 > 3 || 'aa' + 2 > 3 || (!2) && 1++?
计算过程如下:
'aa'+1+1-2&&1-2>3||'aa'+2>3||(!true)&&1++ // 2 --- bool
'aa'+1+1-2&&1-2>3||'aa'+2>3||false&&1++ // !2
'aa'+1+1-2&&1-2>3||'aa'+2>3||false&&2 // 1++
'aa1'+1-2&&1-2>3||'aa'+2>3||false&&2 // 'aa'+1
'aa11'-2&&1-2>3||'aa'+2>3||false&&2 // 'aa1'+1
'aa11'-2&&1-2>3||'aa2'>3||false&&2 // 'aa'+2
NaN-2&&1-2>3||'aa2'>3||false&&2 //'aa11'-2
NaN &&1-2>3||'aa2'>3||false&&2 // NaN-2
NaN && -1 >3||'aa2'>3||false&&2 // 1-2
false
最终结果是:false
;
上题的解析小步骤:
'aa'+1+1
// 'aa1'+1
// 'aa11'
'aa'+1+3-2
// 'aa'+1+1
// 'aa11'
'aa'+1+3-2
// 'aa13'-2
// NaN - 2
// NaN
[1,2,3] - 1
// [1,2,3] ---> '1,2,3' -1
// '1,2,3'---->NaN -1
[2]-1
// '2' -1
// 2 -1
// 1
数组对象的运算;
隐式转化为 string
再转化其他类型运算
相当于触发 toString
var a = {
a:"123"
}
a+12;
// a --->'[object Object]' + 12
// 12---> '[object Object]' + '12'
//"[object Object]12"
隐式转化:
1: 其他类型转number
bool undefined null string arrary object
true 1
false 0
undefined NaN
null 0
arrary object --> string --> number
除了纯数字字符 其他一律NaN
2: 其他类型转字符串
直接加引号''
3: 其他类型转boolean
false : false 0 undefined null NaN ''
其他都是true
(运算符很重要,要记住哦!!!)