循环
While循环
While(表达式){执行循环语句}
do-while循环
do{
执行循环语句
}While(表达式)
区别:while先判断后执行,do-while先执行后判断(不满足情况下,do-while会多执行一次)
for循环
For(赋初值;满足条件;做运算){
执行循环语句
}
初始值是多少,结束值是多少,做什么运算
结束语句
break多层循环只结束里层
continue结束当前循环
Lable语句
用来给代码取别名,方便下面语句操作此代码
a: for(var i=1;i<=10;i++){
b: for(var j=1;j<=5;j++){
if(j==3){
break a//结束外层循环
}
console.log("i="+i+",j="+j)
}
逻辑运算符
逻辑与
如果第一个操作的是对象,返回第二个操作值
如果第二个操作的是对象,只有第一个为真,才会返回第二个对象
如果前后两个都是对象,则会返回第二个对象
如果第一个操作的是null,则会返回null
如果第一个操作的是undefined,则会返回undefined
如果第一个操作的是NaN,则会返回NaN
逻辑或
如果第一个操作的是对象,返回第一个操作值
只有第一个操作结构为false,则返回第二个
如果前后两个都是对象,则返回第一个对象
前后都是null,则会返回null
前后都是undefined,则会返回undefined
前后都是NaN,则会返回NaN
逻辑非
如果第一个是对象,返回false
如果是一个空字符串,返回true
如果是一个非空字符串,返回false
如果操作的是数字0,返回true
如果操作的是一个非0数字,返回false
如果操作的是null,返回true
如果操作的是undefined,则会返回true
如果操作的是NaN,则会返回true
一句话:
逻辑与,有关键字返回关键字,不为false返回第二个
逻辑或,前后都为关键字,返回关键字,第一个为false才会返回第二个
逻辑非,为空和关键字返回true,其他都返回false
引用类型
包装对象
Number对象
定义:
Var a=24 整数
Var b=23.45 浮点数
Var c=071 八进制
Var d=0x1A 十六进制数
Var e=12340000000000000000//1.234e+31 科学计数法
Var f=0.0000000000000000003//3e-31
为什么0.1+0.2不等于0.3?
丢失精度问题
0.1=0.0001 1001 1001 1001 ....
0.2=0.0011 0011 0011 0011....
结果:0.30000000000000004
属性和方法
NaN不是一个数字 true
Infinity 无穷 -Infinity 负无穷
toFixed()保留小数位数 //console.log(n.toFixed(2))
ToString()转化为字符串
Number.EPSILON判断是计算误差还是数据不同
//console.log(0.1+0.2-0.3<Number.EPSILON)
数据类型转化
console.log(Number("12.34dsd12"))//报错
console.log(Number(true))//1
console.log(Number(false))//0
console.log(Number(NaN))//NaN
console.log(Number(null))//0
console.log(Number(undefined))//NaN
Boolean对象
例如:面试题
var t1=new Boolean(false)
var t2=false
console.log(t1==t2)//false==false true
console.log(t1===t2)//boolean===object false 类型是否相同
console.log(t1&&t2)//false&&false false
console.log(t1&&true)//object&&true true第一个为对象,返回第二个操作值
console.log(t2&&true)//false&&true false 第一个结果不为真,不返回第二个
其他类型转化布尔值
字符串:任意字符串为true,”” 为false
数字:非零和无穷为true,0为false
Null undefined都为false
对象都为true