JavaScript面向对象编程指南(第二版)第3章 函数 练习题

1,编写一个将十六进制值转换为颜色的函数。

    题解:

    1),使用charAt(i)把字符串分成n个单独的字符串如 ‘00FF00' 分成 ’00‘,’FF','00'

    2),使用 parseInt(xxx,16) 将分隔好的字符串从16进制转换为10进制

 

function getRGB(str){
  var rgb = [];
  for(var i = 1,j = 0; i < str.length; i++,j++){
    rgb[j] = str.charAt(i)+str.charAt(++i);
    rgb[j] = parseInt(rgb[j],16);
  }
  return 'rgb('+rgb[0]+','+rgb[1]+','+rgb[2]+')';
}
var a = getRGB('#00FF00');
undefined
a;
"rgb(0,255,0)"

2,如果在控制台中执行以下各行,分别会输出什么内容?

parseInt(1e1);  //1e1 = 1*10^1
10
parseInt('1e1'); //parseInt遇到非数字字符停止解析
1
parseFloat('1e1'); //parseInt认识加号、减号、空格等,遇到加号减号等会认为是数字的一部分,越过这些符号继续解析.认识e
10
isFinite(0/10); //0/10 = 0
true
isFinite(20/0); //分母为0,得到NaN
false
isNaN(parseInt(NaN)); //parseInt(NaN) = NaN
true

3,alert()弹出2

因为局部变量a=2,替代了全局变量a=1

var a = 1;
function f(){
  function n(){
    alert(a);
  }
  var a = 2;
  n();
}
undefined
f();
undefined

4,解释为什么弹出“Boo!"

//解:eval会把其内的字符串当做js代码执行,相当于执行 f("Boo!") 而f是alert函数
var f = alert;
undefined
eval('f("Boo!")');  
undefined
//执行e=f会返回执行完成后e的值,而返回的刚好是alert函数,相当于alert('Boo!')
var e;
undefined
var f = alert;
undefined
eval('e=f')('Boo!');
//函数是一个即时函数,立即执行返回 alert()函数
(function(){
  return alert;}
 )()('Boo!');

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值