当前位置: 首页 > news >正文

面试 高频面试题 基础 HTML CSS JS

目录

基础

Undefined和null有什么区别 

理解JSON 

什么是作用域

什么是闭包

Js常见的垃圾回收方式是标记清除

let、var、const区别

This指向

HTML

HTML标签的嵌套规则

meta标签有什么作用 

CSS

div嵌套img时多出的空白如何解决

margin击穿问题如何解决

实现左右两边固定宽度,中间自适应的布局

JS

作用域的变量提升

bind和apply的区别

箭头函数的新特性

多次引入同一个模块,会触发几次模块的全局事件


基础

Undefined和null有什么区别

  1. Undefined 
    • 表示声明了变量没有赋值

    • Undefined不是有效JSON

    • Undefined的类型是undefined

  2. null
    • 表示一个对象的值为空,是一个空对象

    • Null是一个有效的JSON

    • Null的类型是object

理解JSON 

JSON是一个JS对象,也是一种轻量级的数据交换格式

  • JSON.Stringify() 转化成字符串
  • JSON.parse() 转化成JSON对象 

什么是作用域

JavaScript中的作用域是我们可以有效访问变量或函数的区域,是一组用于查找变量的规则,如果变量在当前作用域中不存在,它会向外部作用域中查找,直到到达全局作用域,这个查找过程叫作用域链,JS中的作用域链主要用于解析变量的值。

全局作用域

  • 在全局命名空间中声明的变量或函数位于全局作用域中,在代码的任何地方可以访问

函数作用域

  • 函数在函数中声明的变量函数和参数可以在函数内部访问,但不能在函数外部访问

块作用域

  • 在花括号中声明的变量,只能在其中访问。

什么是闭包

闭包就是有权访问一个函数内部变量的函数

  1. 函数嵌套函数
  2. 函数内部可以引用外部参数和变量
  3. 参数和变量不会被垃圾回收机制回收

Js常见的垃圾回收方式是标记清除

工作原理:当变量进入环境时,将这个变量标记为进入环境,当变量离开环境时,则将其标记为“离开环境”,标记离开环境的就回收内存。

let、var、const区别

Var没有块级作用域,支持变量提升

Let

  • 有块级作用域,不支持变量提升
  • 创建一个可变的变量

Const

  • 有块级作用域,不支持变量提升
  • 声明一个变量一旦声明不能改变

This指向

This总是代表它的直接调用者 

  • 默认情况下没有直接调用者,this指向的是window
  • 严格模式下没有直接调用者,this指向的是undefined

HTML

HTML标签的嵌套规则

  • 不乱嵌套,块级元素可以嵌套行内元素,行内元素不能嵌套块级元素
  • 标签闭合,属性小写
  • 使用外链css和js实现结构行为表现分离

meta标签有什么作用 

Meta标签提供有关页面的元信息

  • Viewport主要用于移动端,设置宽度为设备宽度
  • initial-scale:设置页面的初始缩放值
  • User-scalable:是否允许用户缩放

CSS

div嵌套img时多出的空白如何解决

产生空白的原因,img标签的display属性默认是inline

  • Div{font-size:0}
  • Img{display:block}
  • Img{vertical-align:top}
  • div{line-hight:0}

margin击穿问题如何解决

  • 父元素加边框
  • 父元素overflow:auto
  • 父元素display:flex或者display:inline-block
  • 使用绝对定位

实现左右两边固定宽度,中间自适应的布局

  •  float解决 使用左浮动和右浮动,中间设置margin
  • 绝对定位解决   使用right:0和left:0,中间设置左右margin(外边距)
  • flex解决        父元素设置display:flex,左右设置宽度,中间设置flex:1===flex:1 1 auto
  • table解决      父元素设置display:table 子元素设置为display:table-cell
  • 网格布局       父元素设置display:grid grid-template-rows //横向排列  grid-template-columns //纵向排列 

JS

作用域的变量提升

变量提升只发生在当前作用域,所有的声明都会提升到作用域的最顶端

bind和apply的区别

Bind执行函数,方便随后调用,apply和call则是立即执行。Apply传入的参数为数组。

箭头函数的新特性

  • 没有this
  • 箭头函数是匿名函数,不能作为构造函数,不能使用new
  • 箭头函数内没有arguments

多次引入同一个模块,会触发几次模块的全局事件

组件化重要的特性就是作用域隔离,一个组件拥有一个私有的作用域,当在页面中引用了该组件的时候,只有该组件实例能访问该作用域。

(持续更新)

相关文章:

  • 【Python基础篇020】网络编程初识
  • 11、时序约束
  • 高级IO多路转接之select、poll、epoll
  • Java --- springMVC实现RESTFul案例
  • 大数据相关积累
  • 力扣--有效的括号
  • [Java安全]—Controller内存马
  • Java这些最基础的知识,你还记得多少?
  • 智能优化算法:白鲸优化算法-附代码
  • OAuth 2.0 (第三方登录)前端流程实现
  • 【JAVA高级】——吃透JDBC中的事务及事务的封装
  • AJAX快速入门、同步和异步、Axios异步框架、JSON
  • 2022年了,软件测试已经饱和了?
  • 闭包“陷阱” 私有对象真的没办法修改属性吗?
  • Ai-WB1系列驱动4.0寸电阻触摸屏运行LVGL v8.3
  • Symfony 表单教程
  • 程序员最浪漫的表白方式,将情书写在她的照片里,Python简直太厉害啦~
  • 硬件电路(3)设计篇----为什么栅极型推挽电路不用上P下N?
  • SpringSecurity(十三)---实现过滤器(上)基础讲解
  • 【微信小程序系列:三】前端实现微信支付与代扣签约