优内建站网,专业建站,企业建站,免费建站,智能建站,个人建站!
主营企业建站,seo优化,手机网站,微信网站开发等业务!>> 繁体中文
用户名: 密 码: 验证码:    
企业建站,专业建站,模板建站,智能建站
 您现在的位置:首页 >> Javascript教程 >> 详细内容>>        【字体:  】【颜色: 绿

JavaScript高级程序设计:2.6 原始类型

在百度搜索关于“JavaScript高级程序设计:2.6 原始类型”的内容

在谷歌搜索关于“JavaScript高级程序设计:2.6 原始类型”的内容

买空间、服务器就上威客主机网(VK163.COM) 虚拟主机评测+IDC导航=威客主机之家 标志设计
[内容提要] 如前所述,ECMAScript有5种原始类型(primitivetype),即Undefined、Null、Boolean、Number和String。ECMA-262把术语类型(type)定义为值的一个集合,每种原始类型定义了它包含的值的范围及其字面量表示形式。ECMA...

作者: 优内科技  来源: 优内科技  驻站日期:2008/12/30 【 加入收藏 】 【 打印此页 】 【 关闭

如前所述,ECMAScript有5种原始类型(primitive type),即Undefined、Null、Boolean、Number和String。ECMA-262把术语类型(type)定义为值的一个集合,每种原始类型定义了它包含的值的范围及其字面量表示形式。ECMAScript提供了typeof运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型;如果它是原始类型,还可以判断它表示哪种原始类型。

  2.6.1 typeof运算符

  typeof运算符有一个参数,即要检查的变量或值。例如:

JavaScript高级程序设计:2.6 原始类型

  对变量或值调用typeof运算符将返回下列值之一:

  q "undefined",如果变量是Undefined型的。

  q "boolean",如果变量是Boolean型的。

  q "number",如果变量是Number型的。

  q "string",如果变量是String型的。

  q "object",如果变量是一种引用类型或Null类型的。

  你也许会问,为什么typeof运算符对于null值会返回"object"。这实际上是JavaScript最初实现中的一个错误,然后被ECMAScript沿用了。现在,null被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。

  2.6.2 Undefined类型

  如前所述,Undefined类型只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined。

JavaScript高级程序设计:2.6 原始类型

  前面一行代码声明变量oTemp,没有初始值。该变量将被赋予值undefined,即Undefined类型的字面量。可以用下面的代码段测试该变量的值是否等于undefined:

JavaScript高级程序设计:2.6 原始类型

  这段代码将显示"true",说明这两个值确实相等。还可以用typeof运算符显示该变量的值是undefined。

JavaScript高级程序设计:2.6 原始类型

  注意,值undefined并不同于未定义的值。但是,typeof运算符并不真正区分这两种值。考虑下面的代码:

JavaScript高级程序设计:2.6 原始类型

JavaScript高级程序设计:2.6 原始类型

  前面的代码对两个变量输出的都是"undefined",即使只有变量oTemp2是未定义的。如果不用typeof运算符,就对oTemp2使用其他运算符,这将引起错误,因为那些运算符只能用于已定义的变量。例如,下面的代码将引发错误:

JavaScript高级程序设计:2.6 原始类型

  当函数无明确返回值时,返回的也是值undefined,如下所示:

JavaScript高级程序设计:2.6 原始类型

  2.6.3 Null类型

  另一种只有一个值的类型是Null,它只有一个专用值null,即它的字面量。值undefined实际上是从值null派生来的,因此ECMAScript把它们定义为相等的。

JavaScript高级程序设计:2.6 原始类型

  尽管这两个值相等,但它们的含义不同。undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象(在讨论typeof运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null。

  2.6.4 Boolean类型

  Boolean类型是ECMAScript中最常用的类型之一。它有两个值true和false(即两个Boolean字面量)。即使false不等于0,0也可以在必要时被转换成false,这样在Boolean语句中使用两者都是安全的。

JavaScript高级程序设计:2.6 原始类型

  2.6.5 Number类型

  ECMA-262中定义的最特殊的类型是Number型。这种类型既可以表示32位的整数,还可以表示64位的浮点数。直接输入的(而不是从另一个变量访问的)任何数字都被看作Number型的字面量。例如,下面的代码声明了存放整数值的变量,它的值由字面量55定义:

JavaScript高级程序设计:2.6 原始类型

  整数也可以被表示为八进制(以8为底)或十六进制(以16为底)的字面量。八进制字面量的首数字必须是0,其后的数字可以是任何八进制数字(0到7),如下面代码所示:

JavaScript高级程序设计:2.6 原始类型

  要创建十六进制的字面量,首位数字必须为0,其后接字母x,然后是任意的十六进制数字(0到9和A到F)。这些字母可以是大写的,也可以是小写的。例如:

JavaScript高级程序设计:2.6 原始类型

  尽管所有整数都可表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果。

  要定义浮点值,必须包括小数点和小数点后的一位数字(例如,用1.0而不是1)。这被看作浮点数字面量。例如:

JavaScript高级程序设计:2.6 原始类型

  浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。

  对于非常大或非常小的数,可以用科学记数法表示浮点值。采用科学记数法,可以把一个数表示为数字(包括十进制数字)加e(或E),后面加乘以10的倍数。不明白?下面是一个示例:

JavaScript高级程序设计:2.6 原始类型

  该符号表示的是数31250000。把科学记数法转化成计算式就可以得到该值:3.125×107,即等于3.125×10×10×10×10×10×10×10。

  也可用科学记数法表示非常小的数,例如0.00000000000000003可以表示为3-e17(这里,10被升到-17次幂,意味着需要被10除17次)。ECMAScript默认把具有6个或6个以上前导0的浮点数转换成科学记数法。

  也可用64位IEEE 754形式存储浮点值,这意味着十进制值最多可以有17个十进制位。17位之后的值将被截去,从而造成一些小的数学误差。

  几个特殊值也被定义为Number类型的。前两个是Number.MAX_VALUE和Number.MIN_ VALUE,它们定义了Number值集合的外边界。所有ECMAScript数都必须在这两个值之间。不过计算生成的数值结果可以不落在这两个数之间。

  当计算生成的数大于Number.MAX_VALUE时,它将被赋予值Number.POSITIVE_INFINITY,意味着不再有数字值。同样,生成的数值小于Number.MIN_VALUE的计算也会被赋予值Number.NEGATIVE_INFINITY,也意味着不再有数字值。如果计算返回的是无穷大值,那么生成的结果不能再用于其他计算。

  事实上,有专门的值表示无穷大,(如你所猜测的)即Infinity。Number.POSITIVE_INFINITY的值为Infinity,Number.NEGATIVE_INFINITY的值为-Infinity。

  由于无穷大数可以是正数也可以是负数,所以可用一个方法判断一个数是否是有穷的(而不是单独测试每个无穷数)。可以对任何数调用isFinit()方法,以确保该数不是无穷大。例如:

JavaScript高级程序设计:2.6 原始类型

  最后一个特殊值是NaN,表示非数(Not a Number)。NaN是个奇怪的特殊值。一般说来,这种情况发生在类型(String、Boolean等)转换失败时。例如,要把单词blue转换成数值就会失败,因为没有与之等价的数值。与无穷大值一样,NaN也不能用于算术计算。NaN的另一个奇特之处在于,它与自身不相等,这意味着下面的代码将返回false:

JavaScript高级程序设计:2.6 原始类型

  出于这种原因,不推荐使用NaN值本身。函数isNaN()会做得相当好:

JavaScript高级程序设计:2.6 原始类型

  2.6.6 String类型

  String类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储0或更多的Unicode字符,由16位整数表示(Unicode是一种国际字符集,本书后面将讨论它)。

  字符串中每个字符都有特定的位置,首字符从位置0开始,第二个字符在位置1,依此类推。这意味着字符串中的最后一个字符的位置一定是字符串的长度减1(如图2-2所示)。

JavaScript高级程序设计:2.6 原始类型

  字符串字面量是由双引号(")或单引号(')声明的。与Java不同的是,双引号用于声明字符串,单引号用于声明字符。但是,由于ECMAScript没有字符类型,所以可使用这两种表示法中的任何一种。例如,下面的两行代码都有效:

JavaScript高级程序设计:2.6 原始类型

  String类型还包括几种字符字面量,Java、C和Perl的开发者应该对此非常熟悉。下表列出了ECMAScript的字符字面量:

字 面 量 含  义
/n 换行
/t 制表符
/b 空格
/r 回车
/f 换页符
// 反斜杠
/' 单引号
/" 双引号
/0nnn 八进制代码nnn(n是0到7中的一个八进制数字)表示的字符
/xnn 十六进制代码nn(n是0到F中的一个十六进制数字)表示的字符
/unnnn 十六进制代码nnnn(n是0到F中的一个十六进制数字)表示的Unicode字符

添加到QQ书签 百度收藏 订阅到抓虾 添加到鲜果  新浪ViVi  365Key网摘  天极网摘  我摘  和讯网摘  yahoo  收藏到收客网  Digbuzz我挖网  添加到饭否  挖客  添加到google  

   【回到顶部】 【返回文章列表】 编辑:优内科技
⊕ 上一篇:Javascript函数 判断数字的合法性
⊕ 下一篇:获取JavaScript变量的类型
  相关新闻
返回首页 | 设为首页 | 添加收藏 | 关于我们 | 联系我们 | 企业文化 | 合作伙伴 | 诚聘英才 | 网站报价 | 企业资质 | 网站地图
邮箱登陆 E- mail:master@cck5.com 点击这里给我发消息 客服专员 QQ:310203268 点击这里给我发消息 技术咨询 QQ:22071287点击这里给我发消息 代理备案 QQ:529631515
丰富的网站建设经验,专业提供网站建设、网站制作、网页设计服务,专业设计,真诚服务,不满意不收费!
Copyright 2008 - 2025 cck5 Inc. All Rights Reserved 优内建站网络科技公司
本站部分资源来自网络,如有侵犯您的版权,请告之,我们将即刻删除!QQ:310203268
主要业务:网站建设企业建站专业建站智能建站SEO优化微信建站手机建站
本站ICP备案号:浙ICP备11019299号 中国电信增值ICP经营许可证
不良信息举报中心 江西网警 信息产业部门备案 企业法人营业执照
 
扫优内微信二维码
“码”上有惊喜