• 需要写代码实践的题


    1.编写一个javascript函数fn,该函数有一个参数n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的数组,且整数取值范围为[2,32];

    2.获取10-100的10个数字将其排序

    3.不同时候函数调用后所输出的值

    4.用递归计算1-100的和

    5.实现一个log函数,调用原生的console.log实现,要求每条信息追加个前缀(SF),并美化一下输入用空格隔开接收日志,并能兼容所有的游览器,例如

    log("hello")//=》(sf)hello

    5.1接上题,log函数的第二个参数,接收类型参数(默认为"log"),分别调用console的warn方法进行输出,例如:

    log("log")//==>(SF)log

    log("log","warn")//==>(SF)log //这条信息时调用console.warn输出

    6.下面这个ul如何点击每一列的时候alert其index?

    <ul id='test'>

      <li>1</li>

      <li>2</li>

      <li>3</li>

    </ul>

     7.理解this

    8.实现一个函数clone,可以对js的5中数据类型进行值复制

    9.function foo(){

        getName = function(){alert(1)};
    return this;
    }
    foo.getName = function(){alert(2);}
    foo.prototype.getName = function(){alert(3)};
    var getName = function (){alert(4)};
    function getName(){alert(5)};

    foo.getName();
    getName();
    new foo.getName();
    new foo().getName();
    new new foo().getName();
    foo().getName();
    getName();
    //查看输出

    1.编写一个javascript函数fn,该函数有一个参数n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的数组,且整数取值范围为[2,32];

     1 <script>
     2     function fn(n){
     3         var arr = [];
     4         if(n&&(typeof(n)=="number"?true:(parseInt(n)?true:felse))){//判断n是否存在,n是否是number类型,n是否可以装换为数字
     5             for(var i = 0;i<n;i++){
     6                 if(i>30) return arr;//如果n大于了取值范围将会死循环,因为要不重复
     7                 var newNum = Math.ceil((Math.random()*30)+2);//2-32(随机数是[0,1));
     8                 if(arr.indexOf(newNum)<0)//判断获取到的数字数组中是否存在,存在则i--重新来过,否则个数组赋值
     9                         arr[i]=newNum
    10                 else i--;
    11             }
    12         }
    13         return arr;
    14     }
    15     console.log(fn(5));
    16 </script>

    2.获取10-100的10个数字将其排序

     1 function cc() {
     2 var a = [];
     3 for (var i = 0; i < 10; i++) {
     4     a[i] = parseInt(Math.random() * 90+10);
     5 }
     6 a.sort(function (c, b) {
     7     return c - b;
     8 })
     9 console.log(a);
    10 }
    11 cc();

    3.不同时候函数调用后所输出的值

     1 var fn = null;
     2 function foo() {
     3   var a = 2;
     4   var fee = function () {
     5     console.log(a);
     6   }
     7   fn = fee;
     8 }
     9 function fcc() {
    10   fn();
    11 }
    12 foo();//空  (我以为执行foo的时候可以执行到fee(),得到的结果为2,而fee是需要调用才能执行的,而foo函数没有返回就不会显示结果)
    13 fcc();//2    (在foo执行时,将fee赋值给了全局变量,所以在执行fcc()的时候就可以调用到fee()而打印结果2)

    4.用递归计算1-100的和

     1 var sum = 0;
     2         //递归实现1-100的加
     3         function addNum(j) {
     4             if (j > 0) {
     5                 sum +=j;
     6                 j--;
     7                 addNum(j);
     8             } else {
     9                 alert(sum)
    10             }
    11         }
    12         addNum(100);

    5.实现一个log函数,调用原生的console.log实现,要求每条信息追加个前缀(SF),并美化一下输入用空格隔开接收日志,并能兼容所有的游览器,例如

    log("hello")//=》(sf)hello

    1 function log() {
    2             var arr = [];
    3             for (var i = 0; i < arguments.length; i++) {
    4                 arr.push("(SF) " + arguments[i]);
    5             }
    6             console.log.apply(console, arr);
    7         }
    8         log("hello");

    5.1接上题,log函数的第二个参数,接收类型参数(默认为"log"),分别调用console的warn方法进行输出,例如:

    log("log")//==>(SF)log

    log("log","warn")//==>(SF)log //这条信息时调用console.warn输出

     1 function log() {
     2             var arr = [];
     3             
     4             for (var i = 0; i < arguments.length; i++) {
     5                 var re = /^warn$/;
     6                 if (re.test(arguments[i])) {
     7                     continue;
     8                 }
     9                 arr.push("(SF) " + arguments[i]);
    10             }
    11             if (arr.length == arguments.length) {
    12                 console.log.apply(console, arr);
    13             } else {
    14                 console.warn.apply(console, arr);
    15             }
    16             
    17         }
    18         log("hello", "warn");
    19         log("hello");

    6.下面这个ul如何点击每一列的时候alert其index?

    <ul id='test'>

      <li>1</li>

      <li>2</li>

      <li>3</li>

    </ul>

    1  var ul = document.getElementById('test');
    2   var lis = ul.getElementsByTagName('li');
    3   ul.addEventListener('click',function (e) {
    4     e = e ||window.event;
    5     var tag = e.target||e.srcElement;
    6     alert([].indexOf.call(lis,tag)+1);
    7   });

    7.对this的理解

    1 var User = {
    2       count:1,
    3       getCount:function(){
    4           return this.count;
    5       }
    6   }
    7   console.log(User.getCount());//这里打印的是1
    8   var fun = User.getCount;
    9   console.log(fun());//这里是undefined (因为var fun = User.getCount;时getCount中的this变为全局的了)

    8.实现一个函数clone,可以对js的5中数据类型进行值复制(undefined,string,number,object,boolent)

     1   function clone(val){
     2       var newV;
     3       if(val instanceof Array){
     4          newV = [];
     5           //newV = val.concat();
     6          var i = val.length;
     7          while(i--){
     8             newV[i] = clone(val[i]);
     9          }
    10       }else if(val instanceof Object){
    11         newV = {};
    12         for(var v in val){
    13           newV[v] = clone(val[v]);
    14         }
    15       }else{
    16           //这里会返回Number,String,Boolean,undefined
    17           return val;
    18       }
    19       return val;
    20   }

    9.输出解释

     1 function foo(){
     2     getName = function(){alert(1)};//1
     3     return this;
     4 }
     5 foo.getName = function(){alert(2);}//2
     6 foo.prototype.getName = function(){alert(3)};//3
     7 var getName = function (){alert(4)};//4
     8 function getName(){alert(5)};//5
     9 
    10 foo.getName();//输出的是第2个-----2
    11 getName();//输出的是第4个,赋值的优先级很低,会最后赋值,4、5同时定义了getName,4会覆盖5-----4
    12 new foo.getName();//输出第2个  "."的优先级高于"new"  foo.getName()将会执行第2个,new 时会将执行第1个,第一个的getName变为全局变量-----2
    13 new foo().getName();//输出第3个 "new foo()"的优先级高于"."-----3
    14 new new foo().getName();//输出第3个 先"new foo()"再"new foo().getName()"再"new new foo().getName()"-----3
    15 foo().getName();//输出第一个-----1
    16 getName();//输出变为全局变量的第一个-----1
  • 相关阅读:
    如何增强Linux和Unix服务器系统安全性
    FTP连接不上的解决方法
    PHP获取当前服务器详细信息
    要想提高电脑开机速度首先需要设置这几个功能
    Centos7下安装iptables防火墙
    centos下LVM配置与管理
    基于LNMP环境的ssh2扩展
    60个开发者不容错过的免费资源库
    MySql命令的基本操作
    存储过程 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果
  • 原文地址:https://www.cnblogs.com/sunnie-cc/p/6514012.html
Copyright © 2020-2023  润新知