有时 JavaScript 很棘手。

2025-05-26

有时 JavaScript 很棘手。

当我刚开始从事 Web 开发时,我在学习 JavaScript 时遇到了很多困难,但经过经常练习后,我的看法发生了改变。

说实话,Javascript 仍然改变了我的观点,但它也给了我更多的力量去努力。

我从互联网上收集了一些问题,我相信这也会改变你的看法。

但在直接回答问题之前:-

“任何领域的专家都曾经是初学者”

Q1-什么是 typeof []

答案:对象。实际上,数组源自对象。如果要检查数组,请使用 Array.isArray(arr)

Q2-2+true 等于多少

答案:3。数字与布尔值或两个布尔值之间的加法运算符会将布尔值转换为数字。因此,true 转换为 1,得到结果为 2 + 1。

Q3-'6'+9 等于多少

答案:69.如果加号 (+) 运算符的操作数之一是字符串,它将把其他数字或布尔值转换为字符串并执行连接。

Q4-输出是什么?

let a = 0;
console.log(a++);
console.log(++a);
console.log(a);
Enter fullscreen mode Exit fullscreen mode

后缀一元运算符(a++)
首先返回 0,然后将 a 增加 1,意味着现在 a=1。

前缀一元运算符(++a)
首先增加1然后返回,意味着现在a=2

答案:0 2 2

Q5-输出是什么?

function myAge(...args) {
  console.log(typeof args);
}

myAge(23);
Enter fullscreen mode Exit fullscreen mode

答案:Object。剩余参数 (...args) 让我们将所有剩余的参数“收集”到一个数组中。数组是一个对象,因此 typeof args 返回“object”。

Q6-输出是什么?

const confusing = { a: 'one', b: 'two', a: 'three' };
console.log(confusing);
Enter fullscreen mode Exit fullscreen mode

答:如果您有两个同名的键,则该键将被替换。它仍将位于第一个位置,但具有最后一个指定的值。

Q7-输出是什么?

for (let i = 1; i < 5; i++) {
  if (i === 3) continue;
  console.log(i);
}

Enter fullscreen mode Exit fullscreen mode

答案:1 2 4.如果某个条件返回真,则 continue 语句将跳过迭代。

Q8-输出是什么?

var a=(2,3,4,5,6,7);
console.log(a);
Enter fullscreen mode Exit fullscreen mode

答案:7.逗号运算符评估其每个操作数(从左到右)并返回最后一个操作数的值。

Q9-“睡眠”的值是多少?

答案:False。! 不是。如果在真值前面加上 !,它将返回 false。

Q10-单击该段落时记录的输出是什么?

<div onclick="console.log('div')">
  <p onclick="console.log('p')">
    Click here!
  </p>
</div>
Enter fullscreen mode Exit fullscreen mode

答案:p div。如果我们点击 p,我们会看到两个日志:p 和 div。事件传播分为三个阶段:捕获、目标和冒泡。默认情况下,事件处理程序在冒泡阶段执行(除非你将 useCapture 设置为 true)。冒泡阶段从最深的嵌套元素向外传递。

Q11-输出是什么?

const myName = { name: 'Rajat Arya' };

function hello(age) {
  return `${this.name} is ${age}`;
}

console.log(hello.call(myName, 23));
console.log(hello.bind(myName, 23));

Enter fullscreen mode Exit fullscreen mode

答案:Rajat Arya 23岁

function hello(age) {
return ${this.name} is ${age};
}

解释:- 使用这两种方法,我们都可以传递this关键字所指向的对象。但是, .call也会立即执行!
.bind返回的是函数的副本,但带有绑定上下文!它不会立即执行。

Q12-输出是什么?

function think() {
  return (() => 0)();
}

console.log(typeof think());


Enter fullscreen mode Exit fullscreen mode

答案:number。think函数返回立即调用函数表达式 (IIFE) 的返回值。该函数返回 0,即“number”类型。

Q13-输出是什么?

const numbers = [1, 2, 3];
numbers[10] = 11;
console.log(numbers);
Enter fullscreen mode Exit fullscreen mode

答:当你为数组中超出其长度的元素赋值时,JavaScript 会创建所谓的“空槽”。这些空槽的值实际上是 undefined,但你会看到类似这样的结果:


[1, 2, 3, empty x 7, 11]

Q14-输出是什么?

console.log(typeof typeof 1);
Enter fullscreen mode Exit fullscreen mode

答案:字符串。从右边开始 typeof 1 返回“number”。typeof "number" 返回“string”

Q15-输出是什么?

var myName=[...'Rajat'];
console.log(myName)
Enter fullscreen mode Exit fullscreen mode

答案:["R","a","j","a","t"]
字符串是可迭代对象。展开运算符将可迭代对象中的每个字符映射到一个元素。

文章来源:https://dev.to/rajatarya007zxc/sometimes-javascript-is-tricky-67j
PREV
使用 JavaScript 进行访客登录
NEXT
终极 JavaScript 速查表,600+ 免费设计资源