其他分享
首页 > 其他分享> > 第三周练习题

第三周练习题

作者:互联网

一,代码识别,写出结果,并分析原因

    1. (function(){
      return typeof arguments; 
      })();
  1. console.log( typeof g())

    报错 因为g只在函数体内才可见 命名的函数表达式

    1. (function(x){
  2. delete x;

    return x;

    })(1);

    1 因为x只能删除对象的属性

    1. var y = 1, x = y = typeof x; 
      log(x);
  3. Undefined 从右往左运算,一开始x没有声明,那么就是undefined

    1. (function f(f){ return typeof f(); })(function(){ return 1; });
  4. 自执行返回的是f(),所有指的是参数 所有结果是 number

    1. var foo = {
      bar: function() { return this.baz; }, 
      baz: 1 
      }; 
      (function(){ 
      return typeof arguments[0]; 
      })(foo.bar);
  5. function

    首先,这个foo对象定义有问题。作为方法,this指向的是调用者自身(这里是foo.bar),但是函数不存在baz这个属性,所以方法结果是undefined。

    另一方面,和第四题类似,注意到arguments0就是一个函数自执行的结果,它已经从foo对象中剥离开来了,this指向arguments[0]

    1. var foo = {
      bar: function(){ return this.baz; }, 
      baz: 1 

      typeof (f = foo.bar)();//问最后一行的执行结果
  6. undefined

    1. var f = (function f(){ return “1”; }, function g(){ return 2; })();
      typeof f; //问最后一行的执行结果
  7. number

    1. var x = 1;
      if (function f(){}) { 
      x += typeof f; 
      } //x值为多少
  8. 1+undefined  

    注意:函数声明不允许写在if判断条件中 如果真的写了 全部返回真 因为只有0,空字符串,undefined,null,false才判断为假

    1. var x = [typeof x, typeof y][1];
      typeof typeof x; //问最后一行的执行结果 string
  9. 遇到判断typeof判断typeof,肯定返回字符串

    1. (function(foo){
      return typeof foo.bar; 
      })({ foo: { bar: 1 } }); 
  10. Undefined

    参数是一个对象 这个对象只有一个属性foo 所以结果是undefined

    1. (function f(){
      function f(){ return 1; } 
      return f(); 
      function f(){ return 2; } 
      })(); 
  11. 2 首先要明确,函数声明是预解析的 在return之前 两句声明都被解析了所以返回2

    1. function f(){ return f; } new f() instanceof f;//问这一行的值
  12. Instanceof返回的是一个布尔值 看他是不是构造函数的实例 false

    1. with (function(x, undefined){}) length; //问length的值为多少
      //with就是一个读写器,题意是取出函数的length属性
  13. 2 这里是函数的长度 实际上是函数形参的长度

    1. log(a);
  14. var a=1;

    function a(){}

    a=2;//a的结果是什么

    1

    1. setTimeout(() => { console.log(1)},0);console.log(2)
  15. 2,1

    1. ['1','2','3'].map(parseInt)结果是什么
  16. https://www.cnblogs.com/afeihome/p/7245963.html

    [1,NaN,NaN]

    1. var arr = [3,4,5];var res = arr.unshift(1,2);console.log(res)
  17. 5

    1. var one;
  18. var two = null;

    console.log(one == two,one === two);

    true false

    One的变量的值是undefined,two的值是null,undefined==null,但undefined的type是undefined,但null的值是object,所以类型不相等,注意在js中 ,值有类型,变量没有类型。

    1. function fn(){
  19. var a = b = 1;

    //等于var a = b ,b = 1

     //不加var ,b就是全局变量了(window.b=1),可以直接访问

     //var a是局部变量,在fn里面,外面访问不到

    }

    fn();

    console.log(b);//结果为//window全局作用域下找到window.b = 1

    console.log(a);//结果为//a在fn里面的作用域,外面访问不了,报错

    1 报

二,代码书写

  1. 不用for循环生成0-100的数组
    // 第一种方法
        // Array.apply(null,Array(100))
        var arr = Array(100).fill(1).map((v,k)=>k+1)
        console.log(arr);
    
        // Array.from()方法
        var filled = Array.from(Array(100),(v,k)=> k+1);
        console.log(filled);
    
        //第二种方法
        var filled = new Array(100);
        filled.map(function(value,index){
            return index+1
        });
        console.log(filled);
    
        //第三种方法 
        var arr = Object.keys(Array.apply(null,{
            length:100
        })).map(function(item){
            return +item;
        })
        console.log(arr);
    
        // 第四种方法 Array.keys()
        var arr = new Array(100).keys();
        console.log(Array.from(arr));
    
        // 第五种方法 Object.keys()与Array.from()
        var arr = Object.keys(Array.from({
            length:100
        })).map(function(item){
            return +item
        });
        console.log(arr);
    
        // 第六种 使用扩展运算符
        var arr = [...Array(100).keys()];
        console.log(arr);
    
        // 或者改写成
        var arr = [...Array.from({
            length:100
        }).keys()];
        console.log(arr);
    
        // String()方法
        var arr = Object.keys(String(Array(101)));
        console.log(arr);
  2. let arr1=[1,2,3,4,5];let arr2=[4,5,6,7,8]; 找出俩个数组的交集
    <script>
        let arr1=[1,2,3,4,5,6]
        let arr2=[4,5,6,7,8,9]
        // 并集 数组去重 
        let RemoveSame=[...new Set([...arr1,...arr2])]
        console.log(RemoveSame) //[1, 2, 3, 4, 5, 6, 7, 8, 9]
    
        //数组交集,或得两个数组重复的元素
        let SamePart=arr1.filter(item=>arr2.includes(item))
        console.log(SamePart) //[4, 5, 6]
    
        //差集=并集-交集  去除两个数组相同的元素
        let Difference=RemoveSame.filter(item=>!SamePart.includes(item))
        console.log(Difference) //[1, 2, 3, 7, 8, 9]
    
    </script>
  3. 编写⼀个动物类,该类包含name的属性,和say的⽅法。 通过say⽅法可以打印动物说话了。编写⼀个Dog类继承动物类,要求 该类中包含颜⾊的属性,该类重写say⽅法,要求打印⽗类的say⽅法⾥的内容,并且打印 动物颜⾊+动物名字+“叫了”。(备注狗会一直叫)
    <script>
        class Animal {
            constructor(name) {
                this.name = name;
            }
            say() {
                console.log("动物说话了")
            }
        }
    
        class Dog extends Animal {
            constructor(name, color) {
                super(name)
                this.color = color
            }
    
            say() {
                super.say()
                console.log(this.color + this.name + "叫了")
            }
        }
    
        const dog = new Dog("毛毛", "金色")
        dog.say()
    </script>
  4. 、现在有⽤户的⾓⾊有数组,如:[{id:1,name:’经理’},{id:2,name:’员⼯’}],⽤户已选择的数组[{id:2,name:’经理’}], 要求获取⽤户未 选中的⾓⾊列表,和⽤户已选择的⾓⾊的id数组。(使⽤es6语法实现)map、filter、some
    <script>
        const roleList = [{
            id: 1,
            name: '老板'
        }, {
            id: 2,
            name: '经理'
        }];
            
        // 用户已选择的数组
        const selectedRoleList = [{
            id: 2,
            name: '经理'
        }];
    
    
        const unSelectedRoles = roleList.filter(item => !selectedRoleList.some(selectedItem => selectedItem.id == item.id))
        console.log(unSelectedRoles);
        const selectedIds = selectedRoleList.map(item => item.id)
        console.log(selectedIds);
    </script>

 

标签:练习题,function,arr,console,log,第三周,var,return
来源: https://www.cnblogs.com/liu-2001/p/16596546.html