工作一年多了,从来没有把知识总结写下来的习惯,最近发现记忆力真的太有限了。开始试着在空闲总结一些基础的知识,一方面巩固一下知识,另一方面方便以后查找吧。
1、javascript的类型
javascirpt有三种基本数据类型:
字符串 string,数值 number,布尔 boolean
两种引用数据类型:
对象 Object;数组 Array
两种特殊的数据类型:Null,Undefined
可以通过typeof(param)来判读数据类型。
var t1; var t2 = true; var t3 = 3; var t4 = "t"; var t5 = new Object(); var t6 = null; var t7 = NaN; var t8 = undefined; alert(typeof(t)); // 显示"undefined" alert(typeof(t1)); //显示"undefined" alert(typeof(t2)); //显示"boolean" alert(typeof(t3)); //显示"number" alert(typeof(t4)); //显示"string" alert(typeof(t5)); //显示"Object" alert(typeof(t6)); //显示"Object" alert(typeof(t7)); //显示"number" alert(typeof(t8)); //显示"undefined"
当定义的一个变量没有初始化时,默认为undefined.
2、判断为空或不是对象或是否相等
var t1; //t1的值默认为undefined var t2 = null; var t3 = NaN; var t4=""; var t5=''; var t6 = new Object(); alert(t1 == t2); //显示"true" undefined与null相等 alert(t1 == t3); //显示"false" alert(t2 == t3); //显示"false" alert(t3 == t3); //显示"false" NaN与任何值都不相等,与自己也不相等。 alert(t4==t5); //显示 "true" 双引号的字符串和单引号的字符串相等 alert(t4==null);//显示 "false" 空字符串不等于null alert(t4==t6);//显示 "false" alert(t6==null);//显示 "false"
Number,Boolean,String,Undefined这几种基本类型混合比较时,会将其转换成数字再进行比较
基本类型与复合对象进行比较时,会先将复合对象转换成基本类型(依次调用valueOf与toString方法)再进行比较
undefined被当成基本类型,undefined转换成数字是NaN,因此undefined与除null之外的其它类型值进行比较时始终返回false
null被当成复合对象,由于null没有valueOf与toString方法,因此和除了undefined之外的其它类型值进行比较时始终返回false
3、if判断
if(param) 直接判断,当参数为0、NaN、unfinded、空字符串时返回false,参数为其他时返回true
if (typeOf(x) == "undefined") // 变量是否已定义 if (typeOf(x) == "object") //变量是否是object类型 if(isNaN(x)) //返回true不是数字,返回false是数字 if(x) //直接判断 var t; var t1 = 0; var t2 = -1; var t3 = 2; var t4 = ""; var t6 = new Object(); alert(t6?"true":"false");//true alert(t?"true":"false"); //false undefined常量在if判断中为false alert(t1?"true":"false");//false 数字0在if判断中为false alert(t2?"true":"false");//true alert(t3?"true":"false");//true 不为0的数字在if判断中为true alert(t4?"true":"false"); //false 空字符串在if判断中为false alert(NaN?"true":"false"); //false alert(null?"true":"false"); //false 任何值为null的变量在if判断中为false