选择题
display 属性的常用值不包括?
Answer©
A. inline
B. block
C. hidden
D. none
以下代码运行的结果是?
Answer(B)
function changeObjProperty(o) {
o.siteUrl = “http://www.baidu.com”
o = new Object()
o.siteUrl = “http://www.google.com”
}
let webSite = new Object();
changeObjProperty(webSite);
console.log(webSite.siteUrl);
A. http://www.google.com
B. http://www.baidu.com
C. null
D. [object Object]
[typeof null, null instanceof Object] 这些类型的结果是
Answer(A)
A. [“object”, false]
B. [null, false]
C. [“object”, true]
D. other
下列说法正确的是
Answer(AB)
A. 样式文件的加载会阻塞脚本的执行
B.iframe 会阻塞主页面的 load 事件
C.、 中的资源下载会阻塞页面解析
D. 页面文档完全加载并解析完毕之后会触发 DOMContentLoaded 事件
下列说法正确的是
Answer(ACD)
A. requestAnimationFrame(foo) 确保使浏览器在下一次重绘之前调用 foo 方法
B. 在 addEventListener 的处理方法中使用 e.preventDefault() 可以阻止事件冒泡
C. 把
function demo2() {
return Promise.resolve().then(demo2)
}
Answer
demo 不会,setTimeout 的作用是等待给定的时间后为它的回调产生一个新的宏任务;demo2 会,如果在微任务执行期间微任务队列加入了新的微任务,会将新的微任务加入队列尾部,之后也会被执行
什么是跨域?如何解决?
Answer
跨域限制是浏览器特有的行为(服务端不存在),出于安全考虑,浏览器不允许脚本获取其他域下资源
同源:协议、端口、域名(子域之间也存在跨域)三者完全相同,才不会产生跨域问题
解决跨域问题
1.反向代理: 通过同源服务端进行请求代理
2.CORS: 服务端设置header Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methods
3.JSONP: 主要利用script标签开放策略,让服务器端返回可执行的Javascript函数(不常用且只能作用于get请求)
Coding
reverseLowerUpper
/**
- @description 使用 javascript 实现 reverseLowerUpper 方法,对字符串进行大小写反转
- @param {String} 待处理的字符串
- @returns {String} 处理后的字符串
- @example
- reverseLowerUpper(‘AbC’) // return ‘aBc’
- reverseLowerUpper(‘ZZa’) // return ‘zzA’
/
Test Case
describe(‘reverseLowerUpper’, () => {
it(‘test AbcDefGh’, () => expect(reverseLowerUpper(‘AbcDefGh’)).to.be.equal(‘aBCdEFgH’))
it(‘test Notes’, () => expect(reverseLowerUpper(‘Notes’)).to.be.equal(‘nOTES’))
})
preorderTraversal
/* - @description 使用 javascript 实现 preorderTraversal 方法,进行二叉树先序遍历
- @param {Object} 待处理的二叉树结构
- @returns {Array} 遍历后结果
- @example preorderTraversal({
- val: 1,
- left: null,
- right: {
-
val: 2,
-
left: { val: 3, left: null, right: null },
-
right: null,
- },
- }) // return [1, 2, 3]
*/
Test Case
describe(‘preorderTraversal’, () => {
const tests = [
{
input: {
val: 1,
left: null,
right: {
val: 2,
left: { val: 3, left: null, right: null },
right: null,
},
},
output: [1, 2, 3],
},
{
input: {
val: 1,
left: null,
right: {
val: 2,
left: null,
right: {
val: 3,
left: { val: 4, left: null, right: null },
right: null,
},
},
},
output: [1, 2, 3, 4],
},
{
input: {
val: 1,
left: {
val: 2,
left: null,
right: { val: 3, left: null, right: null },
},
right: {
val: 4,
left: null,
right: { val: 5, left: null, right: null },
},
},
output: [1, 2, 3, 4, 5],
},
]
tests.forEach((test) => {
it(test ${test.input}
, () => expect(preorderTraversal(test.input)).to.deep.equal(test.output))
})
})