题目1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
执行以下代码,其实现的效果为()
<div>
<input type="button" id ="button1" value="1" onclick="moveBtn(this);">
<input type="button" id ="button2" value="2" />
</div>
<script type="text/javascript">
function moveBtn(obj) {
var clone = obj.cloneNode(true);
var parent = obj.parentNode;
parent.appendChild(clone);
parent.removeChild(obj);
}
</script>
A: 鼠标单击button1后将button1链接到button2的后面

B: 鼠标单击button1后将button1移动到button2的后面

C: 鼠标单击button1后将button2移动到button1的后面

D: 鼠标单击button1后将button2链接到button1的后面

  • 答案
    • B
  • 解析
    • **Node.cloneNode([deep])**方法返回调用该方法的节点的一个副本.
      • Node: 将要被克隆的节点
      • deep: 是否采用深度克隆,如果为true,则该节点的所有后代节点也都会被克隆,如果为false,则只克隆该节点本身.
    • 所以obj.cloneNode(true);深度克隆一个自己的节点,克隆之后删除原体后在移动克隆体到button1的后面

题目2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
假设val已经声明,可定义为任何值。则下面js代码有可能输出的结果为:
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
A: Value is define

B: Value is undefine

C: define

D: undefine

E: Value is define 或者 Value isundefine

D: define 或者 undefine

E: 其他选项都有可能

  • 答案
    • C
  • 解析
    • 算术运算符优先级大于三元运算符,所以先计算 ‘Value is ‘ + (val != ‘0’) 后进行三元运算,但是这个计算结果不管怎么样都会为真(因为在js当中,除了 “” null undefined NaN false 0 这六个转化为布尔值为假,其他均为真,空数组,空对象转化为布尔值也是真!)所以这个三元运算符结果永远为 ‘define’
    • JavaScript当中运算符优先级文档

题目3

1
已知数组arr=[1,69,4,6,8,10],对数组进行升序排列,下列选项中,不符合要求的是()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
A:
for (var i = 0;i<arr.length-1;i++){

for (var j = 0;j < arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

var temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

console.log(arr);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
B:
var minIndex;

var temp;

for(let i = 1; i < arr.length; i++) {

minIndex = i - 1;

for(let j = i; j <arr.length; j++) {

if(arr[j] < arr[minIndex]) minIndex = j;

}

if(minIndex != i-1) {

temp = arr[i-1];

arr[i-1] = arr[minIndex];

arr[minIndex] = temp;

}
}
console.log(arr);
1
2
3
4
C:
arr.sort((a,b)=>b-a);

console.log(arr);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
D:
for(let i = 1; i < arr.length; i ++) {

for(let j = i - 1; j>=0 && arr[j] > arr[j+1]; j --) {

let temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}
}
console.log(arr);
  • 答案
    • C选项
  • 解析
    • sort当中arr.sort( ( a , b ) ) => b - a ) ;为降序, arr.sort( ( a , b ) ) => a-b ) 为升序
    • A是冒泡排序
    • B是选择排序
    • D是插入排序