前端面试题·甄选(延续更新)

2019.04.23 已知以下代码,怎样修正才能让图片宽度为 300px ?注重下面代码不可修正

<img src="1.jpg" style="width:480px!important;”>

解决方案:

  • css3的缩放:

    transform(scale(0.625, 0.625));
  • js:

    document.getElementsByTagName("img")[0].setAttribute("style","width:300px!important;")
  • css: max-width: 300px; (这个我当时没想到…)
  • css: box-sizing: border-box; padding-left: 90px; padding-right: 90px; (这个我当时也没想到…)

2019.03.22 Promise 组织函数是同步实行照样异步实行,那末 then 要领呢?

这个很明显,promise组织函数是同步实行的,then要领是异步实行的。
我从回复当选了个轻微复杂点的例子:

const promise = new Promise((resolve, reject) => {
  console.log(1);
  resolve(5);
  console.log(2);
}).then(val => {
  console.log(val);
});

promise.then(() => {
  console.log(3);
});

console.log(4);

setTimeout(function() {
  console.log(6);
});
//实行效果: 124536

这里会牵扯一个宏使命(macrotask)和微使命(microtask)的实行递次题目,进而牵出javascript事宜轮回(EventLoop)。

上干货:
这一次,完全弄懂 JavaScript 实行机制,阮一峰
JavaScript 运转机制详解:再谈Event Loop
这个题,很主要

不想看的也能够直接看这里:

先实行一个宏使命(实在运转js的时刻这个宏使命已经在运转),然后实行微使命,清空微使命行列,再实行宏使命,再实行微使命,清空微使命行列…

罕见的使命范例:

  • 微使命 microtask(jobs): promise / ajax / Object.observe(该要领已烧毁)
  • 宏使命 macrotask(task): setTimout / script / IO / UI Rendering

2019.01.22 ['1', '2', '3'].map(parseInt) what & why ?

答案: 1, NaN, NaN

这道题的变形:

let unary = fn => val => fn(val)
let parse = unary(parseInt)
console.log(['1.1', '2', '0.3'].map(parse))

答案: 1.1, NaN, 0

剖析:

parseInt 定义和用法

  • parseInt() 函数可剖析一个字符串,并返回一个整数
  • 语法

    • parseInt(string, radix)
    • 参数形貌
      string必须。要被剖析的字符串,只转化剖析有用数字为止,小数点算无效的。
      radix可选。示意要剖析的数字的基数。该值介于 2 ~ 36 之间。 假如省略该参数或其值为 0,则数字将以 10 为基本来剖析。假如它以 “0x” 或 “0X” 开首,将以 16 为基数。 假如该参数小于 2 或许大于 36,则 parseInt() 将返回 NaN。

array.map((e, index, arr) => {})比较经常使用, 第一个参数是元素,第二个参数是索引,第三个参数是当前遍历的数组。

答案也就呼之欲出:

parseInt('2', 1) 1不在2~36之间,返回NaN。
parseInt('3', 2) 3不是二进制中的有用数字,返回NaN。

牛刀小试一下:

['10','10','10','10','10'].map(parseInt);
// [10, NaN, 2, 3, 4]

    原文作者:Mr_zhang
    原文地址: https://segmentfault.com/a/1190000019005571
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞