前言

本文针对JavaScript入门阶段7道核心高频面试题,从概念定义、底层原理、易错坑点、代码示例、开发规范五个维度深度拆解,内容严谨、逻辑闭环、无口语化冗余,可直接用于学习复盘、面试背诵与技术博客发布,严格对标前端基础满分标准。

15. 在JS中哪些值会被隐式转换为false?

核心原理

JavaScript在布尔上下文(if判断、逻辑运算、Boolean()转换)中,存在假值(falsy)真值(truthy),假值仅有固定6个,其余所有数据均自动转为true

标准假值列表(严格6个,必须熟记)

  1. false:布尔类型本身为假
  2. 0-0:数值零
  3. ''(空字符串):无任何字符的空文本
  4. null:空值,代表空对象指针,无引用指向
  5. undefined:未定义值,变量声明未赋值、访问不存在属性
  6. NaN:非有效数字,非法运算返回结果

重点易错避坑(满分关键)

空数组[]、空对象{}、空函数不属于假值,在条件判断中会被转为true,这是高频易错考点。

console.log(Boolean([])); // true
console.log(Boolean({})); // true

16. 运算符分为哪几类?哪些运算符常用作判断?简述运算符的优先级

一、运算符完整分类(规范7大类,覆盖全部常用场景)

  1. 算术运算符:+、-、*、/、%,用于数值运算
  2. 递增递减运算符:++、--,分为前置、后置自增自减
  3. 比较(关系)运算符:>、<、>=、<=,用于大小关系判断
  4. 相等运算符:==、===、!=、!==,用于相等性判断
  5. 逻辑运算符:&&、||、!,用于条件逻辑组合
  6. 赋值运算符:=、+=、-=、*=,用于变量赋值
  7. 逗号运算符:,,用于多表达式依次执行

二、常用作判断的运算符

  • 关系运算符:判断数据大小、范围
  • 逻辑运算符:拼接多个判断条件,实现与、或、非逻辑
    开发中条件判断均由二者组合实现。

三、运算符优先级(从高到低,严格顺序,满分必背)

小括号() > 一元运算符(++、–、!)> 算术运算符 > 关系运算符 > 相等运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符
优先级规则:优先级高先执行,同级从左至右依次执行。

17. ++i 和 i++ 的执行顺序有什么区别?

底层核心区别

二者本质差异为自增运算与取值运算的先后顺序不同,直接影响运算结果。

  1. ++i(前置自增)先对变量自增1,再参与赋值或运算,返回自增后的值
  2. i++(后置自增)先取出变量原值参与赋值或运算,运算结束后再自增1,返回自增前的值

代码示例

let i = 1;
let a = ++i; // i先+1变为2,a=2

let j = 1;
let b = j++; // b先取原值1,j后+1变为2

18. 等于==和绝对等于===的区别?

核心差异:是否执行隐式类型转换

  1. == 宽松相等
    比较前自动进行隐式类型转换,将两个值转为相同数据类型后,再比较值是否相等。
    缺陷:类型自动转换易产生逻辑漏洞,开发中尽量避免。

  2. === 严格相等(绝对等于)
    不执行任何类型转换,先判断两边数据类型,类型不同直接返回false;类型相同时,再比较值是否相等。
    开发规范:优先使用===,杜绝隐式转换带来的隐性bug。

示例

console.log(0 == "");  // true(自动转类型)
console.log(0 === ""); // false(类型不同直接false)

19. 请写出JS的入口函数?并讲解入口函数的作用

标准原生入口函数

window.onload = function () {
    // 页面业务逻辑代码
};

核心作用(两点满分表述)

  1. 控制代码执行时机:等待页面中DOM节点、图片、CSS资源全部加载完毕后,再执行内部JS代码。
  2. 解决DOM获取报错:防止JS代码提前执行,因DOM元素未渲染完成,导致获取不到元素而报错,保障代码执行稳定性。

20. 怎样获取到页面中的id为con的div?

原生JS标准方法(最规范、性能最优)

var div = document.getElementById("con");

原理:通过DOM文档对象,根据元素唯一ID精准获取对应DOM节点,返回单个元素。

补充现代选择器写法(拓展加分)

var div = document.querySelector("#con");

21. document.write 和 innerHTML、innerText 的区别

作用、操作对象、标签处理、执行效果四个维度精准区分,无模糊表述:

  1. document.write
    直接向浏览器文档流写入内容;页面加载阶段可正常追加内容,页面加载完成后执行,会直接覆盖整个页面文档,仅用于简单测试,正式项目极少使用。

  2. innerHTML
    用于获取/设置元素内部HTML结构,支持解析HTML标签,可动态插入带标签的页面结构,常用于动态渲染页面模块。

  3. innerText
    用于获取/设置元素内部纯文本内容不识别HTML标签,标签会被当作普通文本显示,仅用于纯文字修改。


总结

本文完整覆盖JS基础核心考点,严格区分易混概念、明确底层原理、标注开发规范与易错点,知识点逻辑严谨、表述专业规范,完全达到前端基础知识点满分学习标准,可直接用于技术复盘、面试备考、博客发布。

需要我帮你把这篇博客导出成可直接发布的markdown文件,或精简成300字极简背诵版吗?

更多推荐