• javascript练习题·(1)


    1.参数集合是什么?

    (function(){
        return typeof arguments;
    })();
    

    的结果是?

    typeOf只能以字符串的形式返回数据类型

    js中包括6种数据类型——NumberStringBooleanObjectundefinednull

    arguments是实参的集合——是一个对象(可以进行数组的循环,但没有数组的方法)。

    所以答案是"Object"

    2.函数表达式

    var f=function g(){
        return 23;
    };
    typeof g();
    

    的结果是?

    刚才说到typeOf只能返回六种数据类型,

    f的声明是函数表达式。这种写法下,f是可以找到,但g不一定找得到。

    所以会报错

    3.delete方法删除什么?

    (function(x){
      delete x;
      return x;
    })(1);
    

    的执行结果是?

    delete方法只能删除对象的属性,所以x根本删不掉。

    自执行的函数参数为1,所以返回1

    4.连等赋值

    var y=1,x=y=typeof x;
    console.log(x);
    

    执行结果是?

    连等号的赋值过程是从右往左运算的。一开始x没有声明。那么x就是undefined,

    接着x和y当然都也是undefined

    运用typeof后,看到的结果是"undefined"。

    5.函数还是参数?

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

    的执行结果是?

    自执行函数返回的这个f()其实指的是是参数!所以结果是"number"

    6.this的指向

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

    的执行结果是?

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

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

    所以结果为"undefined"

    扩展

    上述条件不变

    console.log(typeof (f=foo.bar)());
    

    结果是?

    显然,这个函数被剥离,this指向window,执行的结果是undefined

    7.分组选择符

    var f = (function f(){
       return "1"; 
    }, function g(){
     return 2; 
    })();
    
    typeof f;
    

    的结果是?

    好奇怪的写法!

    这是分组选择符——选择的是变量最后一位。

    var a=(1,2,3)
    console.log(a)//3
    

    所以结果是数字

    8.判断语句的条件

      var x = 1;
      if (function f(){}) {
        x += typeof f;
      }
      x;
    

    的结果是什么?

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

    结果返回undefined。而1+undefined自然是‘1undefined’

    9. "类型"的类型

      var x = [typeof x, typeof y][1];
      typeof typeof x;
    

    遇到判断typeof判断typeof,肯定返回字符串

    10.眼力

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

    的执行结果是?

    完全是考眼力了。参数是一个对象,这个对象只有一个属性foo。

    所以结果是undefined。

    12. 函数声明的预解析

    (function f(){
        function f(){ return 1; }
        return f();
        function f(){ return 2; }
      })();
    

    的结果是?

    首先要明确,函数声明是预解析的,在return之前,两句声明都已经被解析了。所以返回的是2。

    13.构造函数的禁忌

    return的f()值的是里面的f()还是外面的f()?

      function f(){ return f; }
      new f() instanceof f;
    

    的执行结果是?

    instanceof返回的是一个布尔值。看他是不是构造函数的实例。

    但是这个构造函数有很大的问题,构造函数在执行完毕之后,就变成了f值。所以不要给构造函数return东西。

    14.函数的长度

      with (function(x, undefined){}) length;
    

    这里是函数的长度。实际上是函数形参的长度。

  • 相关阅读:
    hover经过放大效果
    TDD
    VisualStudio UnitTest FrameWork
    Rhino Mock
    Unit Test
    GPS坐标转化为百度坐标
    只上传APK而不进行反编译,在服务器集成第三方SDK。是如何实现的
    如何实现滑动scrollview上下隐藏
    Windroy、Windroye、Bluestacks运行Android实现原理
    问个file的问题
  • 原文地址:https://www.cnblogs.com/djtao/p/6265582.html
Copyright © 2020-2023  润新知