34. 下面代码的输出是什么?
function sayHi() {
return (() => 0)();
}
typeof sayHi();
sayHi函数返回立即调用的函数(IIFE)的返回值。 该函数返回0,类型为数字。
仅供参考:只有7种内置类型:null,undefined,boolean,number,string,object和symbol。 function不是一个类型,因为函数是对象,它的类型是object。
35. 下面这些值哪些是假值?
0;
new Number(0);
("");
(" ");
new Boolean(false);
undefined;
0, '', undefined
JavaScript中只有6个假值:
undefinednullNaN0''(empty string)false
函数构造函数,如new Number和new Boolean都是真值。
36. 下面代码的输出是什么?
console.log(typeof typeof 1);
`typeof 1` 返回 `"number"`. `typeof "number"` 返回 `"string"`
37. 下面代码的输出是什么?
const numbers = [1, 2, 3];
numbers[10] = 11;
console.log(numbers);
当你为数组中的元素设置一个超过数组长度的值时,JavaScript会创建一个名为“空插槽”的东西。 这些位置的值实际上是undefined,但你会看到类似的东西:
[1, 2, 3, 7 x empty, 11]
这取决于你运行它的位置(每个浏览器有可能不同)。
38. 下面代码的输出是什么?
(() => {
let x, y;
try {
throw new Error();
} catch (x) {
(x = 1), (y = 2);
console.log(x);
}
console.log(x);
console.log(y);
})();
1 undefined 2
catch块接收参数x。当我们传递参数时,这与变量的x不同。这个变量x是属于catch作用域的。
之后,我们将这个块级作用域的变量设置为1,并设置变量y的值。 现在,我们打印块级作用域的变量x,它等于1。
在catch块之外,x仍然是undefined,而y是2。 当我们想在catch块之外的console.log(x)时,它返回undefined,而y返回2。
39. JavaScript中的所有内容都是...
JavaScript只有原始类型和对象。
40. 下面代码的输出是什么?
[[0, 1], [2, 3]].reduce(
(acc, cur) => {
return acc.concat(cur);
},
[1, 2]
);
[1, 2, 0, 1, 2, 3]
[1,2]是我们的初始值。 这是我们开始执行reduce函数的初始值,以及第一个acc的值。 在第一轮中,acc是[1,2],cur是[0,1]。 我们将它们连接起来,结果是[1,2,0,1]。
然后,acc的值为[1,2,0,1],cur的值为[2,3]。 我们将它们连接起来,得到[1,2,0,1,2,3]。
41. 下面代码的输出是什么?
!!null;
!!"";
!!1;
null是假值。 !null返回true。 !true返回false。
""是假值。 !""返回true。 !true返回false。
1是真值。 !1返回false。 !false返回true。
42. setInterval方法的返回值什么?
它返回一个唯一的id。 此id可用于使用clearInterval()函数清除该定时器。
43. 下面代码的返回值是什么?
[..."Lydia"];
["L", "y", "d", "i", "a"]
字符串是可迭代的。 扩展运算符将迭代的每个字符映射到一个元素。