迅雷前端笔试题

来源:互联网 发布:某路口车流量数据 编辑:程序博客网 时间:2024/05/22 04:56

1.代码

function bar(){   return foo;   foo = 10;   function foo(){}   var foo = 11;}console.log(typeof bar());//函数声明的优先级高于变量
function fun1(){  var n=167;    nAdd=function(){n+=1;}    function fun2(){        return n;    }    return fun2;}var result = fun1(); var a = result();nAdd();var b=result();a,b的值
var foo = 1;function bar(){   foo=10;   return;   function foo(){}}bar();console.log(foo);//bar()

我们可以看到,函数声明被提升至作用域最顶端,然后被赋值为5,而外层的变量并没有被覆盖,经过预编译之后,上面代码的逻辑是这样的:

var foo = 1;function bar(){   var foo;   foo = function foo() {};   foo=10;   return;   }bar();console.log(foo);

所以,函数的优先权是最高的,它永远被提升至作用域最顶部,然后才是函数表达式和变量按顺序执行,这一点要牢记

var x=3; var foo={   x:2,   baz:{    x:1,    bar:function(){     return this.x;        }   }}var go = foo.baz.bar;console.log(go());console.log(foo.baz.bar());//考察this的指向问题
x={};function bar(){  this.x=2;  return x;//关键代码}var foo = new bar(); console.log(foo.x); //return 如何更改了x的值
var obj1={x:5};var obj2=obj1;obj1.a=obj1={x:6};console.log(obj1.a);console.log(obj2.a);

Boolean(null)
Boolean(0’)
Boolean(undefined)
Boolean(0)

(function(){
var b=a=1;
})();
console.log(a);
console.log(b);

(function(){
var x=foo();
var foo = function foo=function(){
return “foobar”;
};
return x;
})();

function show(){};
delete show.length;
console.log(typeof show.length);

str = “this “+50.5

[3,2,1].reduce(Math.pow);
[].reduce(Math.pow);

var a = Array(3);
a[0]=8;
a.map(function(elem){return “2”});

var x=[0];
if([0]){
console.log(x==true);
}else{
console.log(“false”);

if(!!foo){}
if(typeof foo!==’undefined’){}
if(‘foo’ in window){}
foo &&foo();
foo为定义,哪种写法不会报错

new Promise((resolve,reject)=>{
resolve(1);
reject(2);
resolve(3);
return Promise.resolve(4);
}).then(console.log,console.log);

true == ‘true’
Boolean(‘false’);
!NaN
”==0

/[^\d]{2}/g.exec(“1234abcd”);

a[-1]=0

function Foo(){
bar = function(){console.log(1);}
return this;
}
Foo.bar = function(){console.log(2);}
Foo.prototype.bar=function(){console.log(3);}
var bar = function(){console.log(4);}
function bar(){console.log(5);};
Foo.bar();
bar();
Foo.bar();
bar();
Foo.bar();
bar();Foo.bar();
bar();
new Foo.bar();
new Foo().bar();

var obj={};
obj.log=console.log;
obj.log.call(console,this);

0 == NaN
0!=NaN

https://www.nowcoder.com/questionTerminal/46f3dcec50404c51804609bed5b13529?toCommentId=378284

js的内置对象
http://blog.csdn.net/ssisse/article/details/52335693

一些面试题:
http://www.educity.cn/develop/1120912.html
http://www.jb51.net/article/23127.htm

  1. 要动态改变层中内容可以使用的方法有(AB )
    a) innerHTML
    b) innerText
    c) 通过设置层的隐藏和显示来实现
    d) 通过设置层的样式属性的display属性
    http://www.educity.cn/develop/1120912.html

https://zhidao.baidu.com/question/358146458.html

https://wenku.baidu.com/view/b314932ccfc789eb172dc81f.html

捕获(IE8及以下版本不支持)

下列选项中关于JavaScript浏览器对象的说法错误的是c
a) history 对象记录了用户在意个浏览器中已经访问过的URL。
b) location 对象相当于IE浏览器中的地址栏,包含关于当前URL地址的信息
c) location 对象是history对象的父对象
d) location 对象是window对象的子对象

只有构造器才有prototype属性
构造器的prototype.constructor指向它自身(错)

https://www.nowcoder.com/questionTerminal/46f3dcec50404c51804609bed5b13529?toCommentId=378284

  1. 制作级联菜单功能时调用的是下拉列表框的(A )事件。 a)onChange b)onFocus c)selected d)onClick

http://www.cnblogs.com/cindy-hmy/p/5781969.html

TIME_WAIT的状态

http头部age

JavaScript 注释有几种

dp是css单位吗

js全局函数
http://www.cnblogs.com/lzhl/p/5238919.html

HTML 标签

块级元素只能在Body中
js可以通过修改数组的Length属性删除超出的变量
js中数组元素可以是任意值

HTTP2协议的新特性

下面关于IE、FF下面脚本的区别描述错误的是?(D)
innerText IE支持,FIREFOX不支持
document.createElement FIREFOX支持,IE不支持
setAttribute(‘class’,’styleClass’) FIREFOX支持,IE不支持
用setAttribute设置事件 FIREFOX不支持,IE支持

下面关于HTTP协议的说法正确的是:
HTTP是基于TCP协议之上的应用层协议
HTTP是一个普通用在浏览器和web服务器之间进行数据交换的流式二进制协议
HTTP协议的ETAG响应头主要用于信息的过期验证
HTTP1.0中的cache-control响应头主要用于控制信息在浏览器的缓存

https://www.nowcoder.com/questionTerminal/b70358c391d54b75a2139b66c13a4527?toCommentId=217695

以下哪个是并选择器

jQuery(三)4.从DOM中删除所有匹配的元素
http://blog.csdn.net/u014345282/article/details/49074361

hover facus active 顺序

http://www.cnblogs.com/jelly7723/p/5620929.html

使用jQuery,找到id位selector的select标签中有用data-target属性为isme的option的值?
https://segmentfault.com/q/1010000008058984/a-1020000008059134

dd 块级标签

jQuery - css() 方法

window.open(URL,name,features,replace)

http://www.w3school.com.cn/jsref/met_win_open.asp

大题:后缀
作者:莫回首
链接:https://www.nowcoder.com/discuss/44541
来源:牛客网

String.prototype.getSuffixList = function (suffix) {    var result = "",        strs = this.split(" "),        LEN = strs.length,        map = {},        tmp = [],        res;    for (var i = LEN - 1; i >= 0; i--) {        res = strs[i].indexOf(suffix);        if (res != -1) {            if (strs[i] in map) {                map[strs[i]]++            } else {                map[strs[i]] = 1            }        }    }    var keys = Object.keys(map).sort(function (a, b) { return map[b] - map[a] //降序});    for (var j = 0; j < keys.length; j++) {        result += keys[j] + "=" + map[keys[j]] + ","    }    return result.substring(0, result.length - 1);//字符串};

调试时:里面不能输出,否则0%
Object.keys(map)获取对象的所有键值,返回的是键值组成的数组
substring返回所截取的字符串,第二个参数指定位置字符不包含

多次bind重写

var self = null;Function.prototype.bind = function() {  if (self == null){    self = this  }  //console.log(self);  var context = [].shift.call(arguments),    args = [].slice.call(arguments);  return function() {    return self.apply(context, [].concat.call(args, [].slice.call(arguments)));  }};function foo() {  return this.bar;}foo1 = foo.bind({bar:1});foo2 = foo.bind({bar:2});console.log(foo2());

实现一个map,参数为函数

Array.prototype.map = function(){    console.log(arguments[0]);    var fn = arguments[0];//函数    var res = [];    for(var i=0;i<this.length;i++){        res.push(fn(this[i]));    }    return res;}var res = [1,2,3];var r1 = res.map(function(item,index,array){  return item*2;})console.log(r1);

注意:arguments为类数组对象,如果要取第一个参数为arguments[0],而不是arguments

原创粉丝点击