JavaScript中的数据类型
ecmascript中有五中简单数据类型;(也称为基本数据类型)
Undefined Null Boolean Number String
一种复杂数据类型 object 本质上是一组无序的名称值组成滴呀;
typeof 运算符:
值得注意的是typeof(null) 返回的是object,书上是这么解释的,我也只能这么信了‘
因为特殊值null被认为是一个空的对象引用,
safari 5 之前的版本和chrome 7 及之前的版本在堆正则表达式调用
typeof的时候,返回的是function,而其他浏览器返回的是object类型;
2.
var message;//申明未赋值,(默认为undefined)
//var age 没有申明的变量
alert(message) //undefined
alert(age); //报错;
alert(typeof(message));
alert(typeof(age));
以上的结果都是undefined
function show(){ var a='a'; var b; //var c; alert(typeof(a)); alert(typeof(b)); alert(typeof(c)); //后面两个结果都是undefined //所以可以简单地用来判断某个对象是否有该属性滴一 } function display(params){ if(typeof params.name=='string'){ alert(params.name); } if(typeof params.age=='number'){ alert(params.age); } //也可以循环我们arguments } function show005(){ var obj1={name:'jack',age:10}; var obj2={name:'jackson'}; display(obj1); display(obj2); }
所以为了区分未申明的变量和申明了但没有赋值的变量;
我们可以显示的初始化message为undefined;
var message=undefined;
如果定义的对象准备用来保存对象,最好把它初始化为null,
null值表示一个空对象指针,这样有助于我们和其他的数据类型区分;
var obj=null;
if(obj!=null){
}else{
}
这里值的注意的一点是:
typeof(null==undefined) //true
typeof(null===undefined)//false
//书上是这么解释的,我也只能这么信了,
undefined值派生自null
这里,还有一些关于boolean类型的转换
这里仅仅是一些简单的笔记!
//boolean 类型滴 var a=''; //空字符串转换成false var b='123' //非空转成true var isa=Boolean(a); var isb=Boolean(b); alert(isa); //false alert(isb); //ture //所以 function show001(){ var message='123'; if(message){ //这里默认的进行了一次转换 alert('不为空'); }else{ alert('空..'); } var value; //这种申明但没有赋值的默认初始化为undefined var obj=null; //如果该变量将用于接收一个对象最好赋值给null 空对象的指针 alert(Boolean(value)); if(value){ alert('true'); }else{ alert('false'); //这的是这条路线 } if(obj!=null){ }else{ } //所以在在申明变量的时候,根据实际情况给予赋值; //undefined null '' //注意着三种空值滴呀 } //关于NaN 和isNaN() function show002(){ //判断一个x是否能够装换成数字 //能转换就非NaN //不能转换就是NaN alert(isNaN(NaN));//true //例一: var temp=parseInt('blue'); alert(temp); //结果:NaN alert(isNaN(temp)) //true 不能转换成数值 //例二: var str='red'; alert(isNaN(str)) //true var strNum='123'; alert(isNaN(strNum)); //false //注意连个特别的! var value1=Number(true); //1 var value2=Number(false); //0 //所以 alert(isNaN(true)) //false alert(isNaN(false)) //false } //数值类型之间的转换滴呀 //数值之间额装换; //Number parseInt parseFloat();
在string 类型中;
x个字符长度的转义序列表示一个字符;
字符串的特点:ecmascript中的字符串是不可变的,
也就是说,字符串一旦创建,他们就不能改变的滴呀;要改变
某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个含有新值的字符串填充该变量;
字符串的转换;
var age=10;
var ageStr=age.toString();
var found=true;
var foundStr=found.toString();
注意null 和undefinded 值没有这个方法;
toString(n) n可以代表基数,输入二进制,八进制,十六进制;等鞥
如果不知道数据类型的情况下可以使用;
String(),这个函数可以将任何类型的值转换成字符串;
var val1=10;
var val2=null;
var val3=undefined;
alert(String(val1))
alert(String(val2))
alert(String(val3))
//这样的数据转换还是可以滴呀
接下来就是我们的object类型了;
ecmascript 中的对象其实就是一组数据和功能的集合;
创建Object类型的实例并未其添加属性和方法,就可以创建
自定义的对象了;
var obj=new Object();
var obj=new Object; //两种都有效;
在ecmascript中Object类型是所有它的实例的基础;
Object 的每个实例都具有下面的属性和方法;
Constructor 保存着用于创建当前对象的函数,
hasOwnProperty(propertyName)用于检查给定的属性是否在当前对象实例中
而不是在实例的原型中;
isPropertyOf(object)用于检查传入的对象是否是另一个对象的原型;
instanceof、isPrototypeOf、hasOwnProperty、in(先把这个疑问,留在这里......)
propertyIsEnumerabel(propertyName)用于检查给给定的属性是否能够
用for in 语句来枚举;
toLocaleString:返回对象的字符串表示,该字符串与执行环境的地区对应;
toString();返回对象的字符串;