基本数据类型

基本数据类型

JavaScript的基本数据类型有如下 5 个。

  • 数值类型:包含整数或浮点数。

  • 布尔类型: 只有 true 或 false 两个值。

  • 字符串类型: 字符串变量必须用引号括起来,引号可以是单引号,也可以是双引号。

  • undefined 类型: 专门用来确定一个已经创建但是没有初值的变量。

  • null 类型: 用于表明某个变量的值为空。

数值类型

JavaScript 的数值类型不仅包括所有的整型变量,也包括所有的浮点型变量。
JavaScript中的数值形式非常丰富, 完全支待用科学计数法表示。科学计数法形如 5.12e2 代表 5 .1 2 乘以10 的 2 次方, 5.12E2 也代表 5.12 乘以 10 的 2 次方。
科学计数法中 E 为间隔符号, E 不区分大小写。

注:数值直接量不要以 0 开头。 因为 JavaScript 不仅支持十进制数,还支持其他 。进制数。八进制数以 0 开头,十六进制数以 0x 或者 0X 开头。

JavaScript 除了支持十进制数外,也支持十六进制数和八进制数。 十六进制数以 0x 或 0X开头, 9 以上的数以 a ~ f 表示;八进制数以 0 开头,八进制数中只能出现 0~7 的数值。

注:由于HTML代码很多地方需要使用十六进制数,因此,十六进制数是非常有用的 。八进制数并不是所有的浏览器都能支持,如需使用八进制数,请先确定代码运行的浏览器支持八进制数。

当数值变量的值超出了其表数范围时,将出现两个特殊值:Infinity(正无穷大)和-lnfinity( 负无穷大)。前者表示数值大于数值类型的最大值,后者表示数值小于数值类型的最小值。
NaN 是另一个特殊的数值,它是 Not a Number 三个单词的首字母,表示非数。 0 除 0, 或两个无穷大执行算术运算都将产生 NaN 的结果。当然,如果算术表达式中有个 NaN 的数值变量,则整个算术表达式的值为 NaN 。
NaN 与 lnfinity 和-Infinity 不同的是,NaN不会与任何数值变量相等,也就是NaN==NaN也返回 false。
JavaScript 也提供 了一些简单的方法访问这些特殊值,特殊值通过 Java Script 的内嵌类Number访问
Number 类的常量与特殊值的对应
关于浮点型数,必须注意其精度丢失的问题 。看如下代码

<script type="text/javascript">
	//显示定义变量a
	var a = .3333;
	//定义变量b,并为其赋值a*5;
	var b = a * 5;
	//使用对话框输出b的值
	alert(b);
</script>

在上面代码中,a*5 的值理论上为 l.6665, 实际的结果为1.66649999999999
这种由于浮点数计算产生的问题,在很多语言中都会出现。对于浮点数值的比较,尽量不要直接比较,例如直接比较b是否等于 1.6665, 将返回不相等。为了得1.6665与b相等的结果 ,推荐使用差值比较法——判断两个浮点型变量是否相等,通过判断两个浮点型变量的差值,只要差值小于一个足够小的数即可认为相等

字符串类型

JavaScript 的字符串必须用引号括起来,此处的引号既可以是单引号,也可以是双引号。a、b两个变量完全相等。

a = "Hello  JavaScript"; 
b = 'Hello JavaScript'; 

JavaScript 中没有字符类型,或者说字符类型和字符串类型是完全相同的,即使定义如下变量:

var a='a'; 

这种代码定义的 a 依然是字符串类型的变量,没有字符类型变量。

注:JavaScript 中 的宇符串与 Java 中的字符串主要有两点区别 :①JavaScript 中的字符串可以用单引号引起来;②JavaScript 中 比较两个字符串的字符序列是否相等使用==即可,无须使用equals()方 法。

JavaScript 以 String 内建类来表示字符串,String类里包含了一系列方法操作字符串,String类有如下基本方法和屈性操作字符串 。

  • String( ) : 类似千面向对象语言 中的构造器,使用该方法可以构建一个字符串。

  • charAt( ) : 获取字符串特定索引处的字符。

  • charCodeAt( ): 返回字符串中特定索引处的字符所对应的 Un icode 值。

  • length: 属性,直接返回字符串长度。 JavaScript 中的中文字符算一个字符。

  • toUpperCase( ): 将字符串的所有字母转换成大写字母。

  • tolowerCase( ): 将字符串的所有字母转换成小写字母。

  • fromCharCode():静态方法,直接通过String类调用该方法,将一系列 Unicode 值转换成字符串 。

  • indexOf( ) : 返回字符串中特定字符串第一次出现的位置。

  • lastlndexOf( ): 返回字符串中特定字符串最后一次出现的位置。

  • substring(): 返回字符串的某个子串 。

  • slice( ): 返回字符串的某个子串,功能比 subsmng 更强大, 支持负数参数。

  • match(): 使用正则表达式搜索目标子字符串 。

  • search(): 使用正则表达式搜索目标子字符串 。

  • concat() : 用于将多个字符串拼加成一个字符串。

  • split( ): 将某个字符串分隔成多个字符串,可以指定分隔符。

  • replace( ): 将字符串中某个子串以特定字符串替代。
    下面代码测试了 String 类的几个简单属性和方法

<script type="text/javascript">
	//定义字符串变量a
	var a = "abcde";
	//获取a的长度
	var b = a.length;
	//输出a的长度以及a在索引4处的字符
	alert(b + "---" + a.charAt(4));
</script>

输出结果为 5—e

indexOf()和 lastlndexOfO用千判断某个子串的位置。 其语法格式如下。

  • indexOf(searchString[, startlndex] ): 搜索目标字符串 searchString 出现的位置。其中startlndex 指定不搜索左边 startlndex 个字符。
  • lastlndexOf(searchString[, startlndex] ): 搜索目标字符串 searchString 最后一次出现的位置 。 如果字符串中没有包含目标字符串,则返回 -1 。功能更强大的搜索方法是search( ),它支持使用正则表达式进行搜索。

JavaScript 中的 substring()和 slice()语法格式如下 。
● substring(start [, end] ): 从 start (包括)索引处,截取到 end (不包括)索引处, 不截取 end 索引处的字符。如果没有 end 参数,将从 start 处一直截取到字符串尾。
● slice(start[, end] ): 与 substring() 的功能基本一致, 区别是 slice()可以接受负数作为索引 , 当使用负索引值时,表示从字符串的右边开始计算索引, 即最右边的索引为-1。

match()和search( )方法都支持使用正则表示式作为子串;区别是前者返回匹配的子字符串 ,后者返回匹配的索引值。 match()支待使用全局匹配,通过使用 g 标志来表示全局匹配, match()
方法返回所有匹配正则表达式的子串所组成的数组。
match()方法的返回值为字符串数组或 null , 如果包含匹配值, 将返回字符串数组; 否则就
返回 null。search() 返回值为整型变量, 如果搜索到匹配子串, 则返回子串的索引值: 否则返
回 - 1 。

<script type= text/javascript">
	//定义字符串 的值
	vars= "abfd--abc@d.comcdefg"; 
	//从s中匹配正则表达式
	a= s.search(/[a-z]+@d.[a-zA-Z] {2}m/) ; 
	//定义字符串变队 str
	var str = "ldfd2dfs3df5"; 
	//查找字符串中所有单个的数值
	var b = match(/\d/g );
	//输出a和b的值
	alert(a + "\n" + b) ; 
</script>

输出结果为 6 1,2,3,5

如果需要在字符串中使用单引号、双引号等特殊字符,则必须使用转义字符。 JavaScript的转义字符依然是“\“,下面是常用的转义字符。

  • \b : 代表退格。

  • \t : 表示一个制表符,即一个 Tab 空格。

  • \n: 换行回车。

  • \v : 垂直的制表符。

  • \r: 回车。

  • ": 双引号。

  • ': 单引号 。

  • \: 反斜线,即\。

  • \OOO: 使用八进制数表示的拉丁字母。 OOO表示一个 3 位的八进制整数,范围是000~377 。

  • \xHH :使用十六进制数表示的拉丁字母,HH 表示一个 2 位的十六进制整数, 范围是00~FF 。

  • \uHHHH: 使用十六进制数(该数值指定该字符的 Unicode 值)表示的字符,HHHH表示一个 4 位的十六进制整数。

布尔类型

布尔类型的值只有两个: true 和 false
布尔类型的值通常是逻辑运算的结果,或者用千标识对象的某种状态。

undefined 和null

undefined 类型的值只有一个 undefined, 该值用于表示某个变量不存在 ,或者没有为其分配值,也用于表示对象的属性不存在。 null 用于表示变量的值为空。 undefined与null 之间的差别比较微妙。总体而言, undefined 表示没有为变量设置值或属性不存在 ;而null 表示变量是有值的,只是其值为 null。
但如果不进行精确比较,很多时候 undefined与ull 本身就相等 ,即 nullundefined 将返回true。 如果要精确区分 null undefined, 应该考虑使用精确等于符(=)。
关于 undefined null 的区别,看如下代码

<script tupe="text/javascript">
	//声明变量x,y
	var x,y = null; 
	//判断x的值是否为空
	if (x === undefined) 
	{
		alert('声明变址后默认值为undefined');
	} 
	if (x === null) 
	alert('声明变批后默认值为null');
	} 
	//判断x(其值为 undefined) 是否与y(其值为 null) 相等
	if (x == y)
	{
		aler ("x (undefined) ==y (null) " ); 
	} 
	//测试一个并不存在的属性
	if(String.xyz === undefined) 
	{ 
		alert("不存在的属性值默认为 undefined ");
	} 
</script>

代码的执行结果是,x为 undefrned,且x==y可返回 真, String的xyz 属性值为 undefined。

正则表达式

正则表达式的本质是 种特殊字符串,这种特殊字符串允许使用“通配符”,因此一个正则表达式字符串可以匹配一批普通字符串。从这个意义上来看,任意一个普通字符串也可算作正则表达式, 只是该正则表达式里不包含“通配符” 因而它只能匹配一个字符串。
JavaScript 的正则表达式必须放在两条斜线之间,如 /abc/就是一个正则表达式 只是这个正则表达式只能匹配"abc” 字符串。
正则表达式所支持的“通配符”
正则表达式所支持的“通配符”
特殊字符(频率修饰词)
特殊字符(频率修饰词)
除此之外,正则 达式还支待()表示法,用()可以将 个表达式形成 个固定组 还可以在()内使用竖线表示互斥,例如/ ((abc)l(efg)) 可匹配 abc或 efg。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值