1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制 考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别是否清楚 考察点2:是否知道如何判断一个变量是什么类型的 考察点3:递归算法的设计 // 方法一: Object.prototype.clone = function() { var o = this.constructor === Array ? [] : {…
1. px和em的区别? px和em都是长度单位; 区别是: px的值是固定的,指定是多少就是多少, 计算比较容易. em得值不是固定的,并且em会继承父级元素的字体大小. 浏览器的默认字体高都是16px; 所以未经调整的浏览器都符合: 1em=16px; 那么12px=.75em, 10px=.625em 2. CSS 去掉inline-block元素间隙的几种方法? 间隙是怎么来的: 间隙是由换行或者回车导致的; 只要把标签写成一行或者 标签直接没有空格,就不会出现间隙; 怎么去除? 方法1…
1. 如何实现瀑布流? 瀑布流布局的原理: ) 瀑布流布局要求要进行布置的元素等宽, 然后计算元素的宽度, 与浏览器宽度之比,得到需要布置的列数; ) 创建一个数组,长度为列数, 里面的值为已布置元素的总高度(最开始为0); ) 然后将未布置的元素依次布置到高度最小的那一列, 就得到了瀑布流布局; ) 滚动加载, scroll事件得到scrollTop, 与最后盒子的offsetTop对比, 符合条件就不断滚动加载. 瀑布流布局核心代码: /** * 实现瀑布流的布局 * @param {str…
1. var的变量提升的底层原理是什么? JS引擎的工作方式是: 1) 先解析代码,获取所有被声明的变量: 2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到代码头部. 但是变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量提升. 2. JS如何计算浏览器的渲染时间? 撩课小编: 浏览器的渲染过程主要包括以下几步: 1) 解析HTML生成DOM树. 2) 解析CSS生成CSSOM规则树. 3) 将DOM树与CSSOM…
1. 如何手写一个JQ插件? 方式一: $.extend(src) 该方法就是将src合并到JQ的全局对象中去: $.extend({ log: ()=>{alert('撩课itLike');} }); 方式二: $.fn.extend(src) 该方法将src合并到jquery的实例对象中去: $.fn.extend({ log: ()=>{alert('撩课itLike');} }); 说说平衡二叉树? 平衡二叉搜索树(Self-balancing binary search tree)…
1.web storage和cookie的区别? Web Storage的概念和cookie相似, 区别是它是为了更大容量存储设计的. Cookie的大小是受限的, 并且每次你请求一个新的页面的时候Cookie都会被发送过去, 这样无形中浪费了带宽, 另外cookie还需要指定作用域, 不可以跨域调用 除此之外, WebStorage拥有setItem,getItem,removeItem,clear等方法, 不像cookie需要前端开发者自己封装setCookie,getCookie 但是co…
1.web前端开发,如何提高页面性能优化? 内容方面: .减少 HTTP 请求 (Make Fewer HTTP Requests) .减少 DOM 元素数量 (Reduce the Number of DOM Elements) .使得 Ajax 可缓存 (Make Ajax Cacheable) 针对CSS: .把 CSS 放到代码页上端 (Put Stylesheets at the Top) .从页面中剥离 JavaScript 与 CSS (Make JavaScript and CS…
1. 你能描述一下渐进增强和优雅降级之间的不同吗? 定义: 优雅降级(graceful degradation): 一开始就构建站点的完整功能, 然后针对浏览器测试和修复 渐进增强(progressive enhancement): 一开始只构建站点的最少特性, 然后不断针对各浏览器追加功能. 优雅降级和渐进增强都关注于同一网站 在不同设备里不同浏览器下的表现程度. 区别: “优雅降级”观点认为应该针对那些最高级. 最完善的浏览器来设计网站. 而将那些被认为“过时”或有功能缺失的浏览器下 的测试…
1.什么叫优雅降级和渐进增强? 优雅降级: Web站点在所有新式浏览器中都能正常工作, 如果用户使用的是老式浏览器, 则代码会针对旧版本的IE进行降级处理了, 使之在旧式浏览器上以某种形式降级体验却不至于完全不能用. 如:border-shadow 渐进增强: 从被所有浏览器支持的基本功能开始, 逐步地添加那些只有新版本浏览器才支持的功能, 向页面增加不影响基础浏览器的额外样式和功能的. 当浏览器支持时,它们会自动地呈现出来并发挥作用. 如:默认使用flash上传, 但如果浏览器支持 HTML5…
1.为什么用Nodejs,它有哪些优缺点? 优点: 事件驱动,通过闭包很容易实现客户端的生命活期. 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通用 缺点: nodejs更新很快,可能会出现版本兼容 nodejs还不算成熟,还没有大制作 nodejs不像其他的服务器,对于不同的链接,不支持进程和线程操作 2.什么是错误优先的回调函数? 错误优先(Error-first)的回调函数(Error-First Callback)用于同时返回错误和数…