专栏首页王磊的博客js常用面试题整理

js常用面试题整理

1、array操作关键字:

pop() 删除最后一个;push最后添加一个或者多个;reverse颠倒数组;shift删除第一个元素;unshift首部添加元素;concat衔接两个数组;join把数组按照指定字符变为字符;slice(1,1)截选数组元素;

2、js闭包的优缺点:

闭包是有权访问另一个函数私有变量的函数叫闭包;

优点:避免变量污染、加强了封装性,逻辑性比较强代码的可读性高;加载到内存中执行效率高;

缺点:在内存中,造成了内存浪费,如果滥用闭包是灾难性的;

3、模块化的意义:

Es6使用import、export导入和导出,可以封装代码,可读性高,逻辑分明,可以按需导入模块,避免资源的消耗和浪费;

4、前台优化方案:

初级:去掉代码中的打印信息和注释信息;压缩js和css;使用缓存页面静态文件缓存或者CDN;图片压缩;

中级:使用负载均衡nginx、docker;静动态文件分离;查询结果缓存使用redis;

5、WebPack和Grunt和Gulp对比

Webpack可以看做是模块打包器,把你的代码转换成合适的格式供浏览器使用;

常用webpack构建本地服务器,可以让浏览器监听你代码的修改,自动刷新现实后的结果;

Gulp/Grunt是一种能够优化前端开发的流程工具,而WebPack是一种模块化的解决方案;

WebPack有4个配置选项,打包速度越快,负面作用就越大,会不利于调试,文件的执行效率也有一定的影响;开发阶段使用:eval-source-map:使用eval打包源文件模块,在同一个文件中生成干净的完整的source map。这个选项可以在不影响构建速度的前提下生成完整的sourcemap,但是对打包后输出的JS文件的执行具有性能和安全的隐患。在开发阶段这是一个非常好的选项,在生产阶段则一定不要启用这个选项;

babel是一个编译js的平台,把es6/es7转换成浏览器支持的es5提供浏览器使用;

6、js数据类型

String,Number,Boolean,Null,Undefined;Object,Array,Function(引用类型)

7、es6新特性

箭头操作符;对class的支持(constructor构造函数);不定参数...x;let和const关键字;for of遍历;模块的支持import;promise异步函数的处理模式(pending等待中;resolve返回成功,reject返回失败);

8、es7(es2016)新特性

可以使用async/await

9、Zepto.js介绍

Zepto是一个针对移动端浏览器的轻量级的js库,和jquery比较类似;

10、redux介绍

Redux最重要的用途是应用状态管理,订阅、监听消息用的,数据改变时通知相应的ui修改的;

11、html5的canvas

canvas.getContext(“2d”)设置描绘类型2d,webgl表示3维;lineWidth线宽、strokeStyle线颜色,moveTo(x,y)移动画笔、lineTo划线到坐标;stroke执行划线;strokeRect绘制矩形,fillRect填充矩形,clearRect清除指定区域;圆弧使用Math.PI;drawImage绘制图像;绘制文字:fillText,strokeText描边文字;

画板代码:

canvas1.onmousemove=function(e){

//划线到当前客户端的x与y座标

       ctx.lineTo(e.clientX, e.clientY);

       //执行画线

       ctx.stroke();

}

12、WebGL介绍

WebGL是一种3D绘图标准,运行js和opengl结合在一起,省去了网页渲染的使用使用插件的麻烦。

因为原生的webgo很复杂所以我们会常用一些三方的库,比如three.js和Egret(白鹭引擎),使用三库做H5游戏的比较多,实质都大同小异:场景、相机、渲染器,创建场景,组件相机,创建物体渲染到页面;

13、深拷贝和浅拷贝

深度拷贝指的是Array和Object这样的类型,浅拷贝是只拷贝一层值,而深拷贝是遍历所有的拷贝。

14、两个等号和三个等号的区别

两个等是转换类型对比值的,而三个等是不会进行转换的,也就是类型不同,一定不会相等的;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • js堆栈溢出的问题

        js是最令程序员头疼的问题了,不是语法也不是使用头疼,而是调试头疼,虽然有很方便的各种各样的调试工具,但经管这样有时候一个疏忽的小问题,会导致各种各样的...

    Java中文社群_老王
  • JVM(五)垃圾回收器的前世今生

    如果垃圾回收的算法属于内存回收的方法论的话,那本文讨论的垃圾回收器就属于内存回收的具体实现。

    Java中文社群_老王
  • nodejs生成多层目录和生成文件的通用方法

    /** *生成多层目录 * @param dir 多层目录 * @param split 分隔符,ex:'/' 对应的目录地址:'2015/10/10' ...

    Java中文社群_老王
  • C/C++学习之路(二)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

    大黄大黄大黄
  • 最近在做 Spring Cloud 项目,松哥和大家分享一点微服务架构中的安全管理思路

    本文主要讲一些理论上的东西,所以要是前面的 OAuth2 不懂,可能阅读起来有些吃力:

    江南一点雨
  • Vivado综合属性:ASYNC_REG

    在异步跨时钟域场合,对于控制信号(通常位宽为1-bit)常使用双触发器方法完成跨时钟域操作,如下图所示。此时对于图中标记的1号和2号触发器需要使用综合属性ASY...

    Lauren的FPGA
  • 2017年麦达公开课第2期|互联网时代的SaaS,到底是渠道为主还是直销主?

    T客汇官网:tikehui 撰文 |卿云 SaaS产品需要渠道 传统软件市场“渠道为王”被奉为圭臬,到了互联网时代SaaS模式,有些专家呼吁去中间环节,让产品直...

    人称T客
  • DIGIT:一种用于手持操作的低成本紧凑型高分辨率触觉传感器的新设计(CS RO)

    尽管经过数十年的研究,但一般用途的徒手操纵仍然是机器人技术中尚未解决的挑战之一。限制目前的机器人操纵系统的一个因素是难以精确感应接触力——感应和推理接触力是精确...

    刘持诚
  • Fiddler抓包8-打断点(bpu)

    前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神聊天都靠小纸条。某屌丝A男对隔壁小王的隔壁女神C倾慕已久,于是天天小纸条骚扰,无奈中间隔...

    上海-悠悠
  • [PHP] 项目实践中使用的IOC容器思想

    1.容器的意思就是一个全局变量,里面存了很多对象,如果要用到某个对象就从里面取,前提就是要先把对象放进去 2.控制反转就是把自己的控制权交给别人 3.这两个结合...

    陶士涵

扫码关注云+社区

领取腾讯云代金券