前端JavaScript 面试题汇总

JavaScript 面试题汇总

1. 根据下面 ES6 构造函数的书写方式,要求写出 ES5

class Example {
  constructor(name) {
    this.name = name;
  }
  init() {
    const fun = () => {
      console.log(this.name);
    };
    fun();
  }
}
const e = new Example('Hello');
e.init();

2. 数组去重有哪些方法?(美团 19 年)

3. 描述下列代码的执行结果

foo(typeof a);
function foo(p) {
  console.log(this);
  console.log(p);
  console.log(typeof b);
  let b = 0;
}

4. 描述下列代码的执行结果

class Foo {
  constructor(arr) {
    this.arr = arr;
  }
  bar(n) {
    return this.arr.slice(0, n);
  }
}
var f = new Foo([0, 1, 2, 3]);
console.log(f.bar(1));
console.log(f.bar(2).splice(1, 1));
console.log(f.arr);

5. 描述下列代码的执行结果

01 function f(count) {
02    console.log(`foo${count}`);
03    setTimeout(() => { console.log(`bar${count}`); });
04 }
05 f(1);
06 f(2);
07 setTimeout(() => { f(3); });

6. 描述下列代码的执行结果

var a = 2;
var b = 5;
console.log(a === 2 || (1 && b === 3) || 4);

7. 描述下列代码的执行结果

export class ButtonWrapper {
  constructor(domBtnEl, hash) {
    this.domBtnEl = domBtnEl;
    this.hash = hash;
    this.bindEvent();
  }
  bindEvent() {
    this.domBtnEl.addEventListener('click', this.clickEvent, false);
  }
  detachEvent() {
    this.domBtnEl.removeEventListener('click', this.clickEvent);
  }
  clickEvent() {
    console.log(`The hash of the button is: ${this.hash}`);
  }
}

8. 箭头函数有哪些特点

9. 说一说类的继承

10. new 操作符都做了哪些事?

11. call、apply、bind 的区别 ?

12. 事件循环机制(宏任务、微任务)

13. 你了解 node 中的事件循环机制吗?node11 版本以后有什么改变

14. 什么是函数柯里化?

15. promise.all 方法的使用场景?数组中必须每一项都是 promise 对象吗?不是 promise 对象会如何处理 ?

16. this 的指向哪几种 ?

17. JS 中继承实现的几种方式

18. 什么是事件监听

19. 什么是 js 的闭包?有什么作用?

20. 事件委托以及冒泡原理

21. let const var 的区别?什么是块级作用域?如何用?

22. ES5 的方法实现块级作用域(立即执行函数) ES6 呢?

23. ES6 箭头函数的特性

24. 箭头函数与普通函数的区别 ?

25. JS 的基本数据类型有哪些?基本数据类型和引用数据类型的区别

26. NaN 是什么的缩写

27. JS 的作用域类型

28. undefined==null 返回的结果是什么?undefinednull 的区别在哪?

29. 写一个函数判断变量类型

30. js 的异步处理函数

31. deferasync 的区别

32. 浏览器事件循环和任务队列

33. 原型与原型链 (美团 19 年)

34. 作用域与作用域链 (美团 19 年)

35. 闭包及应用场景以及闭包缺点 (美团 19 年)

36. 继承方式 (美团 19 年)

37. 原始值与引用值 (美团 19 年)

38. 描述下列代码的执行结果

const first = () =>
  new Promise((resolve, reject) => {
    console.log(3);
    let p = new Promise((resolve, reject) => {
      console.log(7);
      setTimeout(() => {
        console.log(1);
      }, 0);
      setTimeout(() => {
        console.log(2);
        resolve(3);
      }, 0);
      resolve(4);
    });
    resolve(2);
    p.then((arg) => {
      console.log(arg, 5); // 1 bb
    });
    setTimeout(() => {
      console.log(6);
    }, 0);
  });
first().then((arg) => {
  console.log(arg, 7); // 2 aa
  setTimeout(() => {
    console.log(8);
  }, 0);
});
setTimeout(() => {
  console.log(9);
}, 0);
console.log(10);

39. 如何判断数组或对象(美团 19 年)

40. 对象深拷贝与浅拷贝,单独问了 Object.assign(美团 19 年)

42. 说说 instanceof 原理,并回答下面的题目(美团 19 年)

function A() {}
function B() {}
A.prototype = new B();
let a = new A();
console.log(a instanceof B); // true of false ?

###

43. 内存泄漏(美团 19 年)

44. ES6 新增哪些东西?让你自己说(美团 19 年)

45. weakmap、weakset(美团 19 年)

46. 为什么 ES6 会新增 Promise(美团 19 年)

47. ES5 实现继承?(虾皮)

48. 科里化?(搜狗)

49. 防抖和节流?(虾皮)

50. 闭包?(好未来---探讨了 40 分钟)

51. 原型和原型链?(字节)

52. 排序算法---(时间复杂度、空间复杂度)

53. 浏览器事件循环和 node 事件循环(搜狗)

54. 闭包的好处

55. let、const、var 的区别

56. 闭包、作用域(可以扩充到作用域链)

57. Promise

58. 实现一个函数,对一个 url 进行请求,失败就再次请求,超过最大次数就走失败回调,任何一次成功都走成功回调

59. 冒泡排序

60. 数组降维

61. call apply bind

62. promise 代码题

new Promise((resolve, reject) => {
  reject(1);
  console.log(2);
  resolve(3);
  console.log(4);
})
  .then((res) => {
    console.log(res);
  })
  .catch((res) => {
    console.log('reject1');
  });
try {
  new Promise((resolve, reject) => {
    throw 'error';
  })
    .then((res) => {
      console.log(res);
    })
    .catch((res) => {
      console.log('reject2');
    });
} catch (err) {
  console.log(err);
}

63. proxy 是实现代理,可以改变 js 底层的实现方式, 然后说了一下和 Object.defineProperty 的区别

64. 使用 ES5ES6 分别实现继承

65. 深拷贝

66. asyncawait 的作用

67. 数据的基础类型(原始类型)有哪些

68. typeof null 返回结果

69. 对变量进行类型判断的方式有哪些

70. typeofinstanceof 的区别? instanceof 是如何实现?

71. 引用类型有哪些,有什么特点

72. 如何得到一个变量的类型---指函数封装实现

73. 什么是作用域、闭包

74. 闭包的缺点是什么?闭包的应用场景有哪些?怎么销毁闭包?

75. JS的垃圾回收站机制

76. 什么是作用域链、原型链

77. new 一个构造函数发生了什么

78. 对一个构造函数实例化后. 它的原型链指向什么

79. 什么是变量提升

80. == 和 === 的区别是什么

81. Object.is 方法比较的是什么

82. 基础数据类型和引用数据类型,哪个是保存在栈内存中?哪个是在堆内存中?

83. 箭头函数解决了什么问题?

84. new 一个箭头函数后,它的 this 指向什么?

85. promise 的其他方法有用过吗?如 all、race。请说下这两者的区别

86. class 是如何实现的

87. let、const、var 的区别

88. ES6 中模块化导入和导出与 common.js 有什么区别

89. 说一下普通函数和箭头函数的区别

90. 说一下 promiseasyncawait 什么关系

91. 说一下你学习过的有关 ES6 的知识点

92. 了解过 jsarguments 吗?接收的是实参还是形参?

93. ES6 相比于 ES5 有什么变化

94. 强制类型转换方法有哪些?

95. 纯函数

96. JS 模块化

97. 看过 jquery 源码吗?

98. 说一下 js 中的 this

99. apply call bind 区别,手写

100. 手写 reduce flat

101. == 隐试转换的原理?是怎么转换的

102. ['1', '2', '3'].map(parseInt) 结果是什么,为什么 (字节)

103. 防抖,节流是什么,如何实现 (字节)

104. 介绍下 Set、Map、WeakSetWeakMap 的区别(字节)

105. setTimeout、Promise、Async/Await 的区别(字节)

106. Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?(字节)

107. 情人节福利题,如何实现一个 new (字节)

let Parent = function (name, age) { this.name = name; this.age = age; }; Parent.prototype.sayName = function () { console.log(this.name); }; //自己定义的 new 方法 let newMethod = function (Parent, ...rest) { // 1.以构造器的 prototype 属性为原型,创建新对象; let child = Object.create(Parent.prototype); // 2.将 this 和调用参数传给构造器执行 let result = Parent.apply(child, rest); // 3.如果构造器没有手动返回对象,则返回第一步的对象 return typeof result === 'object' ? result : child; }; //创建实例,将构造函数 Parent 与形参作为参数传入 const child = newMethod(Parent, 'echo', 26); child.sayName() //'echo'; //最后检验,与使用 new 的效果相同 console.log(child instanceof Parent)//true console.log(child.hasOwnProperty('name'))//true console.log(child.hasOwnProperty('age'))//true console.log(child.hasOwnProperty('sayName'))//false

108. 实现一个 sleep 函数(字节)

109. 使用 sort() 对数组 [3, 15, 8, 29, 102, 22] 进行排序,输出结果 (字节)

110. 实现 5.add(3).sub(2) (百度)

111. 给定两个数组,求交集

112. 为什么普通 for 循环的性能远远高于 forEach 的性能,请解释其中的原因。

113. 实现一个字符串匹配算法,从长度为 n 的字符串 S 中,查找是否存在字符串 T,T 的长度是 m,若存在返回所在位置。

114. 使用 JavaScript Proxy 实现简单的数据绑定

115. 数组里面有 10 万个数据,取第一个元素和第 10 万个元素的时间相差多少(字节)

116. 打印出 1~10000 以内的对称数

117. 简述同步和异步的区别

118. 怎么添加、移除、复制、创建、和查找节点

119. 实现一个函数 clone 可以对 Javascript 中的五种主要数据类型(Number、string、 Object、Array、Boolean)进行复制

120. 如何消除一个数组里面重复的元素

121. 写一个返回闭包的函数

122. 使用递归完成 1 到 100 的累加

123. Javascript 有哪几种数据类型

124. 如何判断数据类型

125. console.log(1+'2')和 console.log(1-'2')的打印结果

126. JS 的事件委托是什么,原理是什么

127. 如何改变函数内部的 this 指针的指向

128. JS 延迟加载的方式有哪些?

129. 说说严格模式的限制

130. attributeproperty 的区别是什么?

131. ES6 能写 class 么,为什么会出现 class 这种东西?

132. 常见兼容性问题

133. 函数防抖节流的原理

134. 原始类型有哪几种?null 是对象吗?

135. 为什么 console.log(0.2+0.1==0.3) // false

136. 说一下 JS 中类型转换的规则?

137. 深拷贝和浅拷贝的区别?如何实现

138. 如何判断 this?箭头函数的 this 是什么

139. call、apply 以及 bind 函数内部实现是怎么样的

140. 为什么会出现 setTimeout 倒计时误差?如何减少

141. 谈谈你对 JS 执行上下文栈和作用域链的理解

142. new 的原理是什么?通过 new 的方式创建对象和通过字面量创建有什么区别?

143. prototype 和 __proto__ 区别是什么?

144. 使用 ES5 实现一个继承?

145. 取数组的最大值(ES5、ES6

146. ES6 新的特性有哪些?

147. Promise 有几种状态, Promise 有什么优缺点 ?

148. Promise 构造函数是同步还是异步执行,then 呢 ? Promise 如何实现 then 处理 ?

149. PromisesetTimeout 的区别 ?

150. 如何实现 Promise.all ?

151. 如何实现 Promise.finally ?

152. 如何判断 img 加载完成

153. 如何阻止冒泡?

154. 如何阻止默认事件?

155. 如何用原生 js 给一个按钮绑定两个 onclick 事件?

156. 拖拽会用到哪些事件

157. document.writeinnerHTML 的区别

158. jQuery 的事件委托方法 bind 、live、delegate、one、on 之间有什么区别?

159. $(document).ready 方法和 window.onload 有什么区别?

160. jquery 中$.get()提交和$.post()提交有区别吗?

161. await async 如何实现 (阿里)

162. clientWidth,offsetWidth,scrollWidth 的区别

163. 产生一个不重复的随机数组

164. continuebreak 的区别

165. 如何在 jquery 上扩展插件,以及内部原理(腾讯)

166. async/await 如何捕获错误

167. Proxy 对比 Object.defineProperty 的优势

168. 原型链,可以改变原型链的规则吗?

169. 讲一讲继承的所有方式都有什么?手写一个寄生组合式继承

170. JS 基本数据类型有哪些?栈和堆有什么区别,为什么要这样存储。(快手)

171. setTimeout(() => {}, 0) 什么时候执行

172. js 有函数重载吗(网易)

173. 给你一个数组,计算每个数出现的次数,如果每个数组返回的数都是独一无二的就返回 true 相反则返回的 flase

174. 封装一个能够统计重复的字符的函数,例如 aaabbbdddddfff 转化为 3a3b5d3f

175. 写出代码的执行结果,并解释为什么?

function a() {
  console.log(1);
}
(function () {
  if (false) {
    function a() {
      console.log(2);
    }
  }
  console.log(typeof a);
  a();
})();

176. 写出代码的执行结果,并解释为什么?

alert(a);
a();
var a = 3;
function a() {
  alert(10);
}
alert(a);
a = 6;
a();

177. 写出下面程序的打印顺序,并简要说明原因

setTimeout(function () {
  console.log('set1');
  new Promise(function (resolve) {
    resolve();
  }).then(function () {
    new Promise(function (resolve) {
      resolve();
    }).then(function () {
      console.log('then4');
    });
    console.log('then2');
  });
});
new Promise(function (resolve) {
  console.log('pr1');
  resolve();
}).then(function () {
  console.log('then1');
});

setTimeout(function () {
  console.log('set2');
});
console.log(2);

new Promise(function (resolve) {
  resolve();
}).then(function () {
  console.log('then3');
});

178. javascript 中什么是伪数组?如何将伪数组转换为标准数组

179. arrayobject 的区别

180. jquery 事件委托

181. JS 基本数据类型

182. 请实现一个模块 math,支持链式调用math.add(2,4).minus(3).times(2);

183. 请简述 ES6 代码转成 ES5 代码的实现思路。

184. 下列代码的执行结果

async function async1() {
  console.log('async1 start');
  await async2();
  console.log('async1 end');
}
async function async2() {
  console.log('async2');
}
console.log('script start');
setTimeout(function () {
  console.log('setTimeout');
}, 0);
async1();
new Promise(function (resolve) {
  console.log('promise1');
  resolve();
}).then(function () {
  console.log('promise2');
});
console.log('script end');

185. JS 有哪些内置对象?

186. DOM 怎样添加、移除、移动、复制、创建和查找节点

187. eval 是做什么的?

188. nullundefined 的区别?

189. new 操作符具体干了什么呢?

190. 去除字符串中的空格

191. 常见的内存泄露,以及解决方案

192. 箭头函数和普通函数里面的 this 有什么区别

193. 设计⼀个⽅法(isPalindrom)以判断是否回⽂(颠倒后的字符串和原来的字符串⼀样为回⽂)

194. 设计⼀个⽅法(findMaxDuplicateChar)以统计字符串中出现最多次数的字符

195. 设计⼀段代码,使得通过点击按钮可以在 span 中显示⽂本框中输⼊的值

196. mapforEach 的区别?

197. Array 的常用方法

198. 数组去重的多种实现方式

199. 什么是预解析(预编译)

200. 原始值类型和引用值类型的区别是什么?

201. 冒泡排序的思路,不用 sort

202. symbol 用途

203. 什么是函数式编程,应用场景是什么

204. 事件以及事件相关的兼容性问题

205. JS 小数不精准,如何计算

206. 写一个 mySetInterVal(fn, a, b),每次间隔 a,a+b,a+2b 的时间,然后写一个 myClear,停止上面的 mySetInterVal

207. 合并二维有序数组成一维有序数组,归并排序的思路

208. 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。

209. 有一堆整数,请把他们分成三份,确保每一份和尽量相等(11,42,23,4,5,6 4 5 6 11 23 42 56 78 90)(滴滴 2020)

210. 手写发布订阅(头条 2020)

211. 手写用 ES6proxy 如何实现 arr[-1] 的访问(滴滴 2020)

212. 下列代码执行结果

console.log(1);
setTimeout(() => {
  console.log(2);
  process.nextTick(() => {
    console.log(3);
  });
  new Promise((resolve) => {
    console.log(4);
    resolve();
  }).then(() => {
    console.log(5);
  });
});
new Promise((resolve) => {
  console.log(7);
  resolve();
}).then(() => {
  console.log(8);
});
process.nextTick(() => {
  console.log(6);
});
setTimeout(() => {
  console.log(9);
  process.nextTick(() => {
    console.log(10);
  });
  new Promise((resolve) => {
    console.log(11);
    resolve();
  }).then(() => {
    console.log(12);
  });
});

213. Number() 的存储空间是多大?如果后台发送了一个超过最大自己的数字怎么办

214. 事件是如何实现的?(字节 2020)

215. 下列代码执行结果

Promise.resolve()
  .then(() => {
    console.log(0);
    return Promise.resolve(4);
  })
  .then((res) => {
    console.log(res);
  });

Promise.resolve()
  .then(() => {
    console.log(1);
  })
  .then(() => {
    console.log(2);
  })
  .then(() => {
    console.log(3);
  })
  .then(() => {
    console.log(5);
  })
  .then(() => {
    console.log(6);
  });

216. 判断数组的方法,请分别介绍它们之间的区别和优劣

217. JavaScript 中的数组和函数在内存中是如何存储的?

218. JavaScript 是如何运行的?解释型语言和编译型语言的差异是什么?

219. 列举你所了解的编程范式?

220. 什么是面向切面(AOP)的编程?

221. JavaScript 中的 const 数组可以进行 push 操作吗?为什么?

222. JavaScript 中对象的属性描述符有哪些?分别有什么作用?

223. JavaScriptconsole 有哪些 api ?

224. 简单对比一下 Callback、Promise、Generator、Async 几个异步 API 的优劣?

225. Object.defineProperty 有哪几个参数?各自都有什么作用

226. Object.definePropertyES6Proxy 有什么区别?

227. intanceof 操作符的实现原理及实现

228. 强制类型转换规则?

229. Object.is( ) 与比较操作符 “===”、“==” 的区别

230. + 操作符什么时候用于字符串的拼接?

231. object.assign 和扩展运算法是深拷贝还是浅拷贝

232. const 对象的属性可以修改吗

233. 如果 new 一个箭头函数的会怎么样

234. 扩展运算符的作用及使用场景

235. Proxy 可以实现什么功能?

236. 对象与数组的解构的理解

237. 如何提取高度嵌套的对象里的指定属性?

238. Unicode、UTF-8、UTF-16、UTF-32 的区别?

239. 为什么函数的 arguments 参数是类数组而不是数组?如何遍历类数组?

240. escape、encodeURI、encodeURIComponent 的区别

241. use strict 是什么意思 ? 使用它区别是什么?

242. for...infor...of 的区别

243. ajax、axios、fetch 的区别

244. 下面代码的输出是什么?( D

function sayHi() {
  console.log(name);
  console.log(age);
  var name = 'Lydia';
  let age = 21;
}

sayHi();
  • A: Lydiaundefined

  • B: LydiaReferenceError

  • C: ReferenceError21

  • D: undefinedReferenceError

245. 下面代码的输出是什么?( C

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
  • A: 0 1 20 1 2

  • B: 0 1 23 3 3

  • C: 3 3 30 1 2

246. 下面代码的输出是什么?( B

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2;
  },
  perimeter: () => 2 * Math.PI * this.radius,
};

shape.diameter();
shape.perimeter();
  • A: 2062.83185307179586

  • B: 20NaN

  • C: 2063

  • D: NaN63

247. 下面代码的输出是什么?( A

+true;
!"Lydia";
  • A: 1false

  • B: falseNaN

  • C: falsefalse

248. 哪个选项是不正确的?( A

const bird = {
  size: 'small',
};

const mouse = {
  name: 'Mickey',
  small: true,
};
  • A: mouse.bird.size

  • B: mouse[bird.size]

  • C: mouse[bird["size"]]

  • D: 以上选项都对

249. 下面代码的输出是什么?( A

let c = { greeting: 'Hey!' };
let d;

d = c;
c.greeting = 'Hello';
console.log(d.greeting);
  • A: Hello

  • B: undefined

  • C: ReferenceError

  • D: TypeError

250. 下面代码的输出是什么?( C

let a = 3;
let b = new Number(3);
let c = 3;

console.log(a == b);
console.log(a === b);
console.log(b === c);
  • A: true false true

  • B: false false true

  • C: true false false

  • D: false true true

251. 下面代码的输出是什么?( D

class Chameleon {
  static colorChange(newColor) {
    this.newColor = newColor;
  }

  constructor({ newColor = 'green' } = {}) {
    this.newColor = newColor;
  }
}

const freddie = new Chameleon({ newColor: 'purple' });
freddie.colorChange('orange');
  • A: orange

  • B: purple

  • C: green

  • D: TypeError

252. 下面代码的输出是什么?( A

let greeting;
greetign = {}; // Typo!
console.log(greetign);
  • A: {}

  • B: ReferenceError: greetign is not defined

  • C: undefined

253. 当我们执行以下代码时会发生什么?( A

function bark() {
  console.log('Woof!');
}

bark.animal = 'dog';
  • A 什么都不会发生

  • B: SyntaxError. You cannot add properties to a function this way.

  • C: undefined

  • D: ReferenceError

分析:

因为函数也是对象!(原始类型之外的所有东西都是对象)

函数是一种特殊类型的对象,我们可以给函数添加属性,且此属性是可调用的。

254. 下面代码的输出是什么?( A

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const member = new Person('Lydia', 'Hallie');
Person.getFullName = () => this.firstName + this.lastName;

console.log(member.getFullName());
  • A: TypeError

  • B: SyntaxError

  • C: Lydia Hallie

  • D: undefined undefined

255. 下面代码的输出是什么?( A

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const lydia = new Person('Lydia', 'Hallie');
const sarah = Person('Sarah', 'Smith');

console.log(lydia);
console.log(sarah);
  • A: Person { firstName: "Lydia", lastName: "Hallie" }undefined

  • B: Person { firstName: "Lydia", lastName: "Hallie" }Person { firstName: "Sarah", lastName: "Smith" }

  • C: Person { firstName: "Lydia", lastName: "Hallie" }{}

  • D: Person { firstName: "Lydia", lastName: "Hallie" }ReferenceError

256. 事件传播的三个阶段是什么?( D

  • A: 目标 > 捕获 > 冒泡

  • B: 冒泡 > 目标 > 捕获

  • C: 目标 > 冒泡 > 捕获

  • D: 捕获 > 目标 > 冒泡

257. 下面代码的输出是什么?( C

function sum(a, b) {
  return a + b;
}

sum(1, '2');
  • A: NaN

  • B: TypeError

  • C: "12"

  • D: 3

258. 下面代码的输出是什么?( C

let number = 0;
console.log(number++);
console.log(++number);
console.log(number);
  • A: 1 1 2

  • B: 1 2 2

  • C: 0 2 2

  • D: 0 1 2

259. 下面代码的输出是什么?( B

function getPersonInfo(one, two, three) {
  console.log(one);
  console.log(two);
  console.log(three);
}

const person = 'Lydia';
const age = 21;

getPersonInfo`${person} is ${age} years old`;
  • A: Lydia 21 ["", "is", "years old"]

  • B: ["", "is", "years old"] Lydia 21

  • C: Lydia ["", "is", "years old"] 21

260. 下面代码的输出是什么?( C

function checkAge(data) {
  if (data === { age: 18 }) {
    console.log('You are an adult!');
  } else if (data == { age: 18 }) {
    console.log('You are still an adult.');
  } else {
    console.log(`Hmm.. You don't have an age I guess`);
  }
}

checkAge({ age: 18 });
  • A: You are an adult!

  • B: You are still an adult.

  • C: Hmm.. You don't have an age I guess

261. 下面代码的输出是什么?( C

function getAge(...args) {
  console.log(typeof args);
}

getAge(21);
  • A: "number"

  • B: "array"

  • C: "object"

  • D: "NaN"

262. 下面代码的输出是什么?( C

function getAge() {
  'use strict';
  age = 21;
  console.log(age);
}

getAge();
  • A: 21

  • B: undefined

  • C: ReferenceError

  • D: TypeError

263. 下面代码的输出是什么?( A

const sum = eval('10*10+5');
  • A: 105

  • B: "105"

  • C: TypeError

  • D: "10*10+5"

264. cool_secret 可以访问多长时间?( B

sessionStorage.setItem('cool_secret', 123);
  • A:永远,数据不会丢失。

  • B:用户关闭选项卡时。

  • C:当用户关闭整个浏览器时,不仅是选项卡。

  • D:用户关闭计算机时。

265. 下面代码的输出是什么?( B

var num = 8;
var num = 10;

console.log(num);
  • A: 8

  • B: 10

  • C: SyntaxError

  • D: ReferenceError

266. 下面代码的输出是什么?( C

const obj = { 1: 'a', 2: 'b', 3: 'c' };
const set = new Set([1, 2, 3, 4, 5]);

obj.hasOwnProperty('1');
obj.hasOwnProperty(1);
set.has('1');
set.has(1);
  • A: false true false true

  • B: false true true true

  • C: true true false true

  • D: true true true true

267. 下面代码的输出是什么?( C

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

268. 下面代码的输出是什么?( C

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

269. 下面代码的输出是什么?( A

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

270. 下面代码的输出是什么?( B

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

271. 下面代码的输出是什么?( B

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

272. 单击按钮时 event.target 是什么?( C

<div οnclick="console.log('first div')">
  <div οnclick="console.log('second div')">
    <button οnclick="console.log('button')">Click!</button>
  </div>
</div>
  • A: div 外部

  • B: div 内部

  • C: button

  • D: 所有嵌套元素的数组

273. 单击下面的 html 片段打印的内容是什么?( A

<div οnclick="console.log('div')">
  <p οnclick="console.log('p')">Click here!</p>
</div>
  • A: p div

  • B: div p

  • C: p

  • D: div

274. 下面代码的输出是什么?( D

const person = { name: 'Lydia' };

function sayHi(age) {
  console.log(`${this.name} is ${age}`);
}

sayHi.call(person, 21);
sayHi.bind(person, 21);
  • A: undefined is 21 Lydia is 21

  • B: function function

  • C: Lydia is 21 Lydia is 21

  • D: Lydia is 21 function

275. 下面代码的输出是什么?( B

function sayHi() {
  return (() => 0)();
}

typeof sayHi();
  • A: "object"

  • B: "number"

  • C: "function"

  • D: "undefined"

276. 下面这些值哪些是假值?( A

0;
new Number(0);
('');
(' ');
new Boolean(false);
undefined;
  • A: 0 "" undefined

  • B: 0 new Number(0) "" new Boolean(false) undefined

  • C: 0 "" new Boolean(false) undefined

  • D: 所有都是假值。

278. 下面代码的输出是什么?( B

console.log(typeof typeof 1);
  • A: "number"

  • B: "string"

  • C: "object"

  • D: "undefined"

279. 下面代码的输出是什么?( C

const numbers = [1, 2, 3];
numbers[10] = 11;
console.log(numbers);
  • A: [1, 2, 3, 7 x null, 11]

  • B: [1, 2, 3, 11]

  • C: [1, 2, 3, 7 x empty, 11]

  • D: SyntaxError

280. 下面代码的输出是什么?( A

(() => {
  let x, y;
  try {
    throw new Error();
  } catch (x) {
    (x = 1), (y = 2);
    console.log(x);
  }
  console.log(x);
  console.log(y);
})();
  • A: 1 undefined 2

  • B: undefined undefined undefined

  • C: 1 1 2

  • D: 1 undefined undefined

281. JavaScript 中的所有内容都是…( A

  • A:原始或对象

  • B:函数或对象

  • C:技巧问题!只有对象

  • D:数字或对象

282. 下面代码的输出是什么?

[
  [0, 1],
  [2, 3],
].reduce(
  (acc, cur) => {
    return acc.concat(cur);
  },
  [1, 2]
);
  • A: [0, 1, 2, 3, 1, 2]

  • B: [6, 1, 2]

  • C: [1, 2, 0, 1, 2, 3]

  • D: [1, 2, 6]

283. 下面代码的输出是什么?( B

!!null;
!!'';
!!1;
  • A: false true false

  • B: false false true

  • C: false true true

  • D: true true false

284. setInterval 方法的返回值什么?( A

setInterval(() => console.log('Hi'), 1000);
  • A:一个唯一的 id

  • B:指定的毫秒数

  • C:传递的函数

  • D:undefined

285. 下面代码的返回值是什么?( A

[...'Lydia'];
  • A: ["L", "y", "d", "i", "a"]

  • B: ["Lydia"]

  • C: [[], "Lydia"]

  • D: [["L", "y", "d", "i", "a"]]

286. document.writeinnerHTML 有哪些区别?

287. 假设有两个变量 ab,他们的值都是数字,如何在不借用第三个变量的情况下,将两个变量的值对调?

288. 前端为什么提倡模块化开发?

289. 请解释 JSONP 的原理,并用代码描述其过程。

290. 列举几种 JavaScript 中数据类型的强制转换和隐式转换。

291. 分析以下代码的执行结果并解释为什么。

var a = { n: 1 };
var b = a;
a.x = a = { n: 2 };

console.log(a.x);
console.log(b.x);

292. 分析以下代码的执行结果并解释为什么。

// example 1
var a = {},
  b = '123',
  c = 123;
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);

// example 2
var a = {},
  b = Symbol('123'),
  c = Symbol('123');
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);

// example 3
var a = {},
  b = { key: '123' },
  c = { key: '456' };
a[b] = 'b';
a[c] = 'c';
console.log(a[b]);

293. 下面的代码打印什么内容?为什么?

var b = 10;
(function b() {
  b = 20;
  console.log(b);
})();

294. 下面代码中,a 在什么情况下会执行输出语句打印 1

var a = ?;
if(a == 1 && a == 2 && a == 3){
 	console.log(1);
}

295. 介绍前端模块化的发展。

296. 请指出 document.onload 和 document.ready 两个事件的区别

297. 表单元素的readonlydisabled 两个属性有什么区别?

298. 列举几种你知道的数组排序的方法。

299. 区分什么是“客户区坐标”、“页面坐标”、“屏幕坐标”?

300. 如何编写高性能的 JavaScript

301. 下面的代码输出什么?

var a = function () {
  return 5;
};
a.toString = function () {
  return 3;
};
console.log(a + 7);
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值