js基础面试题131-160道题目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js基础面试题131-160道题目相关的知识,希望对你有一定的参考价值。
参考技术A131.用原生 JavaScript 的实现过什么功能吗?
参考答案:轮播图、手风琴、放大镜、3D动画效果等,切记,所答的一定要知道实现原理!,不知道还不如不说!
参与互动
132.javascript 代码中的"use strict"; 是什么意思 ? 使用它区别是什么?
参考答案:意思是使用严格模式,使用严格模式,一些不规范的语法将不再支持
参与互动
133.简述创建函数的几种方式
参考答案:
参与互动
134.window.location.search() 返回的是什么?
参考答案:查询(参数)部分。除了给动态语言赋值以外,我们同样可以给静态页面, 并使用 javascript 来获得相信应的参数值 返回值:?ver=1.0&id=timlq 也就是问号后面的!
参与互动
135.window.location.hash 返回的是什么?
参考答案:锚点 , 返回值:#love ;
参与互动
136.window.location.reload() 作用?
参考答案:刷新当前页面
参与互动
137.为什么不能定义 1px 左右的 p 容器?
参考答案: IE6 下这个问题是因为默认的行高造成的,解决的方法也有很多,例如: overflow:hidden | zoom:0.08 | line-height:1px
参与互动
138.BOM 对象有哪些,列举 window 对象?
参考答案:
参与互动
139.简述 readonly 与 disabled 的区别
参考答案:
参与互动
140.为什么扩展 javascript 内置对象不是好的做法?
参考答案:
参与互动
141.什么是三元表达式?“三元”表示什么意思?
参考答案:三元如名字表示的三元运算符需要三个操作数。
语法是 条件 ? 结果1 : 结果2; .这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2。
参与互动
142.我们给一个 dom 同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获
参考答案:所有事件的顺序是:其他元素捕获阶段事件 -> 本元素代码顺序事件 -> 其他元素冒泡阶段事件 。
参考
参与互动
144.简述一下 Handlebars 的基本用法?
参考答案:没有用过的话说出它是干什么的即可
参与互动
143.简述一下 Handlerbars 的对模板的基本处理流程, 如何编译的?如何缓存的?
参考答案:
参与互动
145.前端 templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?
参考答案:
参与互动
146.知道什么是 webkit 么? 知道怎么用浏览器的各种工具来调试和 debug 代码么?
参考答案:Webkit 是浏览器引擎,包括 html 渲染和 js 解析功能,手机浏览器的主流内核,与之相对应的引擎有 Gecko(Mozilla Firefox 等使用)和 Trident(也称 MSHTML,IE 使用)。 对于浏览器的调试工具要熟练使用,主要是页面结构分析,后台请求信息查看,js 调试工具使用,熟练使用这些工具可以快速提高解决问题的效率
参与互动
147.如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
参考答案:了解 BDD 行为驱动开发与 TDD 测试驱动开发已经单元测试相关概念
参与互动
148.JavaScript 的循环语句有哪些?
参考答案:while for do while forEach
参与互动
149.作用域-编译期执行期以及全局局部作用域问题
参考答案:js 执行主要的两个阶段:预解析和执行期
参与互动
150.如何添加 html 元素的事件,有几种方法?请列举
参考答案:直接在标签里添加;在元素上添加、使用事件注册函数添加
参与互动
151.列举浏览器对象模型 BOM 里常用的至少 4 个对象,并列举 window 对象的常用方法至少 5 个
参考答案:
对象:Window document location screen history navigator
方法:Alert() confirm() prompt() open() close()
参与互动
152.事件绑定的方式
参考答案:
参与互动
153.事件循环
参考答案:事件循环是一个单线程循环,用于监视调用堆栈并检查是否有工作即将在任务队列中完成。如果调用堆栈为空并且任务队列中有回调函数,则将回调函数出队并推送到调用堆栈中执行。
参与互动
154.事件模型
参考答案:
解析:参考
参与互动
155.如何自定义事件
参考答案:
1.原生提供了 3 个方法实现自定义事件 2.createEvent,设置事件类型,是 html 事件还是 鼠标事件 3.initEvent 初始化事件,事件名称,是否允许冒泡,是否阻止自定义事件 4.dispatchEvent 触发事件
MDN
参与互动
156.target 和 currentTarget 区别
参考答案:
参与互动
157.prototype 和__proto__的关系是什么
参考答案:
所有的对象都拥有__proto__属性,它指向对象构造函数的 prototype 属性
所有的函数都同时拥有__proto__和 protytpe 属性 函数的__proto__指向自己的函数实现 函数的 protytpe 是一个对象 所以函数的 prototype 也有__proto__属性 指向 Object.prototype
Object.prototype.__proto__指向 null
参与互动
158.什么是原型属性?
参考答案:从构造函数的prototype属性出发找到原型,这时候就把原型称之为构造函数的原型属性
参与互动
159.什么是原型对象?
参考答案:从实例的__proto__出发,找到原型,这时候就把原型称之为实例的原型对象。
参与互动
160.使用 let、var 和 const 创建变量有什么区别
参考答案:
let 和 const 的区别在于:let 允许多次赋值,而 const 只允许一次。
一周热文和最新 JS 进阶面试题 #4
▲ 点击下方“前端开发博客”关注公众号
回复“面试”获取面试精选文章
忙碌的一周过去了,一起来汇总一下前端开发博客最近一周有哪些值得阅读的东西吧。
文章排行
最新试题
25. 输出是什么?
const obj = { a: 'one', b: 'two', a: 'three' }
console.log(obj)
A:
{ a: "one", b: "two" }
B:
{ b: "two", a: "three" }
C:
{ a: "three", b: "two" }
D:
SyntaxError
答案: C
如果你有两个名称相同的键,则键会被替换掉。它仍然位于第一个键出现的位置,但是值是最后出现那个键的值。
26. JavaScript 全局执行上下文为你做了两件事:全局对象和 this 关键字。
A: 对
B: 错
C: 看情况
答案: A
基本执行上下文是全局执行上下文:它是代码中随处可访问的内容。
27. 输出是什么?
for (let i = 1; i < 5; i++) {
if (i === 3) continue
console.log(i)
}
A:
1
2
B:
1
2
3
C:
1
2
4
D:
1
3
4
答案: C
如果某个条件返回 true
,则 continue
语句跳过本次迭代。
28. 输出是什么?
String.prototype.giveLydiaPizza = () => {
return 'Just give Lydia pizza already!'
}
const name = 'Lydia'
name.giveLydiaPizza()
A:
"Just give Lydia pizza already!"
B:
TypeError: not a function
C:
SyntaxError
D:
undefined
答案: A
String
是内置的构造函数,我们可以向它添加属性。我只是在它的原型中添加了一个方法。基本类型字符串被自动转换为字符串对象,由字符串原型函数生成。因此,所有 string(string 对象)都可以访问该方法!
29. 输出是什么?
const a = {}
const b = { key: 'b' }
const c = { key: 'c' }
a[b] = 123
a[c] = 456
console.log(a[b])
A:
123
B:
456
C:
undefined
D:
ReferenceError
答案: B
对象的键被自动转换为字符串。我们试图将一个对象 b
设置为对象 a
的键,且相应的值为 123
。
然而,当字符串化一个对象时,它会变成 "[object Object]"
。因此这里说的是,a["[object Object]"] = 123
。然后,我们再一次做了同样的事情,c
是另外一个对象,这里也有隐式字符串化,于是,a["[object Object]"] = 456
。
然后,我们打印 a[b]
,也就是 a["[object Object]"]
。之前刚设置为 456
,因此返回的是 456
。
30. 输出是什么?
const foo = () => console.log('First')
const bar = () => setTimeout(() => console.log('Second'))
const baz = () => console.log('Third')
bar()
foo()
baz()
A:
First
Second
Third
B:
First
Third
Second
C:
Second
First
Third
D:
Second
Third
First
答案: B
我们有一个 setTimeout
函数,并首先调用它。然而,它是最后打印日志的。
这是因为在浏览器中,我们不仅有运行时引擎,还有一个叫做 WebAPI
的东西。WebAPI
提供了 setTimeout
函数,也包含其他的,例如 DOM。
将 callback 推送到 WebAPI 后,setTimeout
函数本身(但不是回调!)将从栈中弹出。
现在,foo
被调用,打印 "First"
。
foo
从栈中弹出,baz
被调用. 打印 "Third"
。
WebAPI 不能随时向栈内添加内容。相反,它将回调函数推到名为 queue 的地方。
这就是事件循环开始工作的地方。一个事件循环查看栈和任务队列。如果栈是空的,它接受队列上的第一个元素并将其推入栈。
bar
被调用,打印 "Second"
,然后它被栈弹出。
好了,以上就是本周的汇总,以后我们每周会汇总一次,相信你会从中找到你喜欢的内容,最后,记得点个在看,转发文章,关注一下我哦。
有用的话,点个“在看”,支持我们↓↓↓
以上是关于js基础面试题131-160道题目的主要内容,如果未能解决你的问题,请参考以下文章