题目1

1
2
3
4
5
6
7
8
9
10
11
12
13
var i = 100;
function foo() {
bbb: try {
console.log("position1");
return i++;
}
finally {
break bbb;
}
console.log("position2");
return i;
}
foo();
  • 答案

    • position1 position2
  • 解析,上面代码转换下,对齐下

1
2
3
4
5
6
7
8
9
10
11
12
13
var i = 100;
function foo() {
bbb: try {
console.log("position1");
return i++;//i此时从100变为101
}
finally {
break bbb;
}
console.log("position2");
return i;//i此时的值为101
}
foo();
  • 在try…..catch ….finally 当中,不管try里面的结果怎么样,finally都会被执行,至于 finally的break bbb;是跳出bbb标签代码块

题目2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<SCRIPT LANGUAGE="JavaScript">
var a="undefined";
var b="false";
var c="";
function assert(aVar){
if(aVar)
alert(true);
else
alert(false);
}
assert(a);
assert(b);
assert(c);
</SCRIPT>
  • 答案
    • true true false
  • 解析
    • 大意了,除了 “” null undefined false 0 NaN 这六种转布尔值为false外,其他转化为布尔值都为true
    • var a = “undefined” =>字符串,转布尔值为true
    • var b = “false” = > 字符串 ,转布尔值为true
    • var c = “” = > 空字符串, 转布尔值为false