学习内容:
一、数据类型
字符串string、数值型number、布尔型boolean、undefined、null、object
1.数值型
v1=10
v1=10.5
v1=081 //如超出了8进制按10进制输出
console.log(v1)
v2=20e500
console.log(v2) //infinity 正无穷
v2=-20e500
console.log(v2) //-infinity 负无穷
//js 整型最大表示范围 2的53次幂----2的负53次幂
MIN_VALUE 属性是 JavaScript 里最接近 0 的正值,而不是最小的负值。
2.类型转换
(1)隐式类型转换:自动将一种数据类型转换成另一种数据类型
console.log("50"-"30")
(2)显示类型转换(强制类型转换):需要手动转换到目标类型
将其它数据类型转换为数值型:
Number()
console.log(Number("12.34")) //12.34
console.log(Number(true)) //1
console.log(Number(false)) //0
console.log(Number("")) //0
console.log(Number(null)) //0
console.log(Number(undefined)) //NaN
console.log(Number(NaN)) //NaN
parseInt()
console.log(parseInt(12.34)) //12
console.log(parseInt(0.12)) //0
console.log(parseInt(true)) //NaN
console.log(parseInt(false)) //NaN
console.log(parseInt("")) //NaN
console.log(parseInt("30e5")) //30
console.log(parseInt(25,16)) //37 25是16进制数转换成10进制为37
console.log(parseInt(25,8)) //21 将8进制下的25转换为10进制数为21
console.log(parseInt(1001,2)) //9
console.log(parseInt(25,10)) //25
parseFloat()
console.log(parseFloat("23.34")) //23.34
console.log(parseFloat("23.45.78")) //23.45
NaN:not a number 非数值
表示一个本来要返回数值的操作数而没有返回数值的情况,不等于任何数值
3.进制转换
(1)其他进制转换为十进制
parseInt(25,16)
parseInt(25,8)
parseInt(25,10)
parseInt(101,2)
(2)十进制转换为其他进制
v1=23
v1.toString(16) //17
v1.toString(8) //27
v1.toString(2) //10111
v1.toString(10) //23
4.常用方法
isNaN() 判断是否为非数值
console.log(isNaN("hello")) //true
console.log(isNaN(true)) //false
console.log(isNaN(false)) //false
console.log(isNaN("10")) //false
任何涉及NaN的操作,都返回NaN
console.log(NaN/8) //NaN
console.log(NaN+8) //NaN
console.log(NaN-8) //NaN
console.log(NaN*8) //NaN
NaN与任何值都不相等,包括他本身
console.log(NaN==NaN) //false
console.log(0/0) //NaN
isFinite() 判断是否为正负有穷数 是为true
console.log(isFinite(200e5)) //true
console.log(isFinite(200e500)) //false
5.常见的面试题
console.log(null*5) //0
console.log(NaN*3) //NaN
console.log(undefined*5) //NaN
console.log("hello"*5) //NaN
console.log("23"+5) //235
console.log("23"*5) //115
console.log("23"*1+5) //28
6.布尔型boolean
true false 小写
if((10>5)==true){} 等价于 if(10>5){}
取反: if(!10>5){
alert("a")
}else{
alert("b")
}
类型转换
Boolean()
Boolean(23) //true
Boolean(0) //false
Boolean("hello") //true
Boolean("") //false
Boolean(null) //false
Boolean(undefined) //false
true false
数值型 非空 0
字符型 非空 ""
undefined 返回false
null 返回false
object 任意对象返回都为true
7.undefined类型
(1)变量只声明,未赋值
var a
typeof(a) //undefined
alert(a) //undefined
alert(c) //报错
(2)函数没有返回值,默认undefined
function f1(){
alert("hello")
}
var r=f1()
console.log(r)
(3)调用函数时,应该提供参数,但没有提供,该参数返回undefined
function f1(a,b){
alert(a) //3
alert(b) //undefined
}
f1(3)
8.null 空类型
var a=null
console.log(typeof(a)) //object null是一种特殊的object
var b={}
b.a=23
b.f1=function(){}
b=null
9.object 对象类型
对象就是一定属性和方法的封装体,通过对象能够引用到这些方法和属性
*10.typeof()
(1)数值类型,typeof返回number
console.log(typeof(1)) //number
console.log(typeof(NaN)) //number
console.log(typeof(Number.MAX_VALUE)) //number
console.log(typeof(Number.MIN_VALUE)) //number
console.log(typeof(Infinity)) //number
(2)字符串类型,typeof返回string
console.log(typeof("123")) //string
(3)布尔类型,typeof返回boolean
console.log(typeof(true)) //boolean
(4)对象,数组,null, typeof返回object
console.log(typeof(window)) //object
console.log(typeof(document)) //object
console.log(typeof(null)) //object
console.log(typeof(Math)) //object
console.log(typeof([])) //object
(5)函数类型,typeof返回function
function f1(){}
console.log(typeof(f1)) //function
console.log(typeof(eval)) //function
console.log(typeof(Date)) //function
(6)未定义的变量或undefined本身,typeof返回undefined
console.log(typeof(c)) //undefined
console.log(typeof(undefined)) //undefined
二、流程控制语句
1. if(){
}else if(){
}else{
}
2.switch(){
case:语句体;break;
case:语句体;break;
case:语句体;break;
default 语句体
}
var a=1
switch(a){
case 1:
case 2:
case 3:console.log("a3");break;
case 4:
case 5:console.log("a5");
default:console.log("a6");
}
3.for(var i=0;i<5;i++){
语句体
}
4.while循环
5.do while循环 至少执行一次
6. break 立即跳出循环
continue 停止当前循环,进入下一次循环