JavaScript高级程序设计(第2版)

3.4 数据类型

  ECMAScript有5种简单的数据类型,也称为基本数据类型,Undefined、Null、Boolean、Number和String,还有一种复杂数据类型——Object。

3.4.1 typeof操作符

  typeof用来检测给定变量的数据类型,对一个值使用typeof操作符可能返回下列某个字符串:

  “undefined”——如果这个值未定义

  “boolean”——如果这个值是布尔值

  “string”——如果这个值是字符串

  “number”——如果这个值是数值

  “object”——如果这个值是对象或null;

  “function”——如果这个值是函数l;

3.4.2 Undefined类型

  Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。

  例如:

1 var message;
2 alert(typeof message); //undefined
3 alert(message == undefined); //true

  另外,对未定义的变量使用typeof,返回值也是undefined

  例如: 1 alert(typeof ff); //undefined

3.4.3 Null类型

  Null类型也只有一个值,即null,null值表示一个空对象指针,而这也是使用typeof操作符检测null值时会返回"object"的原因,例如:

  var car = null;
  alert(typeof car); //object

  如果定义的变量准备在将来用于保存对象,那么最好将变量初始化为null,而不是其他值。这样,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用了。

if(car != null){
  //对car对象执行某些操作
}

3.4.4 Boolean类型

  Boolean类型有2个字面值:true和false。

  对于任何数据类型调用Boolean()函数,总会返回一个Boolean值。例如:

var message = "some string";
var messageAsBoolean = Boolean(message);

  至于返回的值是true还是false,取决于要转换值的数据类型以及实际值,下面给出了各种数据类型及其对应的转换规则:

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ”“(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a(not application 不适用) undefined
var message = "some string";
if(message){
        alert("Value is true");
}

3.4.5 Number类型

var intNum = 55; //十进制55
var octalNum = 070; //八进制56
var octalNum = 079; //无效的八进制,解析为79(字面值中的数值超出了范围,前导零将被忽略)
var hexNum1 = 0xA; //十进制10

1. 浮点数值

  由于保存浮点数值需要的内存空间是保存整数值的2倍,因此ECMAScript会不失时机地将数值转换为整数值。例如:

var floatNum = 1.; //小数点后面没有数字,解析为1
var floatNum = 10.0; //浮点数值本身表示的就是一个整数,改值会被转换成整数,解析为10

  e表示法,即科学计数法

var floatNum = 3.125e7; //31250000
var floatNum = 3e-7; //0.0000003

  永远不要测试某个特定的浮点数值,例如:

var a = 0.05;
var b = 0.25;
if(a + b == 0.3){ //永远不要做这样的测试
    alert("true");
}else{
    alert("false");
} //输出结果是false

2. 数值范围

  由于内存的限制,ECMAScript并不能保存世界上所有的数值,ECMAScript能够表示的最小数值保存在Number.MIN_VALUE中,在大多数浏览器中,这个值是5e-324,能够表示的最大数值保存在Number.MAX_VALUE中,在大多数浏览器中,这个值是1.7976931348623157e+308。如果某次计算的结果的得到了一个超出JavaScript数值范围的值,如果这个值是负数,则会被转换为-Infinity(负无穷),如果这个数值是整数,则会被转换为Infinity(正无穷)。isFinite()函数可以检测一个数值是不是有穷的。

时间: 2024-11-05 13:48:30

JavaScript高级程序设计(第2版)的相关文章

JavaScript高级程序设计(第3版) 中文pdf扫描版 89M 高清下载

<JavaScript高级程序设计(第3版)>是JavaScript超级畅销书的最新版.ECMAScript5和HTML5在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为JavaScript增添了很多适应未来发展的新特性. <JavaScript高级程序设计>这一版除增加5章全新内容外,其他章节也有较大幅度的增补和修订,新内容篇幅约占三分之一. 全书从JavaScript语言实现的各个组成部分——语言核心.DOM.BOM.事件模型讲起,深入浅出地探讨了面向对象

《JavaScript高级程序设计》(第二版)

这本书的作者是 Nicholas C.Zakas ,博客地址是 http://www.nczonline.net/ ,大家可以去多关注,雅虎的前端工程师,是YUI的代码贡献者,可想而知这本书得含金量,他出的书都广受好评.这本书已经出了第二版,而且与第一版相比内 容更新很大,直接第二版就行.不要被书名的“高级”唬住,只要有JS基础语法知识和DOM基础知识就行,而且本书开始阶段还是介绍JS和DOM的语法知 识. 评论:重点推荐一下第五章(类型),第六章(OOP),第七章(匿名),多看几遍,至少要完全

《JavaScript高级程序设计(第3版)》.Nicholas.C.Zakas.扫描版.pdf

下载地址:网盘下载 内容简介 编辑 本书从最早期Netscape浏览器中的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点.JavaScript与浏览器的交互.更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决方案有关的问题,如错误处理.调试.安全性.优化/混淆化.XML和Web服务,最后介绍应用所有这些知识来创建动态用户界面. 本书适合有一定编程经验的开发人员阅读,也可作为高校相关专业课程的教

《Javascript高级程序设计第3版》精华总结

一.JavaScript简介 1.1 javascript简史 1.2 javascript实现 + javascript是一种专为网页交互而设计的一种脚本语言,javascript由三大部分组成: ECMAScript,提供核心语言功能: DOM,提供访问和操作网页页面的方法和接口: BOM,提供与浏览器交互的方法和接口. 1.3 javascript的版本 二.在HTML中使用JavaScript 2.1 <script>元素 + 使用<script>元素向html页面中插入j

《JavaScript高级程序设计 第三版》 前2章 Javascript简介与HTML 读书笔记

第一章:Javascript简介 1.JavaScript诞生于1995年,当时,它的主要目的是处理以前由服务器端语言(如Perl)负责的一些输入验证操作.现在,JavaScript是一种专为与网页交互而设计的脚本语言. 注:Netscape(网景)公司研发,Java是sun公司研发,原名为LiveScript,为了搭上媒体热炒的Java的顺风车,更名为JavaScript 2.微软推出JSript的和网景的JavaScript相竞争,最后微软胜利.ECMA指定了规定并重新命名为ECMAScri

21.1 XMLHttpRequest 对象【JavaScript高级程序设计第三版】

IE5 是第一款引入XHR 对象的浏览器.在IE5 中,XHR 对象是通过MSXML 库中的一个ActiveX对象实现的.因此,在IE 中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLHttp.MSXML2.XMLHttp.3.0 和MXSML2.XMLHttp.6.0.要使用MSXML 库中的XHR 对象,需要像第18章讨论创建XML 文档时一样,编写一个函数,例如: //适用于IE7 之前的版本 function createXHR() { if (typeof argumen

js面向对象及原型(javaScript高级程序设计第3版)

一.创建对象 创建一个对象,然后给这个对象新建属性和方法. var box = new Object(); //创建一个Object对象 box.name = 'Lee'; //创建一个name属性并赋值 box.age = 100; //创建一个age属性并赋值 box.run = function () { //创建一个run()方法并返回值 return this.name + this.age + '运行中...'; }; alert(box.run()); //输出属性和方法的值 上面

[已读]JavaScript高级程序设计(第3版)

从去年开始看,因为太长,总是没有办法一口气把它看完,再加上它与第二版大部分一致,读起来兴致会更缺一点. 与第二版相比,它最大的改变就是增加了很多html5的内容,譬如:Object对象的一些新东西,数据属性.访问器属性及相应的一些方法;比如它对跨域常见方法的比较和总结:postMessage,IE8的XDR,升级的XHR,jsonp跨域原理,单向的图片ping;又比如对数据推送的一些介绍,长轮询和http流是什么样子,单向的SSE和双向的Web Socket的详细介绍和比较. PS,关于SSE,

《JavaScript高级程序设计(第二版)》学习(5)函数表达式

声明:这类属于学习笔记,主要是摘录书中内容,比较少的整理.内容经常是跳跃的,建议您阅读书本,收益更大. 定义函数的方式有2种,第一种是函数声明,另一种是函数表达式 函数声明会提升,就是JavaScript引擎先什么都不干,先把函数声明的代码解析一下,那么你是在此之前先用还是后用就无所谓了:但是表达式就没有这种特点,必须在函数表达式之后调用才不会出错. //这个是可以的 sayhi(); function sayhi(){ alert("hi"); } //这种是不行的 sayhi();

《javascript高级程序设计(第二版)》学习(2)

数值转换:有3个函数可以把非数值转为数值,Number(),parseInt(),parseFloat(). 对于Number() 如果是 布尔型,true为1,false为0: Null为0: undefined为NaN: 而字符串情况就比较多:如果有包含数字(不论是整数还是浮点数,抑或是有效的十六进制数如0xf)都会转变为数字,如“11a1”只输出11,“0xa11”则会按照16进制输出.字符串如果是空的,则为0:上述情况以外的字符,则为NaN: 如果是对象,会先调用对象的valueOf()