美文网首页Web前端之路WEB前端程序开发web前端
web前端面试题-JavaScript篇(持续更新...)

web前端面试题-JavaScript篇(持续更新...)

作者: 终身成长人格 | 来源:发表于2019-11-07 11:30 被阅读0次

    1,介绍js的基本数据类型。

    Undefined、Null、Boolean、Number、String

    2,介绍js有哪些内置对象?

    Object 是 JavaScript 中所有对象的父对象

    数据封装类对象:Object、Array、Boolean、Number 和 String

    其他对象:Function、Arguments、Math、Date、RegExp、Error

    3,说几条写JavaScript的基本规范?,

    1.不要在同一行声明多个变量。

    2.请使用 ===/!==来比较true/false或者数值

    3.使用对象字面量替代new Array这种形式

    4.不要使用全局函数。

    5.Switch语句必须带有default分支

    6.函数不应该有时候有返回值,有时候没有返回值。

    7.For循环必须使用大括号

    8.If语句必须使用大括号

    9.for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。

    4,JavaScript原型,原型链 ? 有什么特点?

    每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,

    如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,

    于是就这样一直找下去,也就是我们平时所说的原型链的概念。

    关系:instance.constructor.prototype = instance.__proto__

    特点:

    JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。

    当我们需要一个属性的时,Javascript引擎会先看当前对象中是否有这个属性, 如果没有的话,

    就会查找他的Prototype对象是否有这个属性,如此递推下去,一直检索到 Object 内建对象。

    function Func(){}

    Func.prototype.name = "Sean";

    Func.prototype.getInfo = function() {      return this.name;}

    var person = new Func();

    //现在可以参考

    var person = Object.create(oldObject);

    console.log(person.getInfo());

    //它拥有了Func的属性和方法//"Sean"console.log(Func.prototype);

    // Func { name="Sean", getInfo=function()}

    5,JavaScript有几种类型的值?,你能画一下他们的内存图吗?

    栈:原始数据类型(Undefined,Null,Boolean,Number、String)

    堆:引用数据类型(对象、数组和函数)

    两种类型的区别是:存储位置不同;

    原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;

    引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其

    在栈中的地址,取得地址后从堆中获得实体

    6,Javascript如何实现继承?

    1、构造继承

    2、原型继承

    3、实例继承

    4、拷贝继承

    原型prototype机制或apply和call方法去实现较简单,建议使用构造函数与原型混合方式。

      function Parent(){  this.name = 'wang';  }  function Child(){  this.age = 28;  }  Child.prototype = new Parent();//继承了Parent,通过原型  var demo = new Child();  alert(demo.age);  alert(demo.name);//得到被继承的属性

    7,Javascript作用链域?

    作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。

    8,谈谈This对象的理解。

    this总是指向函数的直接调用者(而非间接调用者);

    如果有new关键字,this指向new出来的那个对象;

    在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window;

    this就是指的是当前对象

    9,null,undefined 的区别?

    null 表示一个对象被定义了,值为“空值”;

    undefined 表示不存在这个值。

    typeof undefined //"undefined"

    undefined :是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但是还没有定义。当尝试读取时会返回 undefined;

    例如变量被声明了,但没有赋值时,就等于undefined

    typeof null //"object"

    null : 是一个对象(空对象, 没有任何属性和方法);

    例如作为函数的参数,表示该函数的参数不是对象;

    注意:

    在验证null时,一定要使用 === ,因为 == 无法分别 null 和 undefined

    undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:

    (1)变量被声明了,但没有赋值时,就等于undefined。

    (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。

    (3)对象没有赋值的属性,该属性的值为undefined。

    (4)函数没有返回值时,默认返回undefined。

    null表示"没有对象",即该处不应该有值。典型用法是:

     (1) 作为函数的参数,表示该函数的参数不是对象。

     (2) 作为对象原型链的终点。

    10,["1", "2", "3"].map(parseInt) 答案是多少?

    [1, NaN, NaN] 因为 parseInt 需要两个参数 (val, radix),

    其中 radix 表示解析时用的基数。

    map 传了 3 个 (element, index, array),对应的 radix 不合法导致解析失败。

    相关文章

      网友评论

        本文标题:web前端面试题-JavaScript篇(持续更新...)

        本文链接:https://www.haomeiwen.com/subject/xqgmbctx.html