年终福利

WEB前端开发工程师 年终福利(一、 程序题问题)

2019-01-09  本文已影响0人  吴佳浩

程序题

    5  undefined
    "hello"
      object undefined number boolean
        function doSomething(){
            for(var i = 0; 4 > i; i++) {
                var k = 100;
                aMrg +=','+ (k + i);
            }
           }
        var k = 1,aMrg = k;
        doSomething();
        aMrg +=k;
        console.log(aMrg);
1,100,101,102,1031
        console.log(undefined || 1);//值___1__

        console.log(null || NaN);   //值__NaN___

        console.log(0 && 1);        //值__0___

        console.log(0 && 1 || 0);  //值__0___
        <style>

        .classA{color: blue};

        .classB{color: red};

        </style>

        <body>

            <p class=”classB classA”>123</p>

        </body>
        // mixins.js文件
        export function mixins(...list) {
        return function (target) {
            Object.assign(target.prototype, ...list)
        }
        }

        // main.js文件
        import { mixins } from './mixins'

        const Foo = {
        foo() { console.log('foo') }
        };

        @mixins(Foo)
        class MyClass {}

        let obj = new MyClass();
        obj.foo() // 'foo'


这个案例满足斐波那契定律 1,1,2,3,5,8,13,21, 34, 55, 89, 144

            varn1 = 1;
            var n2 = 1;
            var n3 = n1 + n2;
            for (var i = 3; i <= n; i++) {
                    n3 = n1 + n2;
                    n1 = n2;//往后推一项
                    n2 = n3;//往后推一项
            }
            console.log(n3);
            #left {

                color: white !important;

            }

            #container #left {

                color: red;

            }

            #left {

                 color: green !important;

            }

            .container #left {

                 color: blue;

            }

            则在如下html中

            <div class=”container” id=”container”>

                   <span id=”left”>left</span>

            </div>

            #left最终color属性值为?绿色

 
            for (var i = 0; i < 5; ++i) {
                setTimeout(function () {
                       console.log(i + ‘’);
                    },100*i);
            }

            不正确,先执行FOR循环。for循环完成后,在去执行setTimeout。但是这个时候I已经是5了,所以输入了5次5

            for(var i = 0; i <5; ++i) {
                var a = 0;
                setTimeout (function () {
                    console.log(a++);
                },100*i);
            }
            <body>
                <img id=”pic” src=”img1.jpg” width=”200” height=”200”>
                <br/>
                <selectid=”sel” onchange=”showImg(this)”>
                    <option value=”img1”>城市生活</option>
                    <option value=”img2”>都市早报</option>
                    <option value=”img3”>青山绿水</option>
                </select>
            </body>
            <script type=”text/javascript”>
                     Function showImg (oSel) {    
     
                     };

            </script>
                            Function showImg (oSel) {        
                                var pic=document.getElementById('pic')
                                pic.src=oSel.options[oSel.selectedIndex].value
                                console.log(pic.src);     
                            };
            答案说明:当select发生改变的时候调用showImg函数,实参为this(select对象本身),可以通过select对象的属性来为pic的src赋值实现图片切换

<html>

    <head>

             <meat http-equiv=”Content-Type”content=”text/html; charset=utf-8”>

    </head>

    <body>

        <scripttype=”text/javascript”>

        function foo() {

         

        };

        </script>

                <form name=”form1” onsubmit=”retuen foo()”>
                        <input type=”radio” name = “radioGroup”>
                        <input type=”radio” name = “radioGroup”>
                        <input type=”radio” name = “radioGroup”>
                        <input type=”radio” name = “radioGroup”>
                </form>

        </body>

</html>

 
        function foo() {
                var a=document.getElementsByTagName('input')
                function foo() {
                for(var i=0;i<a.length;i++){
                        if(a[i].checked){
                            alert(i+1)
                        }
                    }
                }
        }
题粗的有问题,onsubmit只有在提交的时候才会触发这里面没有submit按钮,在提交事件触发的时候遍历哪个input表单是选中状态然后alert粗来
        var msg = 'hello';

        function great(name, attr) {
                name = 'david';
                var greating = msg + name + '!';
                var msg = '您好';
                for (var i = 0 ; i < 10;i++) {
                    var next = msg + '您的id是' + i*2 + i;
                }
                console.log(arguments[0]);
                console.log(arguments[1]);
                console.log(greating);
                console.log(next);
        }

        great('Tom');
        答案:david  //参数1
            undefined         //参数2 未传入为未定义
            undefineddavid!   //name虽然是参数但是参数重新赋值为david了msg因为变量声明提升所以值为undefined
            您好您的id是189     //因为number+string=string所以for循环最后一次声明next=****18+9
            function Foo() {
                var i = 0;
                return function () {
                    console.log(i++);
                }

            }
            var f1 = Foo()
            f2 = Foo()
            f1()
            f1()
            f2()
            console.log(i);
            0       //f1=Foo() 相当于f1赋值为函数Foo()的返回值f1=function(){ console.log(i++) }

            1       //因为f1=了一个function所以有了作用域,f2和f1不同,不在一个内存中

            0

            i is not defined 报错  //i为Foo内部的变量全局不可访问,全局中没有i变量所以会报错
            a)        var num = 1;
                    var fun = function () {
                                console.log(num);//值___undefined___
                                var num = 2;
                                console.log(num);//值___2___
                            }

                    fun();

            b)        varnum = 1;

                    function fun () {
                        console.log(num);//值___1____
                        num = 2;
                        console.log(num);//值___2____
                    }

            fun();
    1)var a = 10;

      a.pro = 10;

      console.log(a.pro + a);

      NAN number对象不可以定义私有属性 namber+非数字和字符的值就等于NaN

    2)var s = ‘hello’;

      s.pro = ‘world’;   

      console.log(s.pro + s); //undefinedhello s位字符串,字符串不可以自定义属性,所以s.pro为undefined 字符串做加运算会强制拼接位字符串

    3)console.log(typeof fn);

      function fn() {};

      var fn;

      //function 函数提升优先于变量提升

    4)var f = true;

      if(f === true) {
            var a = 10;
          }
      function fn() {
            var b = 20;
            c = 30;
      }
    fn();
    console.log(a);
    //10

        var a = 5,b = 3;

        function test() {
            alert(b++);
            var a = 4;
            alert(--a);
            alert(this.a);
        }
        1)tese(),三次alert()的值依次是什么?335  435 535

        2)new test(),三次alert()的值依次是什么? 33undefined 43undefined53undefined //this更改了指向原来是指向window 用了new关键字后指向test test木有a属性所以为undefined
        <style>

            #classA{color:yellow};

            p.classB(color:red);

        </style>

        <body>
                 <p id=”classA” class=”classB”>123</p>

        </body>
       //p#classA{color:black}
        A.var reg = /\d6/;

        B.var reg = \d{6}\;

        C.var reg = /\d{6}/; 

        D.var reg = new RegExp (“\d{6}”);

        A.xml是种可扩展标记语言,格式更规范,是作为未来html的替代  //貌似XML是被替代的

        B.Xml一般用于传输和存储数据,是对html的补充,两者的目的不同

        C.在JavaScript里解析和处理xml数据时,因为浏览器的不同,其做法也不同

        D.在IE浏览器里处理xml,首先需要创建ActiveXObject对象
        A.javascript是网景公司开发的一种基于事件和驱动网页脚本语言

        B.JScript是javascript的简称 //微软自己的浏览器才支持

        C.FireFox和IE存在大量兼容性问题的主要原因在于他们对javascript的支持不同

        D.AJAX技术一定要使用javascript技术
        A.inserAfter()

        B.Append()

        C.appendTo()

        D.After()
        A.357

        B.57

        C.0

        D.5
        A.False

        B.你好

        C.“123”

        D.Null
        A.1.2

        B.”true”

        C.false

        D.null

        A.null instanceof Object

        B.Null === undefined;

        C.null == undefined

        D.NaN == NaN
        A.!a

        B.a&&b

        C.a||b

        D.a>b
        A.var obj = [name : “zhangsan” ,show: function(){alert(name);}];

        B.Var obj = {name : “zhangsan”,show: “alert(this.name)”};

        C.Var obj = {name : “zhangsan”,show: function () {alert(name);}};

        D.Var obj = {name : “zhangsan”,show: function () {alert(this.name);}}
        A.对数组里数据的排序可以用sort函数,如果排序效果非预期,可以给sort函数加一个排序函数的参数

        B.reverse用于对数组数据的倒序排列

        C.向数组的最后位置加一个新元素,可以用pop方法 //push吧 

        D.unshift方法用于向数组删除一个元素
        A.window.status = “已经选中该文本”

        B.Document.status = “已经选中该文本”

        C.Window.screen = “已经选中该文本”

        D.Document.screen = “已经选中该文本”

        A.<input type=”button” value=”new”onclick=”open(‘new.html’,’_blank’)”>

        B.<input type=”button” value=”new”onclick=”window.location=’new.html’;”>

        C.<input type=”button” value=”new”onclick=”location.assign(‘new.html’);”>

        D.<form target=”_blank” action=”new.html”>

        <input type=”submit” value=”new”>

        </form>

        A.for(var i = 0; i <form1.elements.length; i++) {

        if(form1.elements[i].type ==”text”)

        form1.elements[i].value = “”;

          }

        B.for (var i = 0; i < document.forms.length;i++) {

        if(forms[0].elements[i].type == “text”)

        form[0].elements[i].value = “”;

        }

        C.if(document.form.elements.type == “text”)

        form.elements[i].value = “”;

        D.for(var i = 0; i <document.forms.length;i++) {

        for(var j = 0;j <document.forms[i].elements.length;j++) {

        if(document.forms[i].elements[j].type== “text”)

        document.forms[i].elements[j].value= “”;

        }

        }

        A.var str = form1.fname.value;

        If(str.substr(0,4)!=”010-”||str.substr(4).length!=8||isNaN(parseFloat(str.substr(4))))

        Alert(“无效的电话号码!”);

         

        B.var str = form1.fname.value;

        If(str.substr(0,4)!=”010-”&&str.substr(4).length!=8&&isNaN(parseFloat(str.substr(4))))

        Alert(“无效的电话号码!”);

         

        C.var str = form1.fname.value;

        If(str.substr(0,3)!=”010-”||str.substr(3).length!=8||isNaN(parseFloat(str.substr(3))))

        alert(“无效的电话号码!”);

         

        D.var str = form1.fname.value;

        If(str.substr(0,4)!=”010-”&&str.substr(4).length!=8&&isNaN(parseFloat(str.substr(4))))

        alert(“无效的电话号码!”);

 
        A.var reg = /\d6/;

        B.var reg = \d{6}\;

        C.var reg = /\d{6}/;

        D.var reg = new RegExp (“\d{6}”);
        A.Cookie设置的过期时间为3600s是指60分钟过期

        B.Cookie设置的过期时间为3600s是指只要在间隔60分钟内有动作时就不过期

        C.Cookie保存在服务器端

        D.Cookie保存在用户本地
        <p id=”text”>这个段落里有链接

        比如:http://www.abc.comm/和https://www.github.com/都是链接。

        可是他们显示在网页中是,链接不可点,还得复制粘贴到地址栏打开,好麻烦

        </p>

        function parseQueryString(url){
               var params = {};
               var arr =url.split("?");
               if (arr.length <= 1)
                 return params;
               arr =arr[1].split("&");
               for(var i=0, l=arr.length;i<l; i++){
                  var a =arr[i].split("=");
                  params[a[0]] = a[1];
               }
               return params;
            }
            var url ="http://witmax.cn/index.php?key0=0&key1=1&key2=2";
            var ps = parseQueryString(url);
            console.log(ps["key1"]);
 
            var redis = require(‘redis’);
            var client = redis.createClient();
            client.set(‘key’, ‘value’, function (err,data) {
                if(err) {
                    console.error(err.message)
                    process.exit(1)
                }
                cilent.get(‘key’,function(err,data) {
                        if(err) {
                            console.error(err.message);
                            return;
                        }
                        console.log(data);
                        process.exit(0);
                })
            });
            请用Promise的异步调用方式重写
            请用ES6 yield的异步调用方式重写
            在经历了多个异步回调之后,如果拿到完整的堆信息(stack trace)?
            1.当出现一次网页浏览的时候,请实现函数click(url, ip)

            2.请实现查询函数pv(url)以及uv(url)
            <html>

            <head>

            <script type=”text/javasccript”>

            function closeWin() {

             

            }

            </script>

            </head>

            <body>

            <input type=”button” value=”关闭窗口” onclick=”closeWin()” />

            </body>

            </html>

             

            function closeWin(){
                if(confirm("您确定要关闭本页吗?")){
                    window.opener=null;
                    window.open('','_self');
                    window.close();
                }
            }
            <!DOCTYPEhtml>

            <htmllang="en">

            <head>

            <metacharset="utf-8">

            <title>只能输入正整数</title>

            </head>

            <body>

                    <inputid="txt" type="text">
            <script>
                    var txt=document.getElementById('txt');
                    var color =window.getComputedStyle(txt,'').color
                    txt.addEventListener('keyup',function() {
                            var reg = newRegExp("^[0-9]*$");;
                            console.log(reg.test(this.value));
                            if(reg.test(this.value)){
                                    this.style.color=color;
                            }else{
                                    this.style.color='red';
                            }
                   });

            </script>

            </body>

            </html>
            var wrap = document.getElementById(“wrap”);
            for(var i = 0; i < 10; i++) {
                    var li = document.createElement(“li”);
                    var text =document.createTextNode(“hello” + i);
                    li.appendCChild(text);
                    wrap.appendChild(li);
            }

            <div class=”outer”>

                <div class=”left”></div>

                <div class=”right”></div>

            </div>
上一篇下一篇

猜你喜欢

热点阅读