您的位置:首页 > Web前端 > JavaScript

Javascript中的变量的特性

2017-06-04 09:46 267 查看
js中的数据类型分为两类:原始类型和对象类型。原始类型包括数字、字符串和布尔值。其中有两个特殊的原始值:null和undefined。它们分别代表了各自特殊 类型的唯一的成员。另外复合类型是指对象,它是属性的集合。包括普通对象、数组、函数、RegExp以及Error。

一、原始类型

1、数字

在js中不区分整数值和浮点数值。所有的数字均用浮点数值表示。在数值表示法中,可分为整型直接量和浮点型直接量,虽然某些js实现中可以允许采用八进制形式表示整数,但在某些实现中并不支持。因此最好不要以0为前缀的整型直接量。数字的运算包括“+”、“-”、“*”、“/”、“%”,而运算的结果可能会存在溢出(超过js所能表示的数字上限)、下溢(是当运算结果无限接近于零并比js能表示的最小值还小,这种情况下,js将会返回0,当一个负数发生下溢时,将返回一个特殊的“负零”)。另外,需要注意的是,在二进制的浮点数表示法并不能精确类似0.1这样简单的数字。所以js(包括几乎所有现代编程语言),并不能精确表示0.1这样的小数,看下面这段代码:

var x = 0.3 - 0.2;

var y = 0.2 - 0.1;

x == y //false:两个值不相等!

2、字符串

字符串是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集。要注意的是js中并没有表示单个字符的“字符型”。

在ES3中,字符串直接必须写在一行中,而在ES5中,字符串直接量可以拆分为数行,但每行必须以反斜线(\)结束。还有就是当使用单引号来定界字符串时,需要格外小心英文中的缩写和所有格写法,比如can’t和O’Reilly’s。因为撇号和单引号是同一个字符,所以必须使用反斜线(\ )转义。因此这就涉及到了字符转义的方法。在js中有两个方法是通用的,即通过十六进制数表示Latin-1或Unicode中的任意字码。例如,\xA9表示版权符号,同样,\u表示由4个十六进制数指定的任意Unicode字符,比如,\u03c0表示字符。

js中的转义字符

转义字符 含义

\o null

\b 退格

\t 水平制表

\v 垂直制表

\f 分页

\r 换行

\’ 单引号

\” 双引号

\xXX 两位十六进制表示的Latin-1字符

\uXXXX 四位十六进制表示的Unicode字符

\ 反斜线

如果\出现在除以上所列的字符前,则忽略,当然字符串还有很多实用的API,具体可以参考一下《关于数组与字符串的使用》博文。

3、布尔值

布尔值指代真或假、开或关、是或关。这个类型只有两个值,保留字true和false。其中任意js的值都可以转换为布尔值。下面这些值会被转换为false:

4、null和undefined

null是js中的关键字,它表示一个特殊值,常用来描述“空值”。对null执行typeof预算结果返回字符串”object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”。还有第二个值即undefinded来表示值的空缺。用未定义的值表示更深层次的“空值”。它是变量的一种取值,表明变量没有初始化,如果要查询对象属性或数组元素的值 时返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参的值也只会得到undefined。一般认为undefined是系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。如果想将它们赋值给变量或者属性,或将将它们作为参数传入函数,最佳选择是使用null。

5、对象

本文要阐述的是全局对象和包装对象。全局对象在js中有着重要的用途:全局对象的属性是全局定义的符号,js程序可以直接使用。当js解释器启动时(或任何Web浏览器加载页面的时候),它将创建一个新的全局对象,并给它定义一组初始属性:

全局属性:undefined、Infinity、和NaN

全局函数:isNaN()、parseInt()、eval()

构造函数:Date()、RegExp()、String()、Object()、Array()

全局对象:Math和JSON

不在任何函数内的js代码可以使用js关键字this来引用全局对象:var global = this;

另外就是包装对象,它其实就是一种临时对象,在使用完后就被销毁了。具体可以通过String()、Number()、Boolean()构造函数显示创建。也可以通过给字符串、数字、布尔的原始类型创建一个新属性来创建包装对象。注意下面代码产生的误区。

var s = ‘test’;

s.len = 4;

var t = s.len ;//查询这个属性,t的值是undefined。第二行代码创建一个临时字符对象,并给其len属性赋值为4,随即销毁这个对象。第三行通过原始的字符串值创建一个新字符对象,尝试读取其len属性,这个属性自然不存在,表达式求值结果为undefined.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript