Var 的表达式提高的下层基本原理是甚么?
JS 发动机的组织工作形式是:
2)接着在运转。换句话说分成后处理和继续执行三个期。
表达式提高:大部份表达式的新闻稿句子单厢被提高到标识符颈部。但是表达式提高只对var指示新闻稿的表达式有效率,假如两个表达式并非用 var 指示新闻稿的,就不能出现表达式提高;JS 里的function也可看作表达式,也存有表达式提高情形。JS 怎样排序应用程序的图形天数?
1) 解析HTML聚合DOM树。
2) 导出CSS聚合CSSOM准则树。
3) 将DOM树与CSSOM准则树分拆在一同聚合图形树。
4) 结点图形树已经开始产业布局,排序每一结点的边线大小不一重要信息。
5)将图形树每一结点绘出到屏幕。横向水准德博瓦桑县的形式?
1)flex产业布局
display: flex; // flex 产业布局
justify-content: center; // 使农健水准德博瓦桑县
align-items: center; // 使农健横向德博瓦桑县2)定位流(子绝父相)
父元素设置为:position: relative;
子元素设置为:position: absolute;
距上 50%,据左 50%,接着减去元素自身宽度的距离就可以实现width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin: -50px 0 0 -50px;怎样判断两个对象是否为数组?
a) isPrototypeOf() 方法,判定 Array 是并非在 obj 的原型链中,假如是,则返回 true,否则 false;
b) obj instanceof Array;
c) Object.prototype.toString.call(obj);
d) Array.isArray(obj); // 不推荐margin 坍塌?
当三个盒子在横向方向上设置 margin 值时,会出现塌陷现象。
解决方案:
1).给父盒子添加border
2).给父盒子添加padding-top
3).给父盒子添加overflow:hidden
4).父盒子:position:fixed
5).父盒子:display:table
6).给子元素的前面添加两个兄弟元素,属性为:content:””; overflow:hidden;伪类与伪元素的区别?
a) 定义区别
伪类
伪类用于选择DOM树之外的重要信息,或是不能用简单选择器进行表示的重要信息。前者包含那些匹配指定状态的元素,比如:visited,:active;后者包含那些满足一定逻辑条件的DOM树中的元素,比如:first-child,:first-of-type,:target。
伪元素
伪元素为DOM树没有定义的虚拟元素。不同于其他选择器,它不以元素为最小选择单元,它选择的是元素指定内容。比如::before表示选
择元素内容的之前内容,也就是””;::selection表示选择元素被选中的内容。css 样式优先级,各自的权重?
优先级别:
通用选择器(*) < 元素(类型)选择器 < 类选择器 < 属性选择器 < 伪类 < ID 选择器 < 内联样式
权重:
1).第一等:代表内联样式,如: style=””,权值为1000。
2)第二等:代表ID选择器,如:#content,权值为100。
3)第三等:代表伪类和属性选择器,如.content,权值为10。
4)第四等:代表类型选择器和伪元素选择器,如div p,权值为1。判断数据类型有哪些方法?
1)typeof
typeof 是两个操作符,其右侧跟两个一元表达式,并返回这个表达式的数据类型。返回的结果用该类型的字符串(全小写字母)形式表示,包括以下 7 种:number、boolean、symbol、string、object、undefined、function 等。
2)instanceof
instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,假如 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型
3)constructor
当两个函数 F被定义时,JS发动机会为F添加 prototype 原型,接着再在 prototype上添加两个 constructor 属性,并让其指向 F 的引用。
4)toString
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]]点击并拖拽以移动 。这是两个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型重要信息。介绍一下 JS 的基本数据类型?
Undefined、Null、Boolean、Number、String
介绍一下 JS 有哪些内置对象?
Object 是 JavaScript 中大部份对象的父对象;
数据封装类对象:Object、Array、Boolean、Number、String
其他对象:Function、Argument、Math、Date、RegExp、Errorpush()、pop()、shift()、unshift() 分别是甚么功能?
// push 方法
// 将新元素添加到两个数组中,并返回数组的新长度值。
var a=[1,2,3,4];
a.push(5);// pop 方法
// 移除数组中的最后两个元素并返回该元素。
var a=[1,2,3,4];
a.pop();// shift 方法
// 移除数组中的第两个元素并返回该元素。
var a=[1,2];
a.shift();// unshift 方法
// 将指定的元素插入数组已经开始边线并返回该数组。
var a=[1,2];
a.unshift(0);null 和 undefined 有何区别?
1)null 表示两个对象被定义了,值为空值
; undefined 表示不存有这个值。
2)undefined :是两个表示”无”的原始值或者说表示”缺少值”,就是此处应该有两个值,但还没有定义。当尝试读取时会返回 undefined; 例如表达式被新闻稿了,但没有赋值时,就等于undefined。
3)注意: 在验证 null 时,一定要使用 === ,因为 == 无法分别 null 和 undefinednew 操作符具体干了甚么?
1)创建两个空对象,并且 this 表达式引用该对象。
2)属性和方法被加入到 this 引用的对象中。
3)新创建的对象由 this 所引用。你对 JSON 了解吗?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是基于 JavaScript 的两个子集。数据格式简单,易于读写,占用带宽小。 如:{“age”:”12″, “name”:”back”}
JavaScript 的 typeof 返回哪些数据类型?
undefined、string、boolean、number、symbol(ES6)、Object、Function
split() join() 的区别?
前者是将字符串切割成数组的形式,后者是将数组转换成字符串
事件委托是甚么?
利用事件冒泡的基本原理,让自己的所触发的事件,让他的父元素代替继续执行!
闭包是甚么,有甚么特性,对页面有甚么影响?
闭包的特性:
①.封闭性:外界无法访问闭包内部的数据,假如在闭包内新闻稿表达式,外界是无法访问的,除非闭包主动向外界提供访问接口;
②.持久性:一般的函数,调用完毕之后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保存有系统中,闭包中的数据依然存有,从而实现对数据的持久使用。优点:
① 减少全局表达式。
② 减少传递函数的参数量
③ 封装;缺点:
使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等.怎样阻止事件冒泡?
怎样阻止默认事件?
怎样让事件先冒泡后捕获?
在 DOM 标准事件模型中,是先捕获后冒泡。但假如要实现先冒泡后捕获的效果,对于同两个事件,监听捕获和冒泡,分别对应相应的处理函数,监听到捕获事件,先暂缓继续执行,直到冒泡事件被捕获后再继续执行捕获之间。
mouseover 和 mouseenter 的区别?
mouseover:当鼠标移入元素或其子元素单厢触发事件,所以有两个重复触发,冒泡的过程。对应的移除事件是mouseout
mouseenter:当鼠标移除元素本身(不包含元素的子元素)会触发事件,也就是不能冒泡,对应的移除事件是mouseleavejs 的 new 操作符做了哪些事情?
new 操作符新建了两个空对象,这个对象原型指向构造函数的 prototype,继续执行构造函数后返回这个对象。
js 的各种边线,比如 clientHeight、scrollHeight、offsetHeight 以及 scrollTop、offsetTop、clientTop 的区别?
clientHeight:表示的是可视区域的高度,不包含border和滚动条
offsetHeight:表示可视区域的高度,包含了border和滚动条
scrollHeight:表示了大部份区域的高度,包含了因为滚动被隐藏的部分。
clientTop:表示边框border的厚度,在未指定的情形下一般为0
scrollTop:滚动Doctype 作用?严格模式与混杂模式怎样区分?它们有何意义?
Doctype新闻稿于文档最前面,告诉应用程序以何种形式来图形页面,这里有两种模式,严格模式和混杂模式。
严格模式的排版和 JS 运作模式是 以该应用程序支持的最高标准运转。
混杂模式,向后兼容,模拟老式应用程序,防止应用程序无法兼容页面。link 标签和 import 标签的区别?
link属于html标签,而@import是css提供的
页面被加载时,link会同时被加载,而@import引用的css会等到页面加载结束后加载。
link是html标签,因此没有兼容性,而@import只有IE5以上才能识别。
link形式样式的权重高于@import的。多行元素的文本省略号?
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;简述一下 src 与 href 的区别?
href 是指向网络资源所在边线,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
src 是指向外部资源的边线,指向的内容将会嵌入到文档中当前标签所在边线;在请求 src 资源时会将其指向的资源下载并应用到文档内,例如 js 脚本,img 图片和 frame 等元素。
当应用程序导出到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、继续执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为甚么将js脚本放在底部而并非颈部。HTTP 的几种请求方法用途?
1、GET方法
发送两个请求来取得服务器上的某一资源
2、POST方法
向URL指定的资源提交数据或附加新的数据
3、PUT方法
跟POST方法很像,也是想服务器提交数据。但,它们之间有不同。PUT指定了资源在服务器上的边线,而POST没有
4、HEAD方法
只请求页面的首部
5、DELETE方法
删除服务器上的某资源
6、OPTIONS方法
它用于获取当前URL所支持的方法。假如请求成功,会有两个Allow的头包含类似“GET,POST”这样的重要信息
7、TRACE方法
TRACE方法被用于激发两个远程的,应用层的请求消息回路
8、CONNECT方法
把请求连接转换到透明的TCP/IP通道从应用程序地址栏输入 url 到显示页面的步骤?
应用程序根据请求的 URL 交给 DNS 域名导出,找到真实 IP,向服务器发起请求;
服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、JS、CSS、图象等);
应用程序对加载到的资源(HTML、JS、CSS 等)进行语法导出,建立相应的内部数据结构(如 HTML 的 DOM);
载入导出到的资源文件,图形页面,完成。怎样进行网站性能优化?
content方面
减少 HTTP 请求:分拆文件、CSS 精灵、inline Image
减少 DNS 查询:DNS 缓存、将资源分布到恰当数量的主机名
减少 DOM 元素数量Server 方面
使用 CDN
配置 ETag
对组件使用 Gzip 压缩Cookie 方面减小 cookie 大小不一
css 方面
将样式表放到页面顶部
不使用CSS表达式
使用不使用 @importJavaScript 方面
将脚本放到页面底部
将 javascript 和 css 从外部引入
压缩 javascript 和 css
删除不需要的脚本
减少 DOM 访问图片方面
优化图片:根据实际颜色需要选择色深、压缩
优化 css 精灵
不要在 HTML 中拉伸图片说说你对作用域链的理解?
作用域链的作用是保证继续执行环境里有权访问的表达式和函数是有序的,作用域链的表达式只能向上访问,表达式访问到 window 对象即被终止,作用域链向下访问表达式是不被允许的,简单的说,作用域就是表达式与函数的可访问范围,即作用域控制着表达式与函数的可见性和生命周期
谈谈 This 对象的理解?
this 总是指向函数的直接调用者(而非间接调用者)
假如有 new 关键字,this 指向 new 出来的那个对象
在事件中,this 指向触发这个事件的对象,特殊的是,IE中的 attachEvent 中的 this 总是指向全局对象 WindowXML 和 JSON 的区别?
数据体积方面
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
数据交互方面JSON与JavaScript的交互更加方便,更容易导出处理,更好的数据交互
数据描述方面JSON对数据的描述性比XML较差
传输速度方面JSON的速度要远远快于XML