高级程序设计徐编著课后习题答案

高级程序设计徐编著课后习题答案

1源始值和引用值

原始值:存储在栈中的简单数据。即:它们的值是直接存储在变量访问的值。

引用值:存储在堆中的对象。即,存储在变量出的值是一个指针,指向存储对象的内存处。存放在栈中可以快速查询,由于原始类型占据的空间是固定的,所以可以将它们存储在较小的内存区域一.一..栈中。

为变量赋值时,ECMAScript的解释程序必须判断该值是原始类型还是引用类型。

2:原始类型

ECMAScript有5种原始类型(primitive type)即:Undefined, Null,String, Boolean, Numbero 可以用typeof运算符判断返回值讲解

undefined如果变量是Undefined类型

boolean如果变量是Boolean类型

number如果变量是Number类型 string

String类型

Object如果变量是引用类型或Null类型

现在,null被认为是对象的占位符,但因js的设计错误,Null仍是原始类型。

3:Undefined类型

该类型只有一个值,即undefinedo

如果声明了变量为初始化,该变量的默认值为undefined 当

函数无明确返回值时,返回的也是undefined

未声明的变量仅可以用typeof运算符,其他运算符时报错,虽不会包js错误,但不会显示想要的效果。

var test;

alert(typeof test); //undefined

alert(test==undefined);//true

alert(test=="undefined") //false

4:Null类型

该类型只有一个专用值null,值defined实际是从值null派生来的, 因此ECMAScript把它们定义是为相等的。

alert(null=defined); //true

尽决两值相等,但它们的含义不同。

undefined是声明了变量但为对其初始化。

null用于尚未存在的对象,如果函数或方法返回的是对象,那么找不到该对象时,通常返回 null

5:Bloolean类型有两个值true和false,即使false不等域0,0也可以在必要

时被转换成false

6:Number类型其值包

括整数和浮点数。

var test=086; //86 var t:070;//八进制56 其还包括几个特殊的值:Number.MAX_VALUE和Number.MIN_VALUE,它们定义了 Number值集合的外边界超出边界的值就会被赋值为边界,也也意味着不再有数字值。

如果计算返回的结果是无穷大值,那该结果不能再用于计算。

事实上有专门的值表示无穷大。 infinity:Number.POSlTlVE INFINITY,-

infinity:Number.NAGATlVE INFINITY 有判断是否有穷的方法isFinity var

iResult=iNum*some large_number; alert(isFinite(iResuIt)); finite:adj,

有限的。finity:n,有限还有一个特殊值NaN(not a number),发生在类型

(String,Boolean)转换失败时。

但由于其特殊性自身不等于自身。

alert(NaN==NaN) ;//false 不推荐使用NaN,而是用

isNaN()进行数字的判断。

7:String类型是唯一没有固定

大小的原始类型

8:类型转换

3种主要的原始值Boolean值,数字和字符串都有toString()方法

Number类型的toString比较特殊。默认模式和基模式默认模式下:

toSring方法只是用相应的字符串输出数字值

var a:070;

//56

var c=0.3e2;//30 基模式:

var

1 iNum=10; 0 alert(iNum.toString(2));//10var b=10.0;//1

alert(iNum.toString(8));//12

alert(iNum.toString(1 6));//A

parselnt("123and");//123 parselnt("red");//NaN

parseInt("AF",1 6);//175 如果十进制数包含前导0,那么

最好用基为10.否则会得到八进制 parselnt("010");//8

parseInt("010",8);//8 parselnt("010",1 0);//1 0

parseFloat()与paselnt不同之处是,字符串必须是以十进制形式表示浮点数。因该方法会忽略前导0。

parseFIoat("123abc");//123

parseFIoat("0xA");//NaN parseFIoat("

120.3.2'');//120.3 parseFloat与paselnt另

一个不同之处是,没有基模式。

---parselnt("12.3");//1 2

---parseFIoat("123");// 123

一强制类型转换一

一运算符一

的应用。 1:delete 删除对以前定义的对象〗属性或方法

var a=new Object();

a.name="shiy' alert(a.name);//shiy delete a.name,

alert(a.name) ;//undefined 这里删除name属性,意味着强制解除对它的引用,

将其值设置为undefined 2:void void运算符对任何值都返回undefinedo该

运算符通常用于避免输出不应该输出的值。

例如:从html的元素调用javascript函数,要正确做到这一点,函数不能返回有效值,否则浏览器将清空页而,只显示函数的结果。

click me 此时,window.open方法返回对新窗口的引用。然后该对象被转换成要显示的字符串。

为避免这种结果,可以用void运算符调用window.open()函数:

click

me 这使window.open()调用返回undefined,它不是有效值,不会显示在浏

览器中。

记住〗没有返回值的函数真正返回的是undefined

3:for-in语句 for-in语句是严格的迭代,用于

枚举对象的属性 for(propert in expression)

statement 例如: for(sProp in

window){ alert(sProp);

4:with语句 with语句用于设置代码在特定对象

中的作用域。

语法:with(expression)

var

word"' statement 例如: ss="hello

rCase()); with(smessage){ alert(t0Uppe

〖注意〗with语句是运行缓慢的代码段,尤其是在己经设置了属性值时,通常情况下尽量避免使用它。

5:js函数重载例

function a(){alert("no");}

function a(ok){alert(ok);}

alert();

alert("good"); 结果会显示:undefined, good 原因是:可用相同的名字在同一个作用域中定义两个函数,而不会引发错误,但真正使用的是最后一个函数。

6:(arguments对象〗

在函数对象代码中,使用特殊对象arguments,开发者无需明确指出参数名,就能访问他们。 如:在函数sayHi()中,第一个参数是message,用arguments[0]也可以访问这个值。 function sayHi(){ if

(arguments[O]=="bye")

return; alert(arguments[O]);

此外,还可以用arguments对象检测传递给函数的参数个数, 引用属性arguments.length 即可。

例如:function

howManyArgs(){ alert(arguments.length);

howManyArgs("stirng",20);//2

与其他程序设计语言不同,ECMAScript不会检验传递给函数的参数个数是否等于函数定义的个数。

可以传给函数任意个数的参数,多的忽略,遗漏的都会以undefined传递给函数。

8•Function类用Function类可以直接创建函数语法 var function name= new Function(argumentl ,arguments2,...argumentN,function_body); 在这种形式中,每个argument都是一个参数,最后一个参数是函数体,这些参数必须是字符串。

function doAdd(iNum){alert(iNum+100);} doAdd=new Function("iNum","alert(iNum+10)"); doAdd的值指向对象的指针,函数名只是指向函数对象的引用值,行为就像其他指针一样。

甚至可以使两个变量指向同一个函数。

var alsoDoAdd=doAdd; 如果函数名只是指向函数的变量,那么可以把函数作为

参数传递给另一个函数?

function callAnotherFunc(fnFunciton, vArgument)

fnFunction(vArgument);

var doAdd=new Function("iNum","alert(iNum+10)");

callAnotherFunc(doAdd, 1 0) ;//20 Function

高级程序设计徐编著课后习题答案

1源始值和引用值

原始值:存储在栈中的简单数据。即:它们的值是直接存储在变量访问的值。

引用值:存储在堆中的对象。即,存储在变量出的值是一个指针,指向存储对象的内存处。存放在栈中可以快速查询,由于原始类型占据的空间是固定的,所以可以将它们存储在较小的内存区域一.一..栈中。

为变量赋值时,ECMAScript的解释程序必须判断该值是原始类型还是引用类型。

2:原始类型

ECMAScript有5种原始类型(primitive type)即:Undefined, Null,String, Boolean, Numbero 可以用typeof运算符判断返回值讲解

undefined如果变量是Undefined类型

boolean如果变量是Boolean类型

number如果变量是Number类型 string

String类型

Object如果变量是引用类型或Null类型

现在,null被认为是对象的占位符,但因js的设计错误,Null仍是原始类型。

3:Undefined类型

该类型只有一个值,即undefinedo

如果声明了变量为初始化,该变量的默认值为undefined 当

函数无明确返回值时,返回的也是undefined

未声明的变量仅可以用typeof运算符,其他运算符时报错,虽不会包js错误,但不会显示想要的效果。

var test;

alert(typeof test); //undefined

alert(test==undefined);//true

alert(test=="undefined") //false

4:Null类型

该类型只有一个专用值null,值defined实际是从值null派生来的, 因此ECMAScript把它们定义是为相等的。

alert(null=defined); //true

尽决两值相等,但它们的含义不同。

undefined是声明了变量但为对其初始化。

null用于尚未存在的对象,如果函数或方法返回的是对象,那么找不到该对象时,通常返回 null

5:Bloolean类型有两个值true和false,即使false不等域0,0也可以在必要

时被转换成false

6:Number类型其值包

括整数和浮点数。

var test=086; //86 var t:070;//八进制56 其还包括几个特殊的值:Number.MAX_VALUE和Number.MIN_VALUE,它们定义了 Number值集合的外边界超出边界的值就会被赋值为边界,也也意味着不再有数字值。

如果计算返回的结果是无穷大值,那该结果不能再用于计算。

事实上有专门的值表示无穷大。 infinity:Number.POSlTlVE INFINITY,-

infinity:Number.NAGATlVE INFINITY 有判断是否有穷的方法isFinity var

iResult=iNum*some large_number; alert(isFinite(iResuIt)); finite:adj,

有限的。finity:n,有限还有一个特殊值NaN(not a number),发生在类型

(String,Boolean)转换失败时。

但由于其特殊性自身不等于自身。

alert(NaN==NaN) ;//false 不推荐使用NaN,而是用

isNaN()进行数字的判断。

7:String类型是唯一没有固定

大小的原始类型

8:类型转换

3种主要的原始值Boolean值,数字和字符串都有toString()方法

Number类型的toString比较特殊。默认模式和基模式默认模式下:

toSring方法只是用相应的字符串输出数字值

var a:070;

//56

var c=0.3e2;//30 基模式:

var

1 iNum=10; 0 alert(iNum.toString(2));//10var b=10.0;//1

alert(iNum.toString(8));//12

alert(iNum.toString(1 6));//A

parselnt("123and");//123 parselnt("red");//NaN

parseInt("AF",1 6);//175 如果十进制数包含前导0,那么

最好用基为10.否则会得到八进制 parselnt("010");//8

parseInt("010",8);//8 parselnt("010",1 0);//1 0

parseFloat()与paselnt不同之处是,字符串必须是以十进制形式表示浮点数。因该方法会忽略前导0。

parseFIoat("123abc");//123

parseFIoat("0xA");//NaN parseFIoat("

120.3.2'');//120.3 parseFloat与paselnt另

一个不同之处是,没有基模式。

---parselnt("12.3");//1 2

---parseFIoat("123");// 123

一强制类型转换一

一运算符一

的应用。 1:delete 删除对以前定义的对象〗属性或方法

var a=new Object();

a.name="shiy' alert(a.name);//shiy delete a.name,

alert(a.name) ;//undefined 这里删除name属性,意味着强制解除对它的引用,

将其值设置为undefined 2:void void运算符对任何值都返回undefinedo该

运算符通常用于避免输出不应该输出的值。

例如:从html的元素调用javascript函数,要正确做到这一点,函数不能返回有效值,否则浏览器将清空页而,只显示函数的结果。

click me 此时,window.open方法返回对新窗口的引用。然后该对象被转换成要显示的字符串。

为避免这种结果,可以用void运算符调用window.open()函数:

click

me 这使window.open()调用返回undefined,它不是有效值,不会显示在浏

览器中。

记住〗没有返回值的函数真正返回的是undefined

3:for-in语句 for-in语句是严格的迭代,用于

枚举对象的属性 for(propert in expression)

statement 例如: for(sProp in

window){ alert(sProp);

4:with语句 with语句用于设置代码在特定对象

中的作用域。

语法:with(expression)

var

word"' statement 例如: ss="hello

rCase()); with(smessage){ alert(t0Uppe

〖注意〗with语句是运行缓慢的代码段,尤其是在己经设置了属性值时,通常情况下尽量避免使用它。

5:js函数重载例

function a(){alert("no");}

function a(ok){alert(ok);}

alert();

alert("good"); 结果会显示:undefined, good 原因是:可用相同的名字在同一个作用域中定义两个函数,而不会引发错误,但真正使用的是最后一个函数。

6:(arguments对象〗

在函数对象代码中,使用特殊对象arguments,开发者无需明确指出参数名,就能访问他们。 如:在函数sayHi()中,第一个参数是message,用arguments[0]也可以访问这个值。 function sayHi(){ if

(arguments[O]=="bye")

return; alert(arguments[O]);

此外,还可以用arguments对象检测传递给函数的参数个数, 引用属性arguments.length 即可。

例如:function

howManyArgs(){ alert(arguments.length);

howManyArgs("stirng",20);//2

与其他程序设计语言不同,ECMAScript不会检验传递给函数的参数个数是否等于函数定义的个数。

可以传给函数任意个数的参数,多的忽略,遗漏的都会以undefined传递给函数。

8•Function类用Function类可以直接创建函数语法 var function name= new Function(argumentl ,arguments2,...argumentN,function_body); 在这种形式中,每个argument都是一个参数,最后一个参数是函数体,这些参数必须是字符串。

function doAdd(iNum){alert(iNum+100);} doAdd=new Function("iNum","alert(iNum+10)"); doAdd的值指向对象的指针,函数名只是指向函数对象的引用值,行为就像其他指针一样。

甚至可以使两个变量指向同一个函数。

var alsoDoAdd=doAdd; 如果函数名只是指向函数的变量,那么可以把函数作为

参数传递给另一个函数?

function callAnotherFunc(fnFunciton, vArgument)

fnFunction(vArgument);

var doAdd=new Function("iNum","alert(iNum+10)");

callAnotherFunc(doAdd, 1 0) ;//20 Function


相关文章

  • [ARM嵌入式系统结构与编程]习题答案 邱铁编著
  • <ARM 嵌入式系统结构与编程>邱铁 编著. 清华大学出版社. 年月第版 年月第二次印刷[1**********] <ARM 嵌入式系统结构与编程>第1~4章思考与练习 题答案 此答案仅供教师教学用 第1章 绪论 思 ...查看


  • 大学几乎所有学科的课本答案[2]
  • 大学几乎所有学科的课本答案! 来源: 任明嘉的日志 经济金融 [PDF格式]<会计学原理>同步练习题答案 [Word格式]<成本会计>习题及答案(自学推荐,23页) [Word格式]<成本会计>配套习题集 ...查看


  • 大学课后题答案
  • 不用买参考书了!大学课本答案大全!--爱死你了!( 为什么大四才发现啊) 2008-12-18 16:50 | (分类:) 注册可用 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程 ...查看


  • 大学课本答案大全
  • 不用买参考书了!大学课本答案大全! 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程第四册答案 http://www.10xiao.com/thread-7-1-1.html 新视野 ...查看


  • 家庭教育类书籍目录
  • 培训报名赠品(对象:家长) 1.给你高考加分(实用性.操作性.有效性)理科2001年高考状元访谈--王极盛 2.我要考第一:尖子生的学习诀窍和思考方法 国家特级教师 刘帆编著 3.再忙也要当个好爸爸 晨曦编著 4.学习方法36计 王术波 著 ...查看


  • [需要高鸿业西方经济学笔记的请进]
  • <人大经济类考研宝典> 市场上唯一一部针对人大经济类考研的辅导书 资料翔实.精炼,针对性强,帮你理清解题思路,方便记忆 本书由人大教师,优秀在读研究生精心编辑,联袂打造,囊括了人大经济类十年的专业课真题,包括经济类五大学院各个专 ...查看


  • 国际商法(第六版)课后习题答案
  • 国际商法(第六版)课后习题答案 第一章 1.(1)本案如果发生在美国,Y能提起派生诉讼.因为A公司为B公司的担保行为直接损害了A公司的利益且附带损害了Y的利益,但没有单纯地损害Y的利益. (2)本案如果发生在我国, Y不具备对X提起股东代表 ...查看


  • 嵌入式技术基础与实践(第3版)课后习题1-8章答案
  • 试阅: hello ---------------------正文 第一章 1.嵌入式系统的基本含义是什么?为什么说单片机是典型的嵌入式系统? 答:即MCU 的含义是:在一块芯片上集成了中央处理单元(CPU ).存储器(RAM/ROM等). ...查看


  • 高级会计学_第五版_课后习题答案
  • 高级会计学----人大第五版-课后习题答案 第一章 1. (1)A 公司 ①分析判断:支付货币性资产比例= 49 000/400 000=12.25%<25%,该交换属于非货币 性资产交换.该交换具有商业实质, 换入.换出资产的公允价 ...查看


热门内容