• js问答十题


    1. [] + [] + 'foo'.split(''); ['1'] + 'foo'.split('');
    答:'f,o,o', '1f,o,o' split将字符串转化为数组,数组相加,是先将数组转化成字符串,然后进行字符串的连接。
    2. new Array(5).toString();
    答:",,,,"
    3. (true + false ) > 2 + true; true + false > 2 + true;
    答: false,false '+'(算术操作符)的优先级优于'>'(关系操作符)
    4. function a (x) {
      return x * 2;
     }
       var a;
       alert(a);
    答: function a (x) {
           return x * 2;
      }
    在预编译与执行的过程中,相当于先创建了一个存储空间为a(var a;的作用),之后将这个空间内容设置成了function函数的内容
    5. var func = function h5course () {
      alert(typeof h5course);
     }
     func();
     alert(typeof h5course);
    答:function,undefined
    函数h5course并非是创建在全局的功能函数,而是以函数字面量的形式,被赋值给了func,因此,在全局作用域的环境中,能够找到func,却不能找到h5course。
     
    6. var x = 1;
     if(function f () {}) {
       x += typeof f;
     }
     alert(x);
    答: 1undefined 当在if语句当中放置一个功能函数的时候,这个if语句是能够成立的,但是,这个函数并不会被定义。
    7. 闭包 function fun(n,o) {
          console.log(o);
          return {
          fun: function (m) {
            return fun(m,n);
          }
         };
        }
        var a = fun(0); a.fun(1); a.fun(2); a.fun(3);
        var b = fun(0).fun(1).fun(2).fun(3);
        var c = fun(0).fun(1); c.fun(2); c.fun(3);
    答:undefined 0 0 0
    undefined 0 1 2
    undefined 0 1 1
    执行fun时会返回一个函数,返回的函数中,使用了n这个变量,而n这个变量恰好是父级函数的形参,此时构成闭包,n这个变量并没有被释放,在第二次调用的时候,n使用的是第一次调用后得到的值,以此类推;
     
    8. var x = 1;
     var y = 2;
     function show () {
      var x = 3;
      return {
        x: x,
        fun: function (a, b) {
          x = a + b;
        }
       }
      }
      var obj = show();
      obj.fun(x,y);
      console.log(obj.x);
      console.log(x);
    答:3 , 1 obj所得的是show函数的返回值,即return返回的对象,在调用obj的fun后obj这个对象的x被赋值为3,最后一句console输出的x是在全局作用域中的x因此返回的值应该是全局变量x
     
    9. 闭包
    var a = 0,
      b = 0;
    function A (a) {
      A = function (b) {
        alert(a + b++);
      }
      alert(a++);
    }
    A(1);
    A(2);
    答:1,4 第一次调用A函数的时候,A函数被重新赋值为了function(b){alert(a+b++)};alert输出a后a的值加1,在初始化的A中,形参a其实是一个局部变量,当重置A函数的时候,新的A函数调用了原有A函数作用域中的局部变量a,构成了闭包,a这个局部变量被保存。
     
    10. var arr = [];
    arr[0] = 'a';
    arr[1] = 'b';
    arr.foo = 'c';
    alert(arr.length);
    arr.length += arr.foo.length;
    alert(arr.length);
    答: 2,3 数组与数组属性 arr.foo当中,foo为arr数组的一个属性,就像length一样
     
  • 相关阅读:
    \r,\n,\r\n的区别
    \r,\n,\r\n的区别
    C# TextBox 换行 滚动到最后一行
    C# TextBox 换行 滚动到最后一行
    C# Textbox 始终保持最后最后一行
    C# Textbox 始终保持最后最后一行
    踩坑之mongodb配置文件修改
    踩坑之mongodb配置文件修改
    开启mongodb 的web
    开启mongodb 的web
  • 原文地址:https://www.cnblogs.com/jialuchun/p/7269980.html
Copyright © 2020-2023  润新知