前端基础面试题(每日一题,持续更新)

359 阅读5分钟

HTML

1.什么是 HTML ?

HyperText Markup Language:超文本标记语言,简称 HTML。是一种用于创建网页的标准标记语言。HTML 使文本更具交互性和动态性,是构建网站及 WEB 应用的基石。HTML允许嵌入图像、表格、链接。

HTML5 是公认的下一代 Web 语言,极大地提升了 Web 在富媒体、富内容和富应用等方面的能力,被喻为终将改变移动互联网的重要推手。Internet Explorer 8及以前的版本不支持。

常见实体:

image.png

2.HTML 、 XML 和 XHTML 有什么区别?

  • HTML:超文本标记语言(HyperText Markup Language)
  • XML:可扩展标记语言(Extensible Markup Language)
  • XHTML:可扩展超文本标记语言(Extensible Hypertext Markup Language)

XHTML 是当前 HTML 版的继承者,是 XML 文档中的 HTML

HTMLXHTML 之间的区别:

  • HTML是一种标准通用标记语言的应用,XML是一种可扩展标记语言的应用程序。
  • HTML标签不区分大小写XHTML所有标签都必须小写。
  • XHTML所有属性都必须使用双引号。
  • HTML 是关于显示信息,而 XHTML 是关于描述信息。

3.如何理解 HTML 语义化?

两个方面:对人和对机器(搜索引擎)

  • 对人:增加代码的可读性,让代码更容易维护
  • 对机器:对搜索引擎更加友好,有利于 SEO

4.DOCTYPE 的作用?

DOCTYPE的作用是为了告诉浏览器该文件的类型,让浏览器解析器知道他们应该用哪个规范来解析文档;严格模式与混杂模式,可以根据DoctypeDDT声明区分;如果DDT是严格型就会以严格形式,呈现出来;如果DDT是过渡型,并且有URL地址,那么会依然会以严格型的去进行呈现;如果没有URL地址的话,就会以混杂模式的出现;如果写错,或者不写,都会进入混杂模式;HTML5 没有DTD,所以没有严格模式和混杂模式的区分,他们的意义就是解析HTML的速度快,不易出错。

5.对meta标签的了解?

meta 标签由 namecontent 属性定义,用来描述网页文档的属性,比如网页的作者,网页描述,关键词等,除了HTTP标准固定了一些name作为大家使用的共识,开发者还可以自定义name

常见的meta标签:

  • charset:用来描述HTML文档的编码类型
  • keywords:页面关键词
  • description:页面描述
  • refresh:页面重定向和刷新
  • viewport:适配移动端,可以控制视口的大小和比例

其中,content 参数有以下几种:

  • width viewport :宽度(数值/device-width)
  • height viewport :高度(数值/device-height)
  • initial-scale :初始缩放比例
  • maximum-scale :最大缩放比例
  • minimum-scale :最小缩放比例
  • user-scalable :是否允许用户缩放(yes/no)

6.HTML 全局属性(global attribute)有哪些?

  • class:为元素设置类标识
  • data-*:为元素增加自定义属性
  • draggable:设置元素是否可拖拽
  • id:元素id,文档内唯一
  • lang:元素内容的的语言
  • style:行内css样式
  • title:元素相关的建议信息

7.浏览器页面有哪三层构成,分别是什么,作用是什么?

  • 浏览器页面构成:结构层、表示层、行为层
  • 分别是:HTML、CSS、JavaScript
  • 作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaScript实现一些客户端的功能与业务

8.HTML5 的 form 如何关闭之前输入记录的提示功能?

设置 form 输入框的 autocomplete 为 on 或者 off 来开启或关闭输入框的历史记录提示功能。

9.什么是iframe?

iframe是嵌入式框架, 是html标签, 是一个内联元素, iframe 元素会创建包含另外一个文档的内联框架(即行内框架) 。通常可以使用iframe内嵌网页,跨域ajax通讯的实现,微前端,广告嵌入等。

CSS

1.选择器优先级是怎样的?

!important > 行内样式 > id 选择器 > 类选择器 > 标签选择器 > 通配符 > 继承

JavaScript

1.script标签中的defer和async的区别?

  • script :会阻碍 HTML 解析,只有下载好并执行完脚本才会继续解析 HTML。
  • async script :解析 HTML 过程中进行脚本的异步下载,下载成功立马执行,有可能会阻断 HTML 的解析。
  • defer script:完全不会阻碍 HTML 的解析,解析完成之后再按照顺序执行脚本。

2.JS中一共有几种数据类型?

八种数据类型:

  • 七种基本数据类型(值类型):String字符串、Number数值、BigInt大型数值、Boolean布尔值、Null空值、Undefined未定义、Symbol
  • 一种引用数据类型(引用类型):Object对象。

注:内置对象 Function、Array、Date、RegExp、Error 等都是属于 Object 类型。也就是说,除了那七种基本数据类型之外,其他的,都称之为 Object 类型。

BigInt 和 Symbol 是ES6中新增的类型。

3.数据类型之间的区别?

  • 基本数据类型:参数赋值的时候,传数值。
  • 引用数据类型:参数赋值的时候,传地址。

4.前置自增(自减)和后置自增(自减的区别)?

  • 前置自增(自减):先自加,后返回值。
  • 后置自增(自减):先返回原值,后自加。
  • 如果单独使用,效果是一样的。

5.比较运算符?

标题说明案例结果
<小于号1 < 2true
大于号1 > 2false
<=小于等于号2 <= 2true
>=大于等于号3 >= 5false
==判等号(会转型,隐式转换)5 == 5 , 5 == '5'true , true
!=不等号5 !=5false
=== , !==全等,要求值和数据类型都一致5 === 5 , 5 === '5'true , false

6.逻辑运算符?

逻辑运算符说明案例
&&逻辑与,简称 “与” andtrue && false
ll逻辑或,简称 “或” ortrue ll false
!逻辑非,简称 “非” not!true

7.赋值运算符?

赋值运算符说明案例
=直接赋值var userName = '我是值';
+=、-=加、减一个数后再赋值var age = 10; age+=5; //15
*=、/=、%=乘、除、取模后再赋值var age = 2; age*=5; //10

8.运算符优先级?

优先级运算符顺序
1小括号()
2一元运算符++ ; -- ; !
3算数运算符先 *; / ; % 后 +; -
4关系运算符>; >=; <; <=
5相等运算符==; !=; ===; !==
6逻辑运算符先 && 后 ll
7赋值运算符=
8逗号运算符,