• js笔试题(不定期更新)


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

    Math.max.apply(this, arr)
    View Code

    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)};
    });
    View Code

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

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

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

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

    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;
    }
    View Code

    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;
    }
    View Code

    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
    var f = function g(){ return 23; }; 
    typeof g;
    // Uncaught ReferenceError: g is not defined
    // (f)引用了函数,而(g)只在函数内部有意义
    ViewAnswer

    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
    var foo = {  
      bar: function() { return this.baz; },  
      baz: 1 
    }; 
    
    (function(){  
      return typeof arguments[0](); 
    })(foo.bar);
    // "undefined"
    // this指向了arguments
    View Answer

    10 This

    function a() {
        alert(this);
    }
    a.call(null);
    // alert: [object Window]
    
    // 如果第一个参数传入的对象调用者是null或者undefined的话,call方法将把全局对象作为this的值。
    View Answer

     

    11 delete

    (function(x){ 
      delete x; 
      return x; 
    })(1);
    // 1
    // arguments和声明的变量、函数不能被delete删除,内部属性configurable的值为false
    View Answer

    12

    var f = (function f(){ return "1"; }, function g(){ return 2; })(); 
    typeof f;
    // "number"
    // 由逗号分隔的表达式,它们从左到右进行计算,但只有最后一个表达式的结果保存
    View Answer

     

    13

    var x = 1; 
    if (function f(){}) { 
      x += typeof f; 
    } 
    x;
    // ”1undefined“
    // function f(){}返回值为undefined,为什么能进入判断?
    View Answer

     

     14

    function f(){ return f; } 
    new f() instanceof f;
    // false
    // new f()===f;返回true
    View Answer

     

    44道JS难题

  • 相关阅读:
    1014. 福尔摩斯的约会
    1009. 说反话
    1002. 写出这个数
    1031. 查验身份证
    1021. 个位数统计
    1006. 换个格式输出整数
    1058. A+B in Hogwarts
    1027. Colors in Mars
    1019. General Palindromic Number
    Windows 新装进阶操作指南
  • 原文地址:https://www.cnblogs.com/wanghuohuo/p/7424130.html
Copyright © 2020-2023  润新知