const tom = {
size: 'big'
};
const mouse = {
name: 'jerry',
big: false,
};
A. mouse[tom.size]是无效的 B. mouse.tom.size是无效的 C. mouse[tom['size']]是无效的 D. 三个选项都是有效的
答案:B
解析: JavaScript 中的对象只能使用 String 类型作为键类型。 一般调用对象方式:
mouse.name/mouse['name']; 动态调用对象方式:mouse[tom.size]/mouse[tom['size']]示例查看demo.js/example1()
const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
primeter: () => 2 * Math.PI * this.radius,
};
A. 20 and 62.83185307179586 B. 20 and NaN C. 20 and 63 D. Nan and 63
答案:B
解析:
this指向性问题,详情请参考MDN this 示例查看demo.js/example2()
window.identity = 'The Window';
let object = {
identity: 'My object',
getIdentity() {
return this.identity;
},
};
(object.getIdentity)(); // 1
(object.getIdentity = object.getIdentity)(); // 2
A. 'The Window' 'My object' B. 'My object' 'My object' C. 'My object' 'The Window' D. 'The Window' 'The Window'
答案:C
解析: 1 自执行object.getIdentity()函数 2 赋值表达式的值是函数本身,this值不再与任何对象绑定,所以返回的是The Window。 示例查看
demo.js/example3()/demo.js/example4()
A. 顶部 B. 底部 C. 中间 D. 放在哪都可以
答案:B
解析: 因为JavaScript是单线程语言,而且跟页面渲染公用一个线程,JavaScript在执行的过程中,会阻塞,导致页面不能够渲染。所以我们要把css放在上面,先让页面渲染出来,在对JavaScript执行。 示例查看
demo.js/example5()
const time = new Date();
console.log(time.getDate());
A. 2022 B. 10 C. 24 D. 1
答案:C
解析:
new Date()获取当前时间getDate()返回一个月中的某一天 (1 ~ 31)getDay()返回一周中的某一天 (0 ~ 6)getFullYear()返回以四位数字年份 返回 Date 对象的小时 (0 ~ 23) 返回 Date 对象的毫秒(0 ~ 999) 返回 Date 对象的分钟 (0 ~ 59) 从 Date 对象返回月份 (0 ~ 11) 返回 Date 对象的秒数 (0 ~ 59)。
getHours()getMilliseconds()getMinutes()getMonth()getSeconds()A. 会 B. 不会
答案:A
解析: 在 javascript中,DOM 事件遵循事件冒泡原理,当一个子元素发生了某个事件时,这个事件会沿着 DOM 树向上传播,直到根节点都被检查过了。因此,当你将事件监听器 注册 到一个父元素上时,子元素的事件也会传递到父元素上,并触发父元素的事件监听器。这就是所谓的事件委托,它可以提高性能和 代码的可维护性。
A. 创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型 B. 属性和方法被加入到this 引用的对象中 C. 重写覆盖了原型对象的属性和方法 D. 新创建的对象由this 所引用,并且最后隐式的返回this
答案:A
//initState部分源码
export function initState (vm: Component){
vm._watchers = []
conet opts = vm.$options
if (opts.props) initProps(vm,opts.props)
if (opts.methods) initMethods(vm,opts.methods)
if (opts.data){
initData(vm)
} else {
observe(vm._data = {}, true /* asRootData */)
}
if (opts.computed) initComputed(vm,opts.computed)
if (opts.watch && opts.watch != nativeWatch) {
initWatch(vm,opts.watch)
}
A. Vue为了保证每个实例上的data数据的独立性,规定了必须使用函数,而不是对象 B. 对象是对于内存地址的引用,data直接定义个对象的话组件之间都会使用这个对象,这样会造成组件之间数据相互影响。 C. vue中data的属性不可以和methods中方法同名 D. initState函数内部执行的顺序:props<methods<data<computed<watch
答案:D
解析:
A. 在使用=>定义函数的时候,继承当前上下文的this关键字 B. 不能够使用构造方法,这就是说,不能使用new命令,否则就会抛出一个错误 C. 可以使用函数内置的arguments对象获取参数 D. 可以使用yield指令
答案:AB
解析: 函数体内的 this 对象,就是定义时所在的对象,而不是使用时所在的对象 不可以当作构造函数,也就是说,不可以使用 new 命令,否则会报错误 不可以使用 arguments 对象,该对象在箭头函数体内不存在 不可以使用 yield 命令,因此箭头函数不能用作构造函数
A. export default 在一个模块里只能有一个,但是export 可以有多个 B. export在一个模块里只能有一个,但是export default 可以有多个 C. 模块中通过export导出的(属性或者方法)可以修改,但是通过export default导出的不可以修改 D. 模块中通过export default 导出的(属性或者方法)可以修改,但是通过export导出的不可以修改。
答案:AC
解析:
1/ 使用 Async/Await
使用 async/await 可以使异步代码看起来更像同步代码,可以按顺序等待每个异步操作完成。(缺点无法同时发起请求)
2/ 使用 Promise.all
如果你不需要等待前一个请求完成才开始下一个请求,而只是想按顺序输出结果,那么可以同时开始所有的异步操作,并使用 Promise.all 来处理这些操作完成后的结果
Promise.all([
fetch('url1').then(response => response.json()),
fetch('url2').then(response => response.json()),
// ...其他请求
fetch('url5').then(response => response.json()),
]).then((responses) => {
// responses 数组包含了所有请求按顺序的结果
responses.forEach(response => console.log(response));
});
3/ 使用 Promise 链
如果你需要逐个请求,并在一个请求完成后开始下一个请求,同时要按顺序输出结果,那么你可以创建一个 Promise 链。(代码不优雅)
高阶函数(Higher-order Function)是指可以接受一个或多个函数作为参数,并且可以返回一个函数作为结果的函数 高阶函数可以帮助我们实现代码的复用和抽象。
高阶函数可以提高代码的复用性和可读性,从而间接地提高性能。具体来说,高阶函数可以通过以下几种方式提高性能: 1、减少重复代码:高阶函数可以把一些通用的代码抽象出来,避免在不同的地方重复编写相似的代码。这样可以减少代码量,同时也减少了可能出错的代码段。 2、简化代码逻辑:高阶函数可以把一些复杂的逻辑封装在一个函数中,使得代码看起来更加简洁明了。这样不仅减少了代码量,还可以提高代码的可读性和可维护性。 3、提高代码的可扩展性:高阶函数可以为整个应用程序提供一些通用的功能,使得代码更加灵活。当需要添加新功能时,可以很方便地在现有的高阶函数上进行扩展。
提示: 1.相似系统:页面展示和页面元素展示存在差异,其他都一样 2.考虑字体库、打包体积、系统和语言的图片差异、页面元素显示和隐盟后的排版问 题、新增需求时如何最高效保证9套系统的影响性等问题 保证系统打包后的纯洁性(图片、页面、页面元素、字体库只与当前系统相关)
示例: 输入:s="cabca” 输出: solution(s) = 3 解释: “cabca”可以被循环字符串”cabcabcabcab~连