web前端面试题JavaScript篇持续更新

19次阅读

共计 2523 个字符,预计需要花费 7 分钟才能阅读完成。

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 不合法导致解析失败。

正文完
 0