Javascript数据类型和变量

 

 

Javascript中的变量是松散类型(loose typing)或动态类型,可以根据不同的上下文保存不同的数据类型。在同一个应用程序中,相同的变量可以保存不同类型的数据。

变量名由字母、数字、下划线和$符号组成,不许以数字开头,不能是关键字。Javascript区分大小写

变量名和函数名的首字母一般采用小写(区分类名),函数名以动名词形式表示。都遵循CamelCase命名法(即由多个单词组成的变量名中每个单词首字母大写)。

 

基本类型

三种最基本数据类型:字符串、数字以及布尔型。Javascript还提供了一些内建的对象,如String、Number和Boolean,拥有内建属性和方法。

一些容易引发混淆的地方

当以对象的方式操作基本类型时,String对象会封装字符串基本类型,而Number和Boolean也同样会封装各自的基本类型。当在Javascript中创建了简单字符串变量并使用String对象的方法时,Javascript会隐式地通过String对象封装字符串基本类型,并且调用String对象的属性和方法,最后销毁该对象。

例如:var firstName = "Shelly";

var cappedName = firstName.toUpperCase();

document.write(cappedName);

字符串变量firstName调用toUpperCase方法时,Javascript会创建一个对象来封装这个字符串,然后调用toUpperCase方法,最后销毁这个临时对象。

如果希望以对象的方式操作字符串,那么最好的方式是创建一个对象。如果只是需要用一个简单的字符串来输出信息,或者保存字符串值,而不需要对象提供的所有功能,那么字符串基本类型将是更好的选择。

 

String数据类型

Javascript并未限定必须用单引号或双引号来表示字符串,唯一的规则是前后的符号必须匹配。

Javascript字符串中可以包含转义字符,

字符串中还可以使用Unicode字符串,表示方法是在\u后面加上4位的十六进制数值。

document.write("\u7231"); 输出“爱”字

 

字符串转换

例1:

var numValue = 35.00;

var string_value = "this is a number:"+numValue;

document.writeln(string_value);

这种情况数字变量numValue转换成字符串

例2:

var strValue1 = "4"+3+1;

var strValue2 = 4+3+"1";

document.writeln(strValue1);    //输出431

document.writeln(strValue2);    //输出71

这个例子说明,什么时候将数字转换成字符串,取决于Javascript脚本引擎在什么时候处理字符串。例如,如果字符串是所有数值的第一个,那么数字变量就会被当成字符串进行处理。

例3:

var firstResult = "35"-3;

var secondResult = 30/"3";

var thirdResult = "3"*3;

document.writeln(firstResult); //输出32

document.writeln(secondResult); //输出10

document.writeln(thirdResult); //输出9

使用其他操作符时,会将字符串转换为数字

以上例子说明隐式转换取决于操作符和变量的位置

与其依赖于隐式的数据类型转换,不如自己调用String的全局函数显示地执行字符串转换。

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);

}

浏览器显示为:

34.56 true undefined null

[object HTMLDocument]

IE浏览器显示为:

34.56 true undefined null

[object Document]

 

Boolean数据类型

Boolean(布尔)数据类型只有两种可能只:true和false。布尔值不需要用引号。

双重否定符“!!”可以用来显式(使用Boolean()函数将其他类型的值转换为布尔值)地将数字或字符串转换为布尔值。

 

Number数据类型

即浮点数,可以包括小数部分,也可以没有小数部分,也可以用指数形式(科学计数法)表示。

有两个特殊的数字:正无穷大和负无穷大,分别用Infinity和-Infinity表示。当Javascript数字溢出时就会返回无穷大。而当使用的数字比Javascript所能支持的最小数字还小时就用到负无穷大。

八进制以0开头,十六进制以0X开头。

parseInt(string,radix)函数只返回数字的整数部分,无论是字符串还是一个整数还是浮点数。Radix为可选,表示要解析的数字的基数。介于2~36之间,默认为10。

parseFloat()函数则会返回浮点型数值。

function convertToString(){

var sNum = "1.23e-2";

document.writeln("<p>"+parseFloat(sNum)+"</p>");

document.writeln("<p>"+parseInt(sNum)+"</p>");

var fValue = parseFloat("1.45 inch");

document.writeln("<p>"+fValue+"</p>");

var iValue = parseInt("-33.50");

document.writeln("<p>"+iValue+"</p>");

}

输出为:

0.0123

1

1.45

-33

第二个数值是调用parseInt函数转换得到的数字,因此在应用指数方式之前先截去了整数后面的部分。第三个数字转换,parseFloat函数会先从字符串中获取数字部分,直到遇到第一个非数字的部分为止。该例中,也就是“1.45”与“inch”之间的空格。接着将得到的字符串“1.45”转换成浮点数。

 

Null变量

已定义的,值为null的变量。

Undefined变量

已经声明但是还没有初始化。

已经声明并初始化的表达式的值为true,否则,为false。

与变量类型相关的数值:NaN

如果一个字符串或布尔值不能转换为数字,那么所返回的数值将是NaN。下面是一个来自w3school的例子:

 

<script type="text/javascript">

 

var test1="300"

var test2="Hello World!"

 

document.write(Number(test1)+ "<br />")

document.write(Number(test2)+ "<br />")

 

document.write(isNaN(test1)+ "<br />")

document.write(isNaN(test2))

 

</script>

输出:

300

NaN

false

true

 

常量

使用const关键字来创建Javascript常量

const CURRENT_MONTH = 3.5;

常量可以是任意值,不可以重新赋值。一般全部大写,可以是全局常量或局部常量,一般声明为全局。

你可能感兴趣的:(JavaScript,变量,数据类型,NaN)