面试题

1. 输出下列结果

console.log([+!+[]]+[+[]]); // 10 
console.log((!+[]+[]+![]).length);  // 9
console.log(!+[]+[]+![]); // truefalse
console.log(!+[]);  // true
console.log(+[]);   // 0

!用法解释:

eg: eg: eg:
!null=true !''=true !100=false
!undefined=true !'abc'=false

2. (云书)输出下列结果

  var aa={key:1};
  var bb=aa;
  aa.x=aa={key:2};
  console.log(aa.x);//undefined
  console.log(aa);//{key:2}
  console.log(bb);//{key:1,x:{key:2}}
  console.log(bb.x);//{key:2}

3. (第一秒)输出以下结果

  var obj = {
      a : 1,
      b : function(){
          console.log(this.a);
          console.log(a);
      }
  }    
   var a = 2;
    obj.b();      // 1 2
    b();     //  报错,Uncaught ReferenceError: b is not defined

4. 输出以下结果

    var foo = "Hello";
    (function(){
        var bar = "World";
        console.log(foo + bar);
    })(); 
    console.log(foo + bar);
    // 运行结果:HelloWorld     Uncaught ReferenceError: bar is not defined

5. 输出以下结果

    for(var i=1;i<=3;i++){
        setTimeout(function(){
            console.log(i)
        },0);
    }
    // 4 4 4    循环不会等待定时器执行,所以for循环先执行完成后,此时 i=4,定时器再输出就是三个4
    
    // 闭包方式解决输出 1 2 3 ,因为闭包会把变量保存起来
    for(var i=1;i<=3;i++){
        (function(i){
            setTimeout(function(){
                console.log(i)
            },0)
        })(i);
    }
    // 1 2 3

6. 输入两个字符串 从第一个字符串中删除第二个字符串中的所有字符串

  var str1='hello chinachinachina';
  var str2='ina';
  //var reg=/ina/g;//字面量方式定义正则
  var reg=new RegExp(str2,'g');
  console.log(str1.replace(reg,''));  // hello chchch

7. 这样一个数组 var arr=[a,bc,d,d,e,a,b,f,g] 进行数组去重

  var arr=['a','bc','d','d','e','a','bc','f','g','d','e','a'];
  arr.reverse();
  var reg=/(\w+)[^\1]*\1/;
  while(reg.test(str)){
      str=str.replace(RegExp.$1,'');
      console.log(str);
  }
  arr=str.split('').reverse();
  alert(arr);//a,c,b,d,e,f,g    cb拆开了,这种方法只适合单个字母去重

8. 看下面代码输出什么

    console.log(undefined == null); // true
    console.log(1 == true);     // true
    console.log(2 == true);     // false      true会变成1,1和2当然不相等
    console.log(0 == false);    // true
    console.log(0 == '');       // true
    console.log(NaN == NaN);    // false
    console.log([] == false);   // true
    console.log([] == ![]);     // true
    console.log("11"+2+"1");    // 1121
    console.log("11"+2-"1");    // 111       后面的减号有隐式转换的作用
    console.log([]==[]);        // false
    console.log([]=={});        // false
    console.log([]==![]);       // true
    console.log(typeof []);     // object
    console.log(typeof ![]);    // boolean
    console.log(![]);           // false
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容