Day 02 数据类型 流程语句
一.数据类型
字符串string
数值型number
布尔型boolean
undefined 未定义型
null
object
1.数值型number
1.if(){
}else if(){
}else if(){
}else(){
}
string 字符串
typeof 检查输出类型
+加号 可以运算也可以进行字符串拼接
2.类型转换
(1)隐式类型转换:自动将数据从一种数据类型转到另一种数据类型的过程
console.log("50"-"30") //20
(2)显示类型转换(强制类型转换) 需要手动转换到目标类型
将其他数据类型转换为数值类型
Number()
paresInt() 其他类新转换成整型
console.log(parseInt(12.15));//12
console.log(parseInt(023))//19 八进制转十进制
parseFloat() 转换成浮点数
NaN :not a number 非数值
表示一个本来要返回数值的操作数,而没有返回数值的情况.
NaN
(3)进制转换
1.其他进制转换为十进制
paresInt(25,16) 16进制
paresInt(25,8) 8进制
paresInt(25,10) 10进制 25
paresInt(101,2) 2进制
2. 十进制转换为其他进制
v1=23
v1.toString(16)
v1.toString(8)
v1.toString(2)
v1.toString(10)
进制转换:
整型有4种进制形式:
1.十进制: 都是以0-9这九个数字组成,不能以0开头。
2.二进制: 由0和1两个数字组成。
3.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
4.十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。
3.常用方法
isNaN() 判断是是否为非数值
isFinite() 是否是正负无穷
isFinite(200e500) //false
isFinite(200e5) //true
isNaN()
1.任何涉及NaN的操作,都返回NaN
NaN/8
NaN+8
NaN-8
NaN*8
2. NaN与任何值都不相等 包括他本身
NaN== NaN //false
4.常见的面试题
console.log(null*5)
null*5 //0
NaN*3 //NaN
undefined*5 //NaN 隐形类型转换
"hello"*5 //NaN
"23"+5 //235
"23"*5 //115
6.布尔型 boolean()
true false 小写
if(!10>5){
alert("a")
}else{
alert("b")
}
类型转换
boolean()
Boolean(23)
Boolean(0)
Boolean("hello")
Boolean("")
Boolean(null)
Boolean(undefined)
true false
数值型 非空 0
字符型 非空串 ""
undefiend 返回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)
alert(b)
alert("hello")
}
f1(3)
console.log(r);
8.null空类型
var a=null
typeof(a)//object
var b={}
b.a=23
b.f1=function(){}
b=null
if(b==null){}
9.object对象类型
对象就是一定属性和方法的封装体,通过对象能够引用到这些方法和属性
10. typeof()
(1)数值类型,typeof返回 number
typeof(1) //number
typeof(NaN) //number
typeof(Number.MAX_VALUE) //number
typeof(Number.MIN_VALUE) //number
typeof(Infinity) //number
(2)字符串类型,typeof返回 String
typeof("123") string
(3)布尔类型,typeof返回, boolean
typeof(true) //boolean
(4)对象,数组,null,typeof返回object
typeof(window) //object
typeof(document) //object
typeof(null) //object
typeof(Math) //object
typeof([]) //object
(5)函数类型,typeof返回function
function f1(){}
typeof(f1)
type(Date) function
typeof(eval)
(6)未定义变量或undefined,typeof返回 undefined
二.流程控制语句
1、 if(){
}else if(){
}else{
}
2.流程控制语句
switch(){
case:语句体;break;
case:语句体;break;
case:语句体;break;
default 语句体
}
3.for循环
for(var i=0;i<=5;i++){
语句体
}
//for in /for each
4.while循环
5.do while至少执行一次
6.break:立即跳出循环,结束所有循环
continue:停止当前循环,进入下一次循环
练习题:
//+加号 可以运算也可以进行字符串拼接
// console.log("50"+"30") //5030
// console.log("50"-"30") //20
// console.log(Number("50")+Number("30"));
// console.log(Number(12)); //12
// console.log(Number("23"));//23
// console.log( Number("hello"))//NaN
// console.log( Number("23aa"))//NaN
// console.log(Number(true))//1
// console.log(Number(false))//0
// console.log(Number(""))//0
// console.log(Number(0x56))//86
// console.log(Number("0x56"))//86
// console.log(Number(023))//19
// console.log(Number("023"))//23
// console.log(Number(00023))//19
// console.log(Number("00023"))//23
// console.log(Number("30e5"))//3000000
// console.log(Number(null))//0
// console.log(Number(undefined))//NaN
// console.log(Number(NaN))//NaN
// console.log(parseInt(12))//12
// console.log(parseInt(12.34))//12
// console.log(parseInt(0.12))//0
// console.log(parseInt("23"))//NaN
// console.log(parseInt("hello"))//NaN
// console.log(parseInt("23aa"))//23
// console.log(parseInt(true))//NaN
// console.log(parseInt(false))//NaN
// console.log(parseInt(""))//NaN
// console.log(parseInt("0x56"))//86
// console.log(parseInt(023))//19
// console.log(parseInt(00023))//19
// console.log(parseInt("30e5"))//30
// console.log(parseInt(25,16))//37 16是16进制
// console.log(parseInt(25,8))//21 8是八进制
// console.log(parseInt(1001,2))//9 2是2进制
// console.log(parseInt(25,10))//25 10是十进制
// console.log(parseFloat("23.34"))//23.34
// console.log(parseFloat("23.45.78"))//23.45
// console.log(v1=23) //23
// console.log(v1.toString(16)) //17
// console.log(v1.toString(8)) //27
// console.log(v1.toString(2)) //10111
// console.log(v1.toString(10)) //23
// isFinite(200e500) //false
// isFinite(200e5) //true
//判断是是否为非数值
isNaN("hello") //true
isNaN(true) //false
isNaN(false)//false
isNaN("10") //false "10"是字符串
console.log(isNaN("10") )
// 1.任何涉及NaN的操作,都返回NaN
NaN/8
NaN+8
NaN-8
NaN*8
// 2. NaN与任何值都不相等 包括他本身
NaN== NaN //false