1、类型转换(显示、隐式)
显示类型转换:
1、parseInt 转换成整数
var a = '123.1px';
console.log(parseInt(a)); //123 将一个string转换成整数,只取第一个整数
2、parseFloat 转换成浮点数(小数)
var a = '123.2';
console.log(parseFloat(a));//123.2
3、toString 转换成字符串
其他类型跟字符串拼接,那么拼接之后就是字符串类型
var a = 123;
var b = c.toString();
console.log(typeof b);
隐式类型转换(没有通过其他手段进行转换)
1、两边都是数字类型的字符串,要有运算符相连
console.log(3 * '8'); //24
console.log('3' * '8'); //24
console.log(3 * null);// null会转换成0
console.log(3 * false);//false转为0
console.log(3 * true);//true转为1
console.log(3 * '9px');//NaN 不是数字,不纯的数字没办法隐式类型转换
console.log(3 * undefind);//NaN ubdefind没办法隐式类型转换
类型转换总结:
无论哪种运算,只要出现undefined参与运算,结果就是NaN;
数字类型的字符串、false、true、null都能进行隐式类型转换,除了加号;
加号比较特殊,没办法进行隐式类型转换,除了Boolean值除外;
2、运算符
1、数学运算符
/* + - * / % () */
2、关系运算符
> < >= <= == != ===(全等) !==(不全等)
最终会返回布尔值
var a = function(){
alert();
}
var b = function(){
alert();
}
console.log(a==b); //false
/* === 全等:
基础数据类型除了比较值外,还要比较数据;类型
引用类型比较内存地址
*/
console.log(11=='11'); //true
console.log(11==='11');//false
3、逻辑运算符
/*
&& 逻辑与 都真才真,有假就假 a&&b a真抛出b a假抛出a
|| 逻辑或 有真则真,全假则假 a||b a真抛出a a假抛出b
! 逻辑非
*/
4、赋值运算符
/* + += -= ++ -- /= %/ *=*/
var a = 11;
a+=10;
console.log(a);
var b = 12;
console.log(b--);
console.log(b++);
/*
++在变量前和变量后的区别
(参与运算)++a 先自增再执行
*/
var x = 10;
var y = x++;
console.log(x);//11
console.log(y);//10
var z = 2 + x++;
console.log(x);//11
console.log(z);//12
3、运算符练习
/*
作业的最终结果:总结出运算符的计算顺序(优先级)
var a = 3 < 6 && 7 < 14; //true
原式 = true && true
= true
var a = 1 + 2 < 3 + 3 && 3 + 4 < 2 * 7;
原式 = 3 < 6 && 7 < 14
= 上一题
= true
var a = false + true && 13;
原式 = 0 + 1 && 13
= 1 && 13
= 13
var a = 15;
false + a++ + true > 8 && 13 || 6
原式 = false + 15 + true > 8 && 13 || 6
= 16 > 8 && 13 || 6
= true && 13 || 6
= 13 || 6
= 13
*/
var a = 3 < 6 && 7 < 14; //true
var a = 1 + 2 < 3 + 3 && 3 + 4 < 2 * 7;//true
var a = false + true && 13;//13
var a = 15;
false + a++ + true > 8 && 13 || 6 //13