一、JavaScript中只有3种基本数据类型:字符串、数字、布尔类型。JavaScript还提供了一些内置对象,String、Number、Boolean。当以对象的方式使用基本类型时,String、Number、Boolean会对各自的基本类型进行封装。
比如:
var firstName="shelley";
var cappedName=firstName.toUpperCase();
toUpperCase()是String对象的一个把字符串大写的方法。当字符串变量firstName调用toUpperCase方法的时候,JavaScript会创建一个对象来封装这个字符串,然后调用toUpperCase方法,最后丢弃这个临时对象。
1、字符串
由单引号或双引号所引用的一系列字符:
var strString="This is String";
var anotherString='But this is also a string';
通过使用反斜杠\,可以在字符串中引用特殊符号:
var string_value='this is a \\string \\with a backslash';//引用“\”
还可以使用Unicode字符,通过在\u后面加上4位的十六进制数值。
document.write('\u7321');//输出中文简字“爱”,Unicode编码参考http://www.unicode.org
字符串编码
encodeURI和encodeURIComponent方法就是对字符串进行转义,就是编码,将其从ASCII码或非ASCII码字符转换成URIencoding字符。
encodeURI
对下列可以进行编码
; , / ? : @ & = + $
对于字母、数字以及下列字符不会进行编码
- _ . ! ~ * ' ( ) #
encodeURIComponent方法会对所有的字符进行编码
与之对应的解码函数:decodeURI、decodeURIComponent
比如:var one=encodeURI('http://www.baidu.com/');//one是个字符串
var two=decodeURI(one);//two是个字符串,http://www.baidu.com/
字符串转换
数字、布尔值等其他数据类型都可以转换成字符串,一般来说,脚本引擎将根据上下文自动完成这样的转换。
赋值语句+:什么时候将数字转换成字符,取决于JavaScript脚本引擎在什么时候处理字符串。
var strValue="4"+3+1;//结果是“431”,字符串是序列值的第一个,那么会把所有数值都当做字符串来处理。
var strValueTwo=4+3+"1";//结果是71
使用其他操作符号(除了加号),那么字符串转换为数字
var firstResult='35'-3;//结果是32
var secondResult=30/'3'//结果是10
var thirdResult='3'*3;//结果是90
String转换
输入 undefined 、 null 、 布尔值 、数字 、字符串 、对象
结果 "undefined"、 "null" 、"true"或"false"、 数字相对应的字符串、NaN表示非数字值、 不转换 、对象默认的字符串
<script>
function convertToString(){
var newNumber=34.56;
var newBoolean=true;
var nothing;
var newNull=null;
var strNumber=String(newNumber); var strBoolean=String(newBoolean);
var strUndefined=String(nothing); var strNull=String(newNull);
var strOutput="<p>"+strNumber+" "+strBoolean+" "+strUndefined+" "+strNull+"</p>";
document.writeln(strOutput);
var strOutput2=String(document);
document.writeln(strOutput2);
}
</script>
<body onload="convertToString()"></body>
在不同浏览器(Firefox、opera、IE及Safari)中,该示例输出的第一个字符串都是一样的:34.56 true undefined null
然而,只有Opear和Firefox浏览器将输出document对象的ECMAScript特定表示法:[object HTMLDocument]
IE浏览器则仅仅显示[object],而Safari和WebKit浏览器则根本不支持document对象转换成字符串。
2、Boolean数据类型
var isMarried=true;
var hasChildren=false;
Boolean转换表
输入类型: Undefined,Null,布尔值,数字,字符串,对象
结果 :False,False,布尔值,0或NaN时结果为false否则为true,空字符串false其他true;true
双重否定符(两个否定操作符“!”)可以用来显式地将数字或字符串转换为布尔值:
var strValue='1';
var numValue=0;
var boolValue=!!strValue;//把字符串“1”转换为true
var boolValue2=!!numValue;//把数字 0转换为false
3、Number数据类型
在JavaScript中,number数据类型是浮点数,可以包含小数部分,也可以没有小数部分。如果没有小数部分,那么该数字就将当做十进制数字,取值范围为-2ⁿ53·2ⁿ53。
var somefloat=0.3555;
var lastNum=19.5e-2;(-2e31~2e31)
var neg=-2000;
JavaScript的Number数据类型有两个比较特殊的数字:Infinity(正无穷大)和-Infinity(负无穷大)
var firstHex=0xccff;//十六进制用0x开头,342
var firstOct=0526;//八进制以0开头,342
将字符串转换为数字:parseInt和parseFloat。parseInt只返回数字的整数部分
var sNum=parseInt("23.4");//结果23
parseInt函数可以在十进制与八进制、十进制之间进行转换。
var ivalue=parseInt("266",16);//将266转换为16进制,结果614。第二个参数值2~36
其他数据类型与数字之间的转换表:
输入: undefined 、null 、布尔值、数字、字符串、对象
结果:NaN、0(在IE中NaN)、true时为1,否则为0( IE中为NaN)、数组值、整数或浮点数、NaN
还尅一通过isFinite函数来判断是否为无穷大,如果是无穷大或NaN,返回false;
4、null和undefined变量
null变量是已定义的、值为null的变量
var nullString=null;
undefined变量已经声明但还没有初始化
var undefString;
var SValue="";//SValue即不是null也不是undefined变量,值为空字符