一:js中变量的数据类型有6种:Undefined,String,Number,boolean,Object
(1)Undefined类型变量只有只一个值undefined,当定义变量的时未进行初始化,或者手动初始化为undefined,其变量的值就位undefined;
1 <script type="text/javascript"> 2 3 var ename; 4 alert(ename);//弹出undefined 5 6 ename=undefined; 7 alert(ename);//弹出undefined 8 9 </script>
(2)“String”类型:'a','abcd',"a","abcd”...等都是String类型;注意js中没有字符型数据,而且String类型数据既可以用单引号表示,也可以用双引号表示;
a. typeof运算符:是用来动态判断变量的数据类型;
使用规则:typeof 变量名
运算结果有以下6种:"undefined","string","number","boolean","object","function";
b. 字符串数据类型又属于,字符串对象,但字符串不属于Oject类型;
c. 字符串类中的常用方法:toUpperCase()将字符串全部转化成大写,toLowerCase(),将字符串全部转化成小写,
d. 字符串类中常用属性:length,计算字符串的长度,prototype用来动态的为字符串类扩展属性或者方法;
<script type="text/javascript"> var ename="abc"; alert(ename);//弹出abc //typeof用法 alert(typeof ename);//弹出string function sum(a,b){ if((typeof a)!="number"||(typeof b)!="number"){ alert("数据类型不正确"); return ; } return a+b } sum();//弹出"数据类型不正确" alert(sum(1,2));//弹出3 //substr(起始下标,截取长度),用来截取字符串;substring(起始下标,结束下标);用来截取字符串,包括起始位置,不包括结束位置 alert("abcdef".substr(1,2));//bc alert("abcdef".substring(1,2))//b </script>
(3)第三种数据类型:Number:包括1,2,3,1.0,NaN,Infinity...等
a. NaN表计算结果本因该是一个Number类型,但是实际上计算结果不是Number类型,结果就为NaN;
NaN意思为:Not a Number,不是一个数字,但是他是Number类型的数据;
isNaN(变量);该函数是用来判断一个数据是否是NaN,若是则返回true,若不是则返回false;
b. Infinity表示无穷大,当分母为零的时候,结果肯定为Infinity;
c. paeseInt();表示将字符串类型数据转化为Number类型,结果保留数据的整数位;
d. perseFloat();表示将字符串类型数据转化为Number类型,结果保留小数为;
1 <script type="text/javascript"> 2 3 //3.第三种数据类型:Number 4 //1,2,3,1.0,NaN,infinity 5 var i=1; 6 alert("变量的数据类型是:"+typeof i); 7 8 i=NaN; 9 alert("i变量的数据类型是:"+typeof i); 10 11 i=Infinity; 12 alert("变量i的数据类型为:"+typeof i); 13 14 //当计算结果应为数字,但是实际上计算机过不是数字的时候,结果就是NaN; 15 //NaN表示Not a Number,不是一个数字,但是死NaN本身是一种数据类型 16 17 var a; 18 var b; 19 var c=a+b; 20 alert(c);//NaN 21 22 var d="abc"; 23 var e=10; 24 alert(d/e);//NaN 25 26 //重要的函数:isNaN(数据),函数执行的结果为:true/false;该函数的作用是判断是一个数据是否是一个数字,若是数字返回true,若不是数字返回false 27 alert(isNaN(d/e));//true 28 alert(isNaN(10/2));//false 29 30 //什么时候使用Infinity?Infinitity表示无穷大,当除数是0的时候,结果一定是Infinitity 31 var retValue=10/0; 32 alert(retValue);//Infinitity 33 34 alert(10/3); 35 36 //parseInt(数据)函数,将字符串类型的数据转化为"int"类型的数据,只保留整数位 37 var price="100"; 38 price=parseInt(100); 39 alert(price+1);//101 40 41 price="3.14"; 42 price=parseInt(price); 43 alert(price+1);//4 44 45 //parseFloat(数据)可以将非数字转换成数字,保留小数位 46 price="3.95"; 47 price=parseFloat(price); 48 alert(price);//3.95 49 50 </script>
(4)Boolean类型数据:只有两个值:true/false
(5)Object类型的数据:所有自定义类都是Object类的子类;
a. 自定义类的第一种方式: function 类名(参数列表){
this.属性名称;
this.方法名称=function(参数列表){
方法体;
}
}
b. 自定义类的第二种方式: 类名=function(参数列表){
this.属性名;
this.方法名=function(参数列表){
方法体;
}
}
1 <script type="text/javascript"> 2 //5.第五种数据类型:object 3 4 var obj=new Object(); 5 alert(typeof obj); 6 7 //js中所有的自定义类都是Object类的子类 8 //定义类的第一种方式 9 function Person(name,age){ 10 11 //类的属性 12 this.name=name; 13 this.age=age; 14 15 //类的方法 16 this.work=function(){ 17 18 alert(this.name+"is wotking"); 19 20 } 21 } 22 23 //创建Person类 24 var per=new Person("徐志远",20); 25 per.work(); 26 27 //可以使用prototype属性为Person类扩展方法 28 Person.prototype.eat=function(){ 29 30 alert(this.name+"is eating"); 31 32 } 33 34 per.eat(); 35 36 //定义类的第二种方式 37 Employee=function(name,age){ 38 39 //Emploee类的属性 40 this.name=name; 41 this.age=age; 42 43 //Emploee的方法 44 this.introduce=function(){ 45 46 alert("My name is"+this.name+"My age is"+this.age); 47 48 } 49 50 } 51 52 //创建Emploee类 53 var emp=new Employee("张鑫",19); 54 emp.introduce(); 55 56 </script>