将字符串转换为数字
方法一:
当一个字符串用于数字环境中,它也会自动转换为一个数字。例如:
var res="21" * "2"; //res=42
利用这一优点,只需要将一个字符串表示的数字减去0就可以讲其转换成一个数字了
var r="21"-0; /// r=21;
(注意:这样做必须保证字符串类型的数字中没有字符串,否则结果就是Nan. 给字符串加一个0 其结果是字符串而不是数字 )
方法二:
parserInt()和parseFloat()这两个方法可以讲字符串开始处转换和返回任何的数字,忽略或舍去非数字部分。如果一个字符串以"0x"或者"0X"开头,parserInt()将其解析为一个十六进制的数字。举例:
parseInt("3 slfsa"); /// 3
parseFloat("3.14 sldf") /// 3.14
parseInt("12.34"); /// 12
parseInt("0xff"); /// 255
parseInt() 甚至可以接受另一个参数来指定要解析的数字的基数。合法的值在2到36之间(后面的参数代表 前面的那个字符串表示的数字 的进制数(进制基数))。例如
parseInt("11",2); 3 (1*2+1)
parseInt("ff",16); /// 255 (15*16+15)
parseInt("zz",36); /// 1295 (35*36+35)
parseInt("077",8); /// 63 (7*8+7)
parseInt("077",10) /// 77 (7*10+7)
布尔类型的转换
布尔值很容易转换,从其他类型转换为布尔值也较容易,而且往往是自动转换的。
如果一个布尔值用在数值环境中,true就会转换为1,false就会转换为0
若一个布尔值用在字符串中,true就会转换为“true” false就会转换为"false"
对象
1.创建对象:
A)可以通过调用特殊的构造函数创建。例如:var o=new Object(); var d=new Date()
var parrern=new RegExp("'\\sjava\\s","i");
2.对象直接量
Javascript定义了对象直接量的语法,从而能够创建对象并定义它的属性。对象直接量(也称对象初始程序)是由一个列表构成的,这个列表的元素是用用冒汗分割的属性键值对,元素之间用逗号隔开了,这个列表包含在花括号之中。
例如:var point ={x:12,y:23}
说明:对象直接量中使用的属性值不必是常量,它可以使任意 javascript表达式
2.对象转换
当一个非空对象用于布尔环境的时候,它转换为true。
当一个对象用于字符串环境,javascript调用toString()方法,并且返回改函数的字符串的值。
当一个对象用于数字环境,javascript首先调用该对象的valueOf()方法。如果这个方法返回一个基本类型的值,这个值会被使用。然而,在大多数情况下,valueOf()方法返回的是对象自己。在这种情况下,javascript首先使用toString()方法把对象转换为一个字符串,然后再试图把改字符串转换为一个数字。
数组
数组和对象一样是数值的集合。可以通过下标来访问数组元素。
数组的创建
a.可以使用构造函数Array()来创建数组,
例如:var a=new Array();
A[0]=23; a[1]="javascript"; a[2]=true; a[3]={x:1,y:3}
b.也可以直接将值作为参数传入构造函数中。(注意:如果只向Array()构造函数传递一个参数,那么该参数指定的是数组的长度。而不再是数组的值了)
数组直接量
Javascript定义了创建并初始化的直接量语法。数组直接量(或数组初始化程序)是一个封闭在方括号的序列,序列中的元素由逗号分隔。括号内的值将被依次赋值给数组元素,下标值从0开始。
例如:var a=[1.2,"javascript",true,{x:1,y:3}]与上面类似
而且,与对象直接量相同,数组直接量中的元素不必仅限于常量,它可以使任意的表达式
例如:var base=123; var table=[base,base+1,base+3]
数组直接量中还可以存放未定义的元素,只要在逗号之间省去改元素的值就可以了,例如:var arr=[1,,,,5] //代表数组存放了5个元素,其中3个是未定义的
Null
Javascript的关键字null是一个特殊的值,它表示无值。null常被看作对象类型的特殊值,即代表“无对象”,null是一个独一无二的值,有别于其他所有的值。如果一个变量的值为null,那么说明他的值就不是有效的对象、数组、数组、字符串和布尔值。
当null用于布尔环境时,它转换为false;
当它用于一个数字环境时,它转换为0;
当它用于字符串环境是转换为"null"
Undefined
还有一种特殊javascript会偶尔一用,它就是undefined。在使用了一个并未声明的变量时,或者使用了已经声明但还没有赋值的变量时,又或者使用了一个并不存在的对象属性时,返回的就是这个特殊值(undefined)。
如果属性my.prop并不存在或者存在但是值为null,my.prop==null的值为true。由于null和undefined都表明缺少值,所以这种相等性正是我们想要的,如果必须区分null和undefined,可以使用= = =运算符或者typeof运算符
转换问题
当未定义的值用于布尔环境,它会转换为false;
当用于一个数字环境,它会转换为NaN;
当用于一个字符串环境,它会转换为“undefined”