软件开发经典易错题型

版权声明: https://blog.csdn.net/qq_37959401/article/details/80284381

1、一根金条长31厘米,如果把它切成数段,使其中的一段或几段能够接成长为1到31中任何整数的金条,请问要切几次?
解:1 = 00001
2 = 00010
4 = 00100
8 = 01000
16 = 10000
31 = 11111
哪一位上需要1,就加哪个数。
第一刀切下一个1,剩下31-1=30
第二刀切下一个2,剩下30-2=28
第三刀切下一个4,剩下28-4=24
第四刀切下一个8,剩下24-8=16
所以16就有了。
答案为4刀。


2.写出下面代码的运行结果

var a,b;
(function(){
    alert(a);
    alert(b);
    var a=b=3;
    alert(a);
    alert(b);
})();
alert(a);
alert(b);
//undefine undefine 3 3 undefine 3

解析var a=b=3 时a是局部变量,而b是全局变量


3.
这里写图片描述
以上 javascript 代码执行后, 浏览器 alert 出来的结果分别是?
答案:green blue

解析:
1.getColor() var getColor = test4399.getColor;即var getColor = function(){var color = “red”;alert(this.color);};执行getColor()函数时this指向的window,因为window.color为green,所以弹出green
2.test4399.getColor(),此时this指向的是test4399,test4399.color为blue,所以弹出blue


4.alert(null == undefined);结果为false。
解析:undefined值是通过null派生出来的,==时它会自动转化为null,所以返回true。不过如果用严格比较符===,不发生转化,将返回false。


5.
console.log(‘Value is ’ + (val != ‘0’) ? ‘define’ : ‘undefine’); 输出:define
解析:加号优先级高于 三目运算。低于括号。 所以括号中无论真假 加上前边的字符串都为 TRUE 三目运算为TRUE是 输出 define


6.给定下面的 HTML 代码:

<div id=”wrapper”>

<div class=”wText”></div><!—more wText items here -->

<div class=”wImg”></div><!—more wImg items here -->

<div class=”wVideo”></div><!—more wVideo items here -->
</div>

怎么能够取得 ”wrapper” 中全部项的集合? C

A$('#wrapper').children();
B$(#wrapper’).html();
C$(#wrapper’).contents();
//解析:
$(#wrapper’).children();  //(只沿着 DOM 树向下遍历单一层级)查询直接的子元素。而不管子元素的子元素。
$(#wrapper’).html();  //返回的是dom结构。而不是集合

7.
这里写图片描述
输出:4400 4401 4399 4400
解析:这里{n:n}是对变量n里的值进行缓存,而不是本身n这个指针变量,这样生成add的时候n指向的值是多少{n:n}里的值就是多少


8.
‘+new Array(017)’ 输出?( )
NaN
解析:
+ new Array(017) 等价于 + new Array(15) (15的八进制是17)
按照规则,数组对象应该采用Number,所以先执行valueOf,发现valueOf返回的是自己,所以继续执行toString,过程如下:
Number(new Array(15))
// new Array(15).valueOf()不是原始值,所以执行toString()
Number(new Array(15).toString())
Number(“,,,,,,,,,,,,,,”)
NaN
所以答案是NaN

猜你喜欢

转载自blog.csdn.net/qq_37959401/article/details/80284381