21. 下面代码的输出是什么?
const sum = eval("10*10+5");
A: 105
B: "105"
C: TypeError
D: "10*10+5"
答案: A
eval会为字符串传递的代码求值。 如果它是一个表达式,就像在这种情况下一样,它会计算表达式。 表达式为10 * 10 + 5计算得到105。
22. cool_secret可以访问多长时间?
sessionStorage.setItem("cool_secret", 123);
A:永远,数据不会丢失。
B:用户关闭选项卡时。
C:当用户关闭整个浏览器时,不仅是选项卡。
D:用户关闭计算机时。
答案: B
关闭选项卡后,将删除存储在sessionStorage中的数据。
如果使用localStorage,数据将永远存在,除非例如调用localStorage.clear()。
23. 下面代码的输出是什么?
var num = 8; var num = 10; console.log(num);
A: 8
B: 10
C: SyntaxError
D: ReferenceError
答案: B
使用var关键字,您可以用相同的名称声明多个变量。然后变量将保存最新的值。
您不能使用let或const来实现这一点,因为它们是块作用域的。
24. 下面代码的输出是什么?
const obj = { 1: "a", 2: "b", 3: "c" }; const set = new Set([1, 2, 3, 4, 5]); obj.hasOwnProperty("1"); obj.hasOwnProperty(1); set.has("1"); set.has(1);
A: false true false true
B: false true true true
C: true true false true
D: true true true true
答案: C
所有对象键(不包括Symbols)都会被存储为字符串,即使你没有给定字符串类型的键。 这就是为什么obj.hasOwnProperty('1')也返回true。
上面的说法不适用于Set。 在我们的Set中没有“1”:set.has('1')返回false。 它有数字类型1,set.has(1)返回true。
25. 下面代码的输出是什么?
const obj = { a: "one", b: "two", a: "three" }; console.log(obj);
A: { a: "one", b: "two" }
B: { b: "two", a: "three" }
C: { a: "three", b: "two" }
D: SyntaxError
答案: C
如果对象有两个具有相同名称的键,则将替前面的键。它仍将处于第一个位置,但具有最后指定的值。
26. JavaScript全局执行上下文为你创建了两个东西:全局对象和this关键字.
A: 对
B: 错误
C: 视情况而定
答案: A
基本执行上下文是全局执行上下文:它是代码中随处可访问的内容。