拼多多2019秋招前端在线笔试题部分解答

版权声明:转载请注明出处 https://blog.csdn.net/xuyangxinlei/article/details/81457113

下面代码输入的是什么?

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

答案:456

首先a声明为一个对象,b和c也是对象,执行a[b] = 123时,b会转成字符串(调用toString()方法)来当作a对象的键,b.toString() === '[object Object]',所以a对象此时是这样的  a = {'[object Object]':123},同理可知,c也是一个对象,所以a[c] = 456执行,其实也是a['[object Object]'] = 456,把原本的123覆盖了,故输出a[b]也就是输出a['[object Object]'],输出456。

有哪些方法可以改变this的指向?

答案:bind call apply (with)

前三个不用多提,最典型的改变this指向,用另一个对象来调用该函数,with不确定算不算,题目所说有哪些"方法",这个"方法"若是指"函数",那么with是一个关键字而不是函数。

以下代码会输出什么?

(function(x){
    return (function(y){
        console.log(x);
    })(2)
})(1);

答案:1

很简单,一个自执行函数返回了一个自执行函数,所以二者都会顺利执行,外层函数1当作x传入,内层函数2当作2传入,内层函数可以访问外层函数的变量,打印的x就是1 。

产生跨域的原因是什么,如何解决?

答案:原因:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。

解决方案:1、通过jsonp跨域(仅支持get) 2、window.name(大小限制,不安全) 3、CORS

什么是伪数组?如何将其转换为标准数组?

答案:犹如function内的arguments,具有length属性,按索引方式储存数据,且不具有数组的push,pop等方法,称之为伪数组。使用 var newArray = Array.prototype.slice.call(arguments);即可转换为标准数组。

如何截取一个小数的整数部分?

A:Math.floor()  B:Math.ceil()  C:Math.round()  D:parseInt()

答案:A是向下取整,B是向上取整,C是四舍五入,D才是舍去小数截取整数,选D。

<p>哈哈</p>

给以上元素设置margin-bottom : -5px后,会发生什么?

答案:后面的元素会向上移动5px。

猜你喜欢

转载自blog.csdn.net/xuyangxinlei/article/details/81457113