javascript变量和数据类型
1.JavaScript变量
javascript的变量是松散类型的(弱类型),也就是说一个变量可以用来保存任何类型的数据,每个变量仅仅是用来保存值的占位符。变量的声明用var操作符来定义,如 var message;也可以多个变量一起定义,如var a,b,c;用逗号隔开每个变量。
var message ;
var message;//message为初始化,值为undefined message=12;//message值为12; message="hello";//message 值为hello; message=["hello",12];//message值为数组
上面的代码解释了JavaScript变量为松散类型的,可以有不同类型的值。若在定义变量的时候不用关键字var,则该变量为全局变量,不建议使用太多的全局变量,不容易管理,造成代码混乱;同时太多的全局变量会占用大量内存,因为全局变量直到页面被销毁,全局变量才被销毁。
a=12;//此时a为全局变量
2.JavaScript数据类型
undefined类型
undefined类型是只有一个特殊的值undefined。一个变量被声明,但是没有被赋值,则值为undefined。如
var name; console.log(name==undefined);//输出true
上面的定义等价于 var name=undefined,undefined是一个特殊的值。需要说明的是undefined的变量,与未定义的变量是有区别的。未定义的变量不能直接使用,会产生异常。
var name; console.log(name==undefined);//输出true console.log(sex);//报错, sex is not defined
当然,使用typeof获取变量的值类型时候,未定义的变量的值和已经定义(未初始化)变量的值都为“undefined”。
var name; console.log(name==undefined);//输出true console.log(typeof sex);//输出'undefined' console.log(typeof name);//输出'undefined'
Null数据类型
Null数据类型也是只有一个值的数据类型,这个值是null。从逻辑角度看,null表示一个空指针。typeof null 会返回“object”;
var age=null; console.log(typeof age);//输出'undefined'
Boolean类型
Boolean类型在JavaScript中使用非常多的数据类型,它包含两个值true和false。true不一定是数字值1,false也不一定是数字值0。
数据类型 | 转换为true | 转换为false |
Boolean | true | false |
String | 非空字符串 | “” |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a | undefined |
Nunber类型
Number类型用来表示整数和浮点数。在 JavaScript 中,整数值和浮点值之间没有区别,JavaScript 数字可以是两种类型中的任意一种。
number数据类型可以用来表示十进制的数,如var num=1; var num1=1.2;除十进制外,number还可以表示八进制以及十六进制的整数。八进制的值第一位用0来表示,后面可以用0-7的字面值来表示,如果字面值超出了范围,则0被忽略,当十进制来解析。
var num1 = 023; var num2 = 079; var num3=08; console.log(num1);//19 有效的八进制值,输出19 console.log(num2);//无效的八进制值,输出79 console.log(num3);//无效的八进制值,输出8
十六进制字面值前面两位是0x,后跟任何十六进制数字(0-9、A-F),字母可以为小写表示10-15;
var liu1 = 0xaf; var liu2 = 0x23; console.log(liu1);// console.log(liu2);//
十六进制与八进制在进行计算的时候,JavaScript会将八进制与十六进制转换为十进制之后,再进行计算。
八进制转十进制方法:首先去掉前面的0,然后按权相加法,即将八进制每位上的数乘以位权,然后将得出来的数再加在一起。如023=2*Math.pow(8,1)+3*Math.pow(8,0)=19;
十六进制转十进制方法:首先去掉0x,然后将字母转换为数字进行权相加法。如0xaf=10*Math.pow(16,1)+15*Math.pow(16,0)=175;