资讯专栏INFORMATION COLUMN

面试--js常见面试题

yacheng / 3103人阅读

摘要:可以由构造函数来访问到每个对象的属性指向自身构造函数的属性是原型对象的属性,指向这个原型对象所对应的构造函数。

引用文字

1、delete

delete不可以删除变量 只可以删除变量上的属性

2、有名函数被赋值为一个变量

再访问这个 名(有名函数的名)就会报错

  var f=function g() {
        return 1
    }
    console(g())

会报错 g没有被定义

3、函数的this指向谁 决定于是谁在调用它
var foo={
       baz:1,
         bar:function () {
             return this.baz;
         }
     };
     (function () {
            console.log(typeof arguments[0]()) //undefined
     })(foo.bar)
4、分组选择符() 值是括号里边的最后一个
 var a=(1,3,4);
     console.log(a)  //4
5、new一个构造函数 会执行的操作

一个没有返回值的函数在new进行构造调用以后 会返回一个如下所说的对象

                普通调用这个函数  则没有返回值
      
  var foo=function () {
      console.log(11)
  }
  var foo1=new foo();
  var foo2=foo();
  console.log(foo1,foo2)  //foo  undefined

在使用new 对构造函数进行调用的时候 会发生如下几件事情

(1)首先会生成一个空对象
(2)将新建对象的this指针指到新建的对象上
(3)如果构造函数没有返回值 让这个对象的原型指向构造函数的prototype

 如果真个个对象有返回值   让这个对象指向了返回的对象

所以尽量不要在构造函数中返回什么东西

6、函数的形参和是实参的个数

函数.length 可以得到函数的形参的个数
函数中arguments.length可以得到函数实际参数的个数

7、变量的查找是就近原则

去寻找var 定义的变量 当就近没有找到的话 就会查找外层
同时变量声明的过程是 var a=2; 1、变量声明提前 2、再赋值

 var a=10;
   function foo() {
       console.log(a);
       var a=20;
   }
   foo();  //undefined

以上代码和下面的代码是等价的

  var a=10;
   function foo() {
       var a;
       console.log(a);
       a=20;
   }
   foo();  //undefined
8、js中参数传递
普通类型是值传递   引用类型是地址传递    

普通类型 相当于将实参赋值给了形参 实参没有任何的改变

  var a=10;
function foo(a) {
    a+=10;
}
foo(a);
console.log(a)  //10

引用类型 将实参的引用类型的地址 赋值给形参

  var a=[1,3,4,5,6];
function foo(a) {
   a.push(1,3)
}
foo(a);
console.log(a)  //[1, 3, 4, 5, 6, 1, 3]
9 利用正则表达式的子项 和字符串的replace 函数的第二个参数为函数的功能

实现将中画线的字符串 转化为驼峰式命名的字符串

   function aa(str) {
       var partten=/-(w)/g;
       return str.replace(partten,function ($0,$1) {
           console.log($0,$1)
           //会输出  -c  c  和-s   s
           return $1.toUpperCase()
       })
   }
    console.log(aa("background-color-style"))
10 用递归来代替循环

不使用循环 创建数组

  function test(n) {
       var arr=[];
       return (function () {
           arr.unshift(n);
           n--;
           if(n!=0){
               arguments.callee()
           }
           return arr;
       })()
   }
   console.log(test(5))

用str的replace 来实现循环

  function test(n) {
       var arr=[];
       arr.length=n+1;
       var str="";
       str=arr.join("a");
       var arr2=[];
       str.replace(/a/g,function () {
           arr2.unshift(n--)
       })
       return arr2;
   }
   console.log(test(5))  //[1,2,3,4,5]
11 利用三目运算 switch 来代替if else 12 原型链 对象 构造函数的关系

原型:构造函数在创建的过程中,系统自动创建出来与构造函数相关联的一个空的对象。可以由构造函数.prototype来访问到
每个对象的__proto__属性指向自身构造函数的prototype;
constructor属性是原型对象的属性,指向这个原型对象所对应的构造函数。
每一个原型对象都有consrtructor属性
原型链:每一个对象都有自己的原型对象,原型对象本身也是对象,原型对象也有自己的原型对象,这样就形成了一个链式结构,叫做原型链。
例如:p对象----->Person.prototype------->Object.prototype--------->null 构成原型链

13、DOM事件的绑定机制。

element.onclick
W3C下使用element.addEveneListener("click",function(),false[在冒泡阶段执行函数])
IE下 使用element.attachEvent("click",function(){}) 这个函数中的this指向的是window而不是element

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

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

相关文章

  • 面试题—css实现垂直水平居中

    摘要:常见面试题实现垂直水平居中前言面试中常常被问到,如何使用来实现一个元素的垂直水平方向上居中,特别是笔试题的时候,这道题目的出现频率还是比较高的,当然,在我们的生活中,也常常会有垂直水平居中的需求。 常见面试题—css实现垂直水平居中 前言 面试中常常被问到,如何使用css来实现一个元素的垂直水平方向上居中,特别是笔试题的时候,这道题目的出现频率还是比较高的,当然,在我们的生活中,也常常...

    gougoujiang 评论0 收藏0
  • 前端面试题总结

    摘要:个人总结的一些常见面试题欢迎各位同时非常欢迎贡献问题一起来完善不定期更新常见前端面试题总结 个人总结的一些常见面试题,欢迎各位star,issues,同时非常欢迎贡献问题!一起来完善.不定期更新常见前端面试题总结

    ingood 评论0 收藏0
  • 70 个 Spring 最面试题,Java 晋升必会

    摘要:容器自动完成装载,默认的方式是这部分重点在常用模块的使用以及的底层实现原理。 对于那些想面试高级 Java 岗位的同学来说,除了算法属于比较「天方夜谭」的题目外,剩下针对实际工作的题目就属于真正的本事了,热门技术的细节和难点成为了主要考察的内容。 这里说「天方夜谭」并不是说算法没用,不切实际,而是想说算法平时其实很少用到,甚至面试官都对自己出的算法题一知半解。 这里总结打磨了 70 道...

    Ashin 评论0 收藏0
  • python开发-面试

    摘要:今天总结一下中常见的面试题与的区别比较变量内存地址和值是否相等,仅仅比较变量的值是否相等需要注意当变量的值较小时时,的值是,这是由于定义变量时底层的实现决定的,例如小整数对象池两个变量的值就会相同,导致的值为。 今天总结一下python中常见的面试题: 1.is与==的区别is比较变量内存地址和值是否相等,==仅仅比较变量的值是否相等需要注意:当变量的值较小时(a=1, b=1时,a ...

    FingerLiu 评论0 收藏0
  • 2019年Android开发者面试题(一)

    摘要:内部类的作用成员内部类成员内部类可以无条件访问外部类的所有成员属性和成员方法包括成员和静态成员。匿名内部类匿名内部类就是没有名字的内部类静态内部类指被声明为的内部类,他可以不依赖内部类而实例,而通常的内部类需要实例化外部类,从而实例化。 大部分开发者进入公司,一个必备的环节就是面试,只有通过面试,才能知道求职者是否符合公司的要求,也只有通过面试,求职者才能有幸进入到企业里工作,那么怎么...

    JiaXinYi 评论0 收藏0

发表评论

0条评论

yacheng

|高级讲师

TA的文章

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