js笔试题(不定期更新)

1 找出数字数组中最大的元素(使用Math.max函数)

Math.max.apply(this, arr)

2 转化一个数字数组为function数组(每个function都弹出相应的数字)

for(var i=0;i<arr.length;i++){
    var tmp=arr[i];
    arr[i]=function(tmp){
        return function(){
            alert(tmp);
        }
    }(tmp)
}
或者

arr.map(function(e){
    return function(){alert(e)};
});

3 给object数组进行排序(排序条件是每个元素对象的属性个数)

objArray.sort(function(a,b){
    return Object.keys(a).length-Object.keys(b).length;
});

4 利用JavaScript打印出Fibonacci数(不使用全局变量)

function Fibonacci(n) {
    if(n==0||n==1){
        return n;
    }
    return Fibonacci(n-1)+Fibonacci(n-2);
}

Fibonacci(5);

5 实现如下语法的功能:var a = (5).plus(3).minus(6); //2

Number.prototype.plus=function(n){
    return this+n;
}
Number.prototype.minus=function(n){
    return this-n;
}

6 实现如下语法的功能:var a = add(2)(3)(4); //9

//判断返回的是函数还是值
function add(n){
    var f=function(m){
        return add(n+m);
    };
    f.toString=f.valueOf=function(){
        return n;
    };
    return f;
}

7 变量提升

if (!("a" in window)) {
    var a = 1;
}
alert(a);

//[alert: undefined]

View Answer

8 变量对象

var a = 1,
    b = function a(x) {
        x && a(--x);
    };
alert(a);

// [alert: 1]
// 优先级: 函数的形参 > 函数申明 > 变量申明
// 相当于函数表达式   b = function(x) {
//        x && b(--x);
//    };

View Answer

function a(x) {
    return x * 2;
}
var a;
alert(a);

// alert: function a(x) {
//     return x * 2;
// }

View Answer

9  Arguments对象

function b(x, y, a) {
    arguments[2] = 10;
    alert(a);
}
b(1, 2, 3);
function b(x, y, a) {
    arguments[2] = 10;
    alert(a);
}
b(1, 2);

// alert: 10 和 alert:undefined

// properties-indexes 的值和实际传递进来的参数之间是共享的。
// 这个共享其实不是真正的共享一个内存地址,而是2个不同的内存地址,使用JavaScript引擎来保证2个值是随时一样的,当然前提是这个索引值要小于传入的参数个数。

View Answer

10 This

function a() {
    alert(this);
}
a.call(null);

// alert: [object Window]

// 如果第一个参数传入的对象调用者是null或者undefined的话,call方法将把全局对象作为this的值。

View Answer

44道JS难题

时间: 2024-10-03 03:50:05

js笔试题(不定期更新)的相关文章

容易答错的JS笔试题

1,考察this var length = 10 function fn(){     alert(this.length) } var obj = {     length: 5,     method: function(fn) {         fn() // ?         arguments[0]() // ?     } } obj.method(fn) 这里的坑主要是arguments,我们知道取对象属于除了点操作符还可以用中括号,这里fn的scope是arguments,即

JS笔试题

1,考察this var length = 10function fn(){ alert(this.length)}var obj = { length: 5, method: function(fn) { fn() // ? arguments[0]() // ? }}obj.method(fn)这里的坑主要是arguments,我们知道取对象属于除了点操作符还可以用中括号,这里fn的scope是arguments,即fn内的this===arguments,调用时仅传了一个参数fn,因此le

Android开发面试经——4.常见Android进阶笔试题(更新中...)

Android开发(29)  版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44301359 上一篇文章我们已经了解了Android笔试的一些基础题目, [<Android开发面试经——2.常见Android基础笔试题> ] (http://blog.csdn.net/finddreams/a

这道JS笔试题你做对了吗?

昨天在看一道笔试题的时候本以为很简单,但是结果不是我想象的那样,直接上笔试题. const array = new Array(5).map((item) => { return item = { name: '1' } }); console.log(array); // 请写出输出结果 我想象的答案:[{name: '1'}, {name: '1'}, {name: '1'}, {name: '1'}, {name: '1'}]; 实际的答案:[empty × 5] 为什么会这样了? 猜想1

js笔试题系列之三——函数

在这一章以函数为主的讲解中,也会不可避免的牵涉到数组和对象的内容,这也不难理解,知识往后走牵涉的内容自然也越多. (1)经典作用域问题 题一: var a = 0 function f(){ console.log(a); ==>undefined var a = 2; console.log(a); ==>2 } f() 第二次日志输出结果相对容易理解,关键是第一次打印结果并不是全局变量中的a,因为按照作用域链的查找规则,在函数执行的时候会先查找局部作用域,而此时局部作用域已经存在变量a,只

蛮考验基础的JS笔试题(有坑小心!)

1.  考察this 1 var length = 10 2 function fn(){ 3 alert(this.length) 4 } 5 var obj = { 6 length: 5, 7 method: function(fn) { 8 fn() // ? 9 arguments[0]() // ? 10 } 11 } 12 obj.method(fn) 这里的坑主要是arguments,我们知道取对象属于除了点操作符还可以用中括号,这里fn的scope是arguments,即fn内

js笔试题系列之二——数组

(1)快速创建一个数组,数组中含有100个值为0元素. 方法一: var arr = new Array(100); for(var i=0;i<100;i++){ arr[i] = 0; } 方法二: var arr = new Array(100); arr.join('0').split(''); //注意此方法结果0为字符类型 面试官会喜欢哪个答案呢? (2)经典的数组去重问题 数组去重可以说是各大公司前端笔试中的常见题,以下列出几种典型的解决方法 方法一:传统双循环对比法 functi

由几道JS笔试题引发的知识点探究二——强制类型转换

强制类型转换的概念相信大家一定不陌生,例如整数和浮点数进行算术运算,整数会在后台转型为浮点数.JS作为一门弱类型的动态脚本语言,任何两种数据类型之间都可以进行性转换而不会报错,这就带来了一整套错综复杂的类型转换规则.例如我们的题目 alert('5'+5),大家都知道答案是'55',但为什么这里不将string转换成number而要将number转换成string呢?在其他情况下也都要将string转型成number吗?下面我们就来做一次完整的总结. 一.何时转型为boolean? 1. 逻辑非

由几道JS笔试题引发的知识点探究

1.JS有哪些全局函数? 2.alert('5'+5) 3.cookie.sessionStorage和localStorage的区别 4.call()和apply()方法的区别 5.严格模式和非严格模式有什么区别?严格模式有什么优缺点? 6.JS正则表达式 7.创建一个ul元素添加到body元素中,ul元素包含5个li元素,每个li元素有一个Text类型的子节点 8.sort()方法的应用 9.使用原生JS实现一个可拖拽的DIV 10.用AJAX判断浏览器是IE还是FireFox 11.异步加