zoukankan      html  css  js  c++  java
  • 前端笔试题

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    </head>
    <body>
    <script>
    //1.
     console.log((function(a){}).length); //1
     console.log((function(a=5){}).length);//0
     console.log((function(a,b=5,c){}).length);//1
     console.log((function(a,b=5,c=5){}).length);//1
     //函数指定了默认值后,函数的length属性返回的就不再是函数参数个数,而是第一个指定默认值的前面参数个数。也就是说指定了默认值后,函数的length属性将失真。这是因为length属性的含义是,该函数预期传入的参数个数,某个参数指定默认值后,预期传入的参数个数就不包括这个参数及其后面的参数
    //2.
     var a=undefined,b=NaN;
     console.log(a+b); //NaN
     var c=NaN,d='undefined';
     console.log(c+d); //NaNundefined
    //3.
     var a = 10;b = 20;c = 4;
     console.log(++b+c+a++); //35
    //4.
     console.log(null == undefined); //true
    //5.
     var a=0,b=0;
     function add(a){
     add = function(b){
     alert(++a + b++);
    }
     alert(a++);
     }
     add(1); //1
     add(2); //5
    // 第一次执行的是外层的add,第二次执行的是内层的add(第一次执行外层add时,里面定义了全局add 覆盖了标识符),内层add函数中的a是2 ++后是3,3+2 结果5,闭包
    //6.
     var a = {
     name:'json',
     sayName:function(){
     console.log(this.name);
     }
     };
     var name = 'Aaron';
     function sayName(){
     var sss = a.sayName;
     sss(); // Aaron
     a.sayName(); // json
     (a.sayName)(); // json
     (b=a.sayName)(); // Aaron
     b=a.sayName;
     b(); // Aaron
     }
     sayName();
    //7.
     var reg = /^[a-zA-Z_][a-zA-Z0-9]{5,20}/,
     name1 = 'tanbayi';
     name2 = '0tanbayi';
     name3 = '你好tanbayi';
     name4 = 'hi';
     alert(reg.test(name1)); //true
     alert(reg.test(name2)); //false
     alert(reg.test(name3)); //false
     alert(reg.test(name4)); //false
    //8.
     console.log(typeof(undefined)==='undefined'); //true
     console.log(typeof('1314'-0)==='number'); //true
     console.log(typeof({})==='object'); //true
     console.log(typeof(null));//object
     console.log(typeof(undefined)); //undefined
     console.log(typeof(null)==='object'); //true

    //9

         var m= 1, j = k = 0; 
         function add(n) { 
             return n = n+1; 
       } 
         y = add(m); 
         function add(n) { 
            return n = n + 3; 
       } 
     z = add(m); 
    y和z的最终结果为: //4,4

    // js里面没有函数重载的概念,在其他语言中(如java)java中,可以存在同名函数,
    // 只要传入的参数数量或者类型不同即可。在js中,定义了两个同名函数后,
    // 后面的函数会覆盖前面定义的函数。结合这道题来说,由于函数声明提升,
    // 所以函数声明会提前,由于存在同名函数,后面的add函数将覆盖第一个add函数,
    // 所以两次调用add()返回的值是相同的。也就是y,z都为4.
    </script>
    </body>
    </html>

  • 相关阅读:
    VMware Workstation 虚拟机纯 Linux 终端如何安装 VMware Tools ?
    Linux Debian 如何部署 Qt?
    D3D9和OpenGL加载纹理图片的API是哪个?
    为什么调用 GdiplusShutdown 函数会在 DllExports::GdipDeleteGraphics(nativeGraphics) 位置抛出异常?
    What are DESC and ASC Keywords?
    qt sql 模块有哪些类?
    如何使用cmd命令行打开一个文件夹?
    cvs 文件如何解析?
    qt 如何给图元安装一个场景事件过滤器?
    linux命令 cp 递归复制 带权限复制
  • 原文地址:https://www.cnblogs.com/qdcnbj/p/8057334.html
Copyright © 2011-2022 走看看