前端面试题精选(8)

五十三:object对象的常用方法

Object.hasOwnProperty( ) 检查属性是否被继承

Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型

Object.propertyIsEnumerable( ) 是否可以通过 for/in 循环看到属性

Object.toLocaleString( ) 返回对象的本地字符串表示

Object.toString( ) 定义一个对象的字符串表示

Object.valueOf( ) 指定对象的原始值

五十四:如何编写高性能JS,或者换种方法问:如何优化你的js代码。

1、封装方法提高js代码的可复用性。

2、注意全局作用域与局部作用域的使用,防止变量污染。

3、使用一次 innerHTML 赋值代替构建 dom 元素

4、使用三目运算符替代条件分支

5、需要不断执行的时候,优先考虑使用 setInterval

五十五:聊一聊作用域与变量提升。

1、js 的运行主要分两个阶段:js 的预解析和运行,预解析阶段所有的变量声明和函数定义都会提前,但是变量的赋值不会提前 。

2、主要分ES6之前与ES6之后。

1.1 es6之前用全局作用域指向的是window,局部作用域一般用在函数内部或者循环体中,声明了变量但没有赋值,直接调用这个变量前调用就报错undefined

1.2 es之后局部作用域块,出了这个局部作用域块就是undefined,声明了变量没有赋值,在这个变量前调用就直接报错。

五十六:说一说你所只知道的异步加载

1、setinterval,settimeout、ajax、es6的promise(异步变成的解决方案)

异步:先加载微任务(then,catch) 再在加载 宏任务(setinterval,settimeout),

五十七:简述一下 Sass、Less,且说明区别?

答:他们是动态的样式语言,是 CSS 预处理器,CSS 上的一种抽象层。他们是一种特殊的语法/语 言而编译成 CSS。

两者不同:

1、变量符不一样,less 是@,而 Sass 是$;

2、Sass 支持条件语句,可以使用 if{}else{},for{}循环等等。而 Less 不支持;

3、Sass 是基于 Ruby 的,是在服务端处理的,而 Less 是需要引入 less.js 来处理 Less 代码输出 Css 到浏览器

五十八:请说一下你对 this 的理解

全局:this → window对象

函数:this → 指向是该函数的形参

事件:this → 当前的操作对象

构造函数:this → 原型对象

箭头函数: this → 子元素的父级

五十九:请列举前端有哪些性能优化的方式?

1、减少 http 请求次数:CSS Sprites, JS、CSS 源码压缩、图片大小控制合适;网页

Gzip,CDN 托管,data 缓存 ,图片服务器。

2、 前端模板 JS+数据,减少由于 HTML 标签导致的带宽浪费,前端用变量保存 AJAX

请求结果,每次操作本地变量,不用请求,减少请求次数

3、 用 innerHTML 代替 DOM 操作,减少 DOM 操作次数,优化 javascript 性能。

4、 当需要设置的样式很多时设置 className 而不是直接操作 style。

5、 少用全局变量、缓存 DOM 节点查找的结果。减少 IO 读取操作。

6、 避免使用 CSS Expression(css 表达式)又称 Dynamic properties(动态属性)。

7、 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

8、 避免在页面的主体布局中使用 table,table 要等其中的内容完全下载之后才会显 示出来,显示比 div+css 布局慢。

六十:js有哪些方式会隐式转换为false

undefined、null、Boolean:false、空字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值