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!');