备战金三银四,这35道Javascript面试题 前端面试者必看(一)

let primitiveTypes = [‘string’,‘number’,‘null’,‘undefined’,‘boolean’,‘symbol’, ‘bigint’];

它们是属于 falsy 值类型,可以使用 Boolean(value) 或 !!value 将其转换为布尔值时,值为false。

console.log(!!null); // false

console.log(!!undefined); // false

console.log(Boolean(null)); // false

console.log(Boolean(undefined)); // false

接着来看看它们的区别。

undefined 是未指定特定值的变量的默认值,或者没有显式返回值的函数,如:console.log(1),还包括对象中不存在的属性,这些 JS 引擎都会为其分配 undefined 值。

let _thisIsUndefined;

const doNothing = () => {};

const someObj = {

a : “ay”,

b : “bee”,

c : “si”

};

console.log(_thisIsUndefined); // undefined

console.log(doNothing()); // undefined

console.log(someObj[“d”]); // undefined

null 是『不代表任何值的值』。null是已明确定义给变量的值。在此示例中,当fs.readFile方法未引发错误时,我们将获得null值。

fs.readFile(‘path/to/file’, (e,data) => {

console.log(e); // 当没有错误发生时,打印 null

if(e){

console.log(e);

}

console.log(data);

});

在比较null和undefined时,我们使用时得到true,使用=时得到false:

console.log(null == undefined); // true

console.log(null === undefined); // false

2. && 运算符能做什么

=========================================================================

&& 也可以叫逻辑与,在其操作数中找到第一个虚值表达式并返回它,如果没有找到任何虚值表达式,则返回最后一个真值表达式。它采用短路来防止不必要的工作。

console.log(false && 1 && []); // false

console.log(" " && true && 5); // 5

使用if语句

const router: Router = Router();

router.get(‘/endpoint’, (req: Request, res: Response) => {

let conMobile: PoolConnection;

try {

//do some db operations

} catch (e) {

if (conMobile) {

conMobile.release();

}

}

});

使用&&操作符

const router: Router = Router();

router.get(‘/endpoint’, (req: Request, res: Response) => {

let conMobile: PoolConnection;

try {

//do some db operations

} catch (e) {

conMobile && conMobile.release()

}

});

3. || 运算符能做什么

=========================================================================

||也叫或逻辑或,在其操作数中找到第一个真值表达式并返回它。这也使用了短路来防止不必要的工作。在支持 ES6 默认函数参数之前,它用于初始化函数中的默认参数值。

console.log(null || 1 || undefined); // 1

function logName(name) {

var n = name || “Mark”;

console.log(n);

}

logName(); // “Mark”

4. 使用 + 或一元加运算符是将字符串转换为数字的最快方法吗?

============================================================================================

根据MDN文档,+是将字符串转换为数字的最快方法,因为如果值已经是数字,它不会执行任何操作。

5. DOM 是什么?

=======================================================================

DOM 代表文档对象模型,是 HTML 和 XML 文档的接口(API)。当浏览器第一次读取(解析)HTML文档时,它会创建一个大对象,一个基于 HTM L文档的非常大的对象,这就是DOM。它是一个从 HTML 文档中建模的树状结构。DOM 用于交互和修改DOM结构或特定元素或节点。

假设我们有这样的 HTML 结构:

Document Object Model

等价的DOM是这样的:

JS 中的document对象表示DOM。它为我们提供了许多方法,我们可以使用这些方法来选择元素来更新元素内容,等等。

6. 什么是事件传播?

=======================================================================

当事件发生在DOM元素上时,该事件并不完全发生在那个元素上。在**“冒泡阶段”中,事件冒泡或向上传播至父级,祖父母,祖父母或父级,直到到达window为止;而在“捕获阶段”**中,事件从window开始向下触发元素 事件或event.target。

事件传播有三个阶段:

捕获阶段–事件从 window 开始,然后向下到每个元素,直到到达目标元素。

目标阶段–事件已达到目标元素。

冒泡阶段–事件从目标元素冒泡,然后上升到每个元素,直到到达 window。

7. 什么是事件冒泡?

=======================================================================

当事件发生在DOM元素上时,该事件并不完全发生在那个元素上。在冒泡阶段,事件冒泡,或者事件发生在它的父代,祖父母,祖父母的父代,直到到达window为止。

假设有如下的 HTML 结构:

1

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值