| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 上万字|初中级前端面试题整理(上) -> 正文阅读 |
|
[JavaScript知识库]上万字|初中级前端面试题整理(上) |
?前言 从前端学习到找一份合适的工作,大大小小的面试必不可少,所以我对初级前端面试题进行了初步整理,也方便自己查阅,也希望对小伙伴们有所帮助! HTML—————————————————————————————————————— HTML语义化HTML语义化就是让页面内容结构化,它有如下优点 1、易于用户阅读,样式丢失的时候能让页面呈现清晰的结构。 如: <header>代表头部 HTML5新标签有<header>、<footer>、<aside>、<nav>、<video>、<audio>、<canvas>等...复制代码 CSS—————————————————————————————————————— 盒子模型盒模型分为标准盒模型和怪异盒模型(IE模型) box-sizing:content-box //标准盒模型 标准盒模型:元素的宽度等于style里的width+margin+border+padding宽度 如下代码,整个宽高还是120px
怪异盒模型:元素宽度等于style里的width宽度 如下代码,整个宽高还是100px
注意:如果你在设计页面中,发现内容区被撑爆了,那么就先检查一下border-sizing是什么,最好在引用reset.css的时候,就对border-sizing进行统一设置,方便管理 rem与em的区别rem是根据根的font-size变化,而em是根据父级的font-size变化 rem:相对于根元素html的font-size,假如html为font-size:12px,那么,在其当中的div设置为font-size:2rem,就是当中的div为24px em:相对于父元素计算,假如某个p元素为font-size:12px,在它内部有个span标签,设置font-size:2em,那么,这时候的span字体大小为:12*2=24px CSS选择器css常用选择器 通配符:* css选择器权重 !important -> 行内样式 -> #id -> .class -> 元素和伪元素 -> * -> 继承 -> 默认 CSS新特性transition:过渡 行内元素和块级元素行内元素(display: inline) 宽度和高度是由内容决定,与其他元素共占一行的元素,我们将其叫行内元素,例如:<span> 、 <i> 、 <a>等 块级元素(display: block) 默认宽度由父容器决定,默认高度由内容决定,独占一行并且可以设置宽高的元素,我们将其叫做块级元素,例如:<p> 、<div> 、<ul>等 在平时,我们经常使用CSS的display: inline-block,使它们拥有更多的状态 绝对定位和相对定位的区别position: absolute position: relative Flex布局BFC什么是BFC? BFC格式化上下文,它是一个独立的渲染区域,让处于 BFC 内部的元素和外部的元素相互隔离,使内外元素的定位不会相互影响 如何产生BFC? display: inline-block position: absolute/fixed BFC作用 BFC最大的一个作用就是:在页面上有一个独立隔离容器,容器内的元素和容器外的元素布局不会相互影响 解决上外边距重叠;重叠的两个box都开启bfc; 水平垂直居中Flex布局 display: flex //设置Flex模式 水平居中 行内元素:display: inline-block; 垂直居中 行高 = 元素高:line-height: height less,sass,styus三者的区别变量 Sass声明变量必须是『$』开头,后面紧跟变量名和变量值,而且变量名和变量值需要使用冒号:分隔开。 Less 声明变量用『@』开头,其余等同 Sass。 Stylus 中声明变量没有任何限定,结尾的分号可有可无,但变量名和变量值之间必须要有『等号』。 作用域 Sass:三者最差,不存在全局变量的概念 Less:最近的一次更新的变量有效,并且会作用于全部的引用! Stylus:Sass 的处理方式和 Stylus 相同,变量值输出时根据之前最近的一次定义计算,每次引用最近的定义有效; 嵌套 三种 css 预编译器的「选择器嵌套」在使用上来说没有任何区别,甚至连引用父级选择器的标记 & 也相同 继承 Sass和Stylus的继承非常像,能把一个选择器的所有样式继承到另一个选择器上。使用『@extend』开始,后面接被继承的选择器。Stylus 的继承方式来自 Sass,两者如出一辙。 Less 则又「独树一帜」地用伪类来描述继承关系; 导入@Import Sass 中只能在使用 url() 表达式引入时进行变量插值
Less 中可以在字符串中进行插值
Stylus 中在这里插值不管用,但是可以利用其字符串拼接的功能实现
总结 Sass和Less语法严谨、Stylus相对自由。因为Less长得更像 css,所以它可能学习起来更容易。 Sass 和 Compass、Stylus 和 Nib 都是好基友。 Sass 和 Stylus 都具有类语言的逻辑方式处理:条件、循环等,而 Less 需要通过When等关键词模拟这些功能,这方面 Less 比不上 Sass 和 Stylus Less 在丰富性以及特色上都不及 Sass 和 Stylus,若不是因为 Bootstrap 引入了 Less,可能它不会像现在这样被广泛应用(个人愚见) link与@import区别与选择
link功能较多,可以定义 RSS,定义 Rel 等作用,而@import只能用于加载 css; 当解析到link时,页面会同步加载所引的 css,而@import所引用的 css 会等到页面加载完才被加载; @import需要 IE5 以上才能使用; link可以使用 js 动态引入,@import不行 多行元素的文本省略号overflow : hidden; JavaScript—————————————————————————————————————— JS的几条基本规范1、不要在同一行声明多个变量 JS引用方法行内引入
内部引入
外部引入
注意 1,不推荐写行内或者HTML中插入<script>,因为浏览器解析顺序缘故,如果解析到死循环之类的JS代码,会卡住页面 JS的基本数据类型Undefined、Null、Boolean、Number、String、新增:Symbol 数组操作在 JavaScript 中,用得较多的之一无疑是数组操作,这里过一遍数组的一些用法 map: 遍历数组,返回回调返回值组成的新数组forEach: 无法break,可以用try/catch中throw new Error来停止 JS有哪些内置对象Object是JavaScript中所有对象的父对象 数据封装对象:Object、Array、Boolean、Number和String get请求传参长度的误区误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是来源与浏览器或web服务器,浏览器或web服务器限制了url的长度。为了明确这个概念,我们必须再次强调下面几点: 1、HTTP 协议 未规定 GET 和POST的长度限制 2、GET的最大长度显示是因为 浏览器和 web服务器限制了 URI的长度 3、不同的浏览器和WEB服务器,限制的最大长度不一样 4、要支持IE,则最大长度为2083byte,若只支持Chrome,则最大长度 8182byte 补充get和post请求在缓存方面的区别
闭包什么是闭包? 函数A 里面包含了 函数B,而 函数B 里面使用了 函数A 的变量,那么 函数B 被称为闭包。 又或者:闭包就是能够读取其他函数内部变量的函数
闭包的特征
对闭包的理解 使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念 闭包 的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量始终保持在内存中 闭包的另一个用处,是封装对象的私有属性和私有方法 闭包的好处 能够实现封装和缓存等 闭包的坏处 就是消耗内存、不正当使用会造成内存溢出的问题 使用闭包的注意点 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露 解决方法是:在退出函数之前,将不使用的局部变量全部删除 闭包的经典问题
这段代码输出 答案:3个3 有什么办法依次输出0 1 2 第一种方法 使用let
在这里,每个 let 和代码块结合起来形成块级作用域,当 setTimeout() 打印时,会寻找最近的块级作用域中的 i,所以依次打印出 0 1 2 如果这样不明白,我们可以执行下边这段代码
此时浏览器依次输出的是: 定时器外部:0 即代码还是先执行 for 循环,但是当 for 结束执行到了 setTimeout 的时候,它会做个标记,这样到了 console.log(i) 中,i 就能找到这个块中最近的变量定义 第二种方法 使用立即执行函数解决闭包的问题
JS作用域及作用域链作用域 在JavaScript中,作用域分为 全局作用域 和 函数作用域 全局作用域 代码在程序的任何地方都能被访问,window 对象的内置属性都拥有全局作用域 函数作用域 在固定的代码片段才能被访问 例子: 作用域有上下级关系,上下级关系的确定就看函数是在哪个作用域下创建的。如上,fn作用域下创建了bar函数,那么“fn作用域”就是“bar作用域”的上级。 作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。 变量取值:到创建 这个变量 的函数的作用域中取值 作用域链 一般情况下,变量取值到 创建 这个变量 的函数的作用域中取值。 但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链 原型和原型链 原型和原型链的概念 每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去 原型和原型链的关系
原型和原型链的特点 JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变 当我们需要一个属性的时,Javascript引擎会先看当前对象中是否有这个属性, 如果没有的 就会查找他的Prototype对象是否有这个属性,如此递推下去,一直检索到 Object 内建对象 下篇继续、、、、 ?以上与大家分享的内容,如果需要领取免费学习资料,或者学习交流,扫码加我拉你进群
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:38:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |