javascript阶段二(条件循环语句,数据类型检测)
一、条件语句
if
if是最基本的判断语句,条件成立则执行if函数。
var a = 5,
var b ,
if(a = b){
console.log(b);
}
if-else
if-else判断语句
var a=5;
var b;
if(a==b){
alert("b=5");
}else { //如果a1=b则执行下面内容
alert("b1=5");
}
else-if
这是if语句的多重if,在用于多种情况的时候使用。
var a=5;
var b;
var c;
var d;
var e;
if(a==b){
alert("b=5")
}else if(a==c){
alert("c=5")
}else if(a==d){
alert("d=5")
}else if(a==e){
alert("e=5")
}else{
alert("b1=5、c1=5、d1=5、e1=5")
}
if语句比较简单
二、循环语句
while循环
语法
while(条件表达式){
执行语句-单表达式布尔值为ture的时候执行此语句
}
while主要用于不知道要循环多少次的情况
do while循环
语法结构
do{
条件表达式为突然时执行的语句
}while(条件表达式)
do while与while循环的不同之处就是要先执行一次do语句,在使用while条件表达式来判断是否为ture,如果是true继续循环,false跳出循环。
do while至少执行一次循环,看实际情况使用
for循环
语法结构
for(变量初始值;条件表达式;变量更新){
执行语句:条件表达式为true的时候执行
}
循环次数知道的情况可以使用for循环,一般用于遍历。
先判断条件,后执行循环主体
三种循环的区别:
for和while循环都是先判断条件然后执行语句,通过条件语句布尔值为false直接跳过,
do while语句先执行一次语句在进行条件判断
三、数据类型检测
数据类型检测方法
四种:
typeof
instanceof
constructor
object.prototype.toString.call()
typeof
typeof是一元运算符,返回一个字符串类型,用来判断变量是否为空或者其类型
注:typeof不能判断null和object。其他都可以正确返回
typeof undefined // 'undefined'
typeof '10' // 'String'
typeof 10 // 'Number'
typeof false // 'Boolean'
typeof Symbol() // 'Symbol'
typeof Function // ‘function'
typeof null // ‘Object’
typeof [] // 'Object'
typeof {} // 'Object'
对象在底层的储存是用二进制表示的,在js中,如果二进制的前三位都是0,系统会判定为object类型,null二进制是000,所以系统判定null为object类型
其他类型底层储存标志位
000 :对象类型。
1 :整型,数据是31位带符号整数。
010 :双精度类型,数据是双精度数字。
100 :字符串,数据是字符串。
110 :布尔类型,数据是布尔值。
instanceof
instanceof运算符用来测试一个对象在原型链中是否存在一个构造函数prototype属性,可以用instanceof来判断某个对象是不是另外骗一个对象的实例
function Foo(){}
var f1 = new Foo();
console.log(f1 instanceof Foo);// true
constructor
对于引用类型,可以使用xx.constructor.name构造函数来判断。
// constructor 构造来判断
console.log(fn.constructor.name) // Function
console.log(date.constructor.name)// Date
console.log(arr.constructor.name) // Array
console.log(reg.constructor.name) // RegExp
object.prototype.toString.call()
这是最好的基本类型检测方式;object.prototype.toString.call(),可以区分出所有基本类型
// 判断基本类型
Object.prototype.toString.call(null); // "[object Null]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(“abc”);// "[object String]"
Object.prototype.toString.call(123);// "[object Number]"
Object.prototype.toString.call(true);// "[object Boolean]"
// 判断引用类型
function fn(){
console.log(“xiaolu”);
}
var date = new Date();
var arr = [1,2,3];
var reg = /[hbc]at/gi;
Object.prototype.toString.call(fn); // "[object Function]"
Object.prototype.toString.call(date); // "[object Date]"
Object.prototype.toString.call(arr); // "[object Array]"
缺点是不能细分谁是谁的实例