interview
javascript-frontend-basics
JavaScript 中 和 操作符的返回值是什么

前端 JavaScript 基础面试题, JavaScript 中 || 和 操作符的返回值是什么?

前端 JavaScript 基础面试题, JavaScript 中 || 和 操作符的返回值是什么?

QA

Step 1

Q:: JavaScript 中 || 和 && 操作符的返回值是什么?

A:: 在 JavaScript 中,|| 和 && 操作符用于逻辑运算。|| 操作符(逻辑或)返回第一个真值或最后一个假值,而 && 操作符(逻辑与)返回第一个假值或最后一个真值。示例: - 表达式 'true || false' 返回 true - 表达式 'false || true' 返回 true - 表达式 'false && true' 返回 false - 表达式 'true && false' 返回 false

Step 2

Q:: 解释 JavaScript 中的变量提升(Hoisting)

A:: 变量提升是 JavaScript 中的一种行为,在这种行为中,变量和函数声明会在代码执行前被移动到作用域的顶部。这意味着可以在声明之前使用变量,但实际的赋值仍然发生在代码的原始位置。例如:

 
console.log(a); // undefined
var a = 2;
 

Step 3

Q:: JavaScript 中的闭包(Closure)是什么?

A:: 闭包是指在一个函数内部创建另一个函数,这个内部函数可以访问外部函数的变量。即使外部函数已经执行完毕,这个内部函数仍然可以访问这些变量。闭包常用于数据封装和创建模块。例如:

 
function outerFunction() {
  var outerVariable = 'I am from outer';
  return function innerFunction() {
    console.log(outerVariable);
  };
}
var inner = outerFunction();
inner(); // 输出 'I am from outer'
 

Step 4

Q:: JavaScript 中的原型链(Prototype Chain)是什么?

A:: 原型链是 JavaScript 中的一种继承机制,通过它一个对象可以继承另一个对象的属性和方法。每个对象都有一个内部链接到另一个对象(其原型)的引用,并且原型对象也有自己的原型,以此类推,形成一个链条。当试图访问一个对象的属性时,如果该对象没有这个属性,JavaScript 会沿着原型链查找,直到找到该属性或到达原型链的末端(null)。

用途

这些内容在实际生产环境中的使用非常广泛。例如,了解 || 和 && 操作符的返回值有助于编写更简洁和有效的条件语句;理解变量提升可以避免意外的 bug;熟悉闭包可以帮助在模块化代码中保持数据的私有性;掌握原型链知识对于理解 JavaScript 的继承机制和调试对象属性查找问题非常重要。\n

相关问题

🦆
JavaScript 中的事件循环Event Loop是什么?

事件循环是 JavaScript 的一种机制,用于处理异步操作。它允许非阻塞的 I/O 操作,尽管 JavaScript 是单线程的。事件循环会检查调用栈和消息队列,如果调用栈为空,会将消息队列中的第一个事件推入调用栈并执行,从而使得异步操作可以在未来的某个时间点被执行。

🦆
解释 JavaScript 中的 this 关键字

在 JavaScript 中,this 关键字的值取决于函数的调用方式。作为方法调用时,this 指向调用该方法的对象;作为普通函数调用时,this 指向全局对象(在严格模式下为 undefined);作为构造函数调用时,this 指向新创建的对象;通过 call 或 apply 调用时,this 指向指定的对象。

🦆
解释 JavaScript 中的箭头函数Arrow Function

箭头函数是 ES6 引入的一种函数表达式,使用 => 语法。它们与传统函数有几个不同点:1) 没有自己的 this 值,this 继承自上下文;2) 没有 arguments 对象;3) 无法用作构造函数(不能使用 new 关键字)。例如:

 
const add = (a, b) => a + b;
 
🦆
什么是 JavaScript 中的 Promise?

Promise 是一种用于处理异步操作的对象,代表一个未来可能完成或失败的操作及其结果值。它有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。通过 then 和 catch 方法可以分别注册成功和失败的回调函数。例如:

 
let promise = new Promise((resolve, reject) => {
  // 异步操作
  if (成功) resolve(value);
  else reject(error);
});
promise.then(value => {
  // 成功回调
}).catch(error => {
  // 失败回调
});