资讯专栏INFORMATION COLUMN

迷惑性的js面试题汇集

JinB / 399人阅读

摘要:一般用于删除对象的属性,删除后其结果为但其不能删除变量。条件判断为假的情况有,,,,,未定义对象。函数声明写在运算符中,其为,但放在运算符中的函数声明在执行阶段是找不到的。将赋值给相当于故其指向

1、delete的用法

    (function(x){
        delete x;
        console.log(x);
    })(1)

答案为1。delete一般用于删除对象的属性,删除后其结果为undefined;但其不能删除变量。delete如果可以删除 返回true;不能删除返回false。

2、运算符

    var x=1;
    if(function f(){}){
        x += typeof f;
    }
    console.log(x)
    
    a:"1undefined"   b:"1function"
    c:NaN            d:报错

答案为"1undefined"。条件判断为假的情况有:0,false,"",null,undefined,未定义对象。函数声明写在运算符中,其为true,但放在运算符中的函数声明在执行阶段是找不到的。另外,对未声明的变量执行typeOf不会报错,会返回undefined

3、instanceof

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

答案为"false"。a instanceof b 用于检测a是不是b的实例。如果题目f中没有return f,则答案明显为true;而在本题中new f()其返回的结果为f的函数对象,其并不是f的一个实例。

4、考眼力

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

答案为"undefined"。传递进去的参数并没有bar属性

5、this

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

答案为"undefined"。将foo.bar赋值给f,相当于f(),故其this指向window

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91665.html

相关文章

  • php面试 汇集2

    摘要:用打印出前一天的时间格式是的区别和不是一个函数,是一个语言结构只有一个参数可以输出多个参数,返回和只能打印出,不能打印出结构能打印出结构比如加粗文字 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21 echo date(Y-m-d H:i:s,time()-60*60*24); $a = date(Y-m-d H:i:s, strtotime(-1 day));...

    BlackFlagBin 评论0 收藏0
  • php面试 汇集1

    摘要:删除数组的最后一个元素输出删除的最后一个元素输出扩展名切割字符串函数查找字符串在另一字符串中最后一次出现的位置。 一. 写出如下程序的输出结果 参考试题出处1.基础 正确答案:相等 相等 不相等 注:== 表示值相等 ===表示值与类型都必须一样 原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uch...

    taowen 评论0 收藏0
  • 一道JavaScript面试:理解Function

    摘要:关于该问题的讨论今天看到的一道面试题,感觉对理解的以及原型链和闭包很有帮助。自己并试着讲述一下自己的理解,欢迎拍砖。进入上下文时,会获取,函数声明,变量声明。 2017.3.27更新今天在刷题的时候,突然发现之前已经有人在讨论这道题了,而且还涉及到了运算符优先级的问题,这是自己一开始没有想到的。(其实有人也说:程序写多了,自然记住了什么情况下会发生什么样的事情,但是为什么会发生这样的事...

    UsherChen 评论0 收藏0
  • 深入理解 js 声明提升( 尾部有总结 和 面试解析 )

    摘要:要理解函数的提升行为,让我们先解析什么是的提升。也就是说声明提升了,赋值还留着原地,等待执行。声明被提升,而包括函数表达式的赋值在内的赋值操作并不会提升,而是留在原地等待执行。 javaScript自上而下执行的顺序受到很多新手和部分老手的共识,但是这其实并不完全正确,这涉及到js的编译过程,这方面我们稍后会聊到,先考虑下面代码: window.onload = function(){...

    curlyCheng 评论0 收藏0

发表评论

0条评论

JinB

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<