JavaScript中的变量是已命名的数据,是一种为数据创建引用的方式,无论数据是字符串、数字、布尔值、数组或者其他对象,都可以通过变量名多次访问该数据。更重要的是,变量可以用于不同的过程中存储数据。
1.三种基本的数据类型(字符串、数字以及布尔型)
每种数据类型互不相同,他们分别对应于字符串值、数字值以及布尔值。然而JavaScript还提供了一些内建的对象,String、Number和Boolean是拥有内建属性和方法的对象。当你以对象的方式去操作基本数据类型,它们也都会封装自己的基本数据类型,比如你创建了简单的字符串变量并使用String对象的方法时,JavaScript会隐式地通过String对象封装字符串基本数据类型,并且调用String对象的方法和属性。如下:
var firstName = "Maple";
var upperFirstName = firstName.toUpperCase();
需要注意的是,最后会销毁临时对象,所以如果需要以对象的方式操作字符串,最好的方式就是创建一个对象。
下来我们分别去了解下它们。
1.1. String 数据类型
由于JavaScript是一门支持松散类型的编程语言,当你把字符串赋值给一个变量时,此时这个变量的类型就是字符串。
这边我主要讲下字符串的转换
1.1. 1. 隐式转换:
数字、布尔值等其他数据类型都可以转换成字符串,一般来说,脚本引擎将根据上下文自动完成转换,数字与字符串之间的连接也自动完成转换的,如下:
var num_value = 2;
var string_value1 = " This is a Number " + num_value ; //结果是This is a Number2
var string_value2 = " This is a Number " + num_value + num_value ; //结果是This is a Number22
var string_value3 = +num_value + num_value + " This is a Number " ; //结果是 4This is a Number
上面有三种情况不同的结果,字符串与数字相互连接的时候是按顺序两两之间操作,如果两两之中不同时为数字类型,结果值均为字符串类型。详情下图:
然后使用其他操作符号,将会把字符串转为数字:
var fristResult = "20" - 2 ; // 结果为18 var secondResult = "20" / 2 ; // 结果为10 var secondResult = "20" * 2 ; // 结果为40
1.1.2.显式转换
转换的方式为 : var num_value = 2; var string_value = (String)num_value ;
String 转换关系:
undefined : "undefined " null : "null" 布尔值 : "true"或"false" 数字 :数字相应的字符串,NaN表示非数字值
字符串:不转换 对象:对象默认的字符串
1.2.Boolean 数据类型
布尔值可以显式地赋给不同类型的变量,这取决于该变量是否已经赋值,以及该变量的当前值。如下:
var num_value = 0;
var boolean_value = Boolean(num_value); //结果为false
故:Boolean数据类型显式转换的对应关系为:Undefined/Null/0/NaN/空字符串/false -->false true/其他数字/对象 --> true
1.3.Number 数据类型
主要来讨论下parseFloat和parseInt 两个将字符串转换数字方法。
var string_value = "1.23e-2";
parseFloat(string_value); //结果为 0.0123 parseInt(string_value); //结果为 1
parseFloat("1.25 maple"); //结果为1.25 parseFloat("1.25"); //结果为1
其他数据类型与Number转换的对应关系 : undefined - NaN null-0(IE中返回NaN) true/false-1/0 字符串-整数或者浮点数 对象-NaN
1.4.null和undefined变量
null是已定义的、值为null的变量。 undefined是已经声明但还没有初始化的。