智一面为您提供模拟练习题:

高级前端工程师    http://www.gtalent.cn/exam/interview?token=76f1af731aa16cfd9addb763891fb73e
中级前端工程师 http://www.gtalent.cn/exam/interview?token=05fc891d3a7b4f3a89520d6b789da38b
初级前端工程师 http://www.gtalent.cn/exam/interview?token=77be195b15052213bd1452130fbd7b64
前端实习生 http://www.gtalent.cn/exam/interview?token=e0a66129f7665f61d1d8bf17bcc5ccb5

说几条写JavaScript的基本规范?

(1)不要在同一行声明多个变量

(2)如果你不知道数组的长度,使用 push

(3)请使用 ===/!== 来比较 true/false 或者数值

(4)对字符串使用单引号 ''(因为大多时候我们的字符串。特别html会出现")

(5)使用对象字面量替代 new Array 这种形式

(6)绝对不要在一个非函数块里声明一个函数,把那个函数赋给一个变量。浏览器允许你这么做,但是它们解析不同

(7)不要使用全局函数

(8)总是使用 var 来声明变量,如果不这么做将导致产生全局变量,我们要避免污染全局命名空间

(9)Switch 语句必须带有 default 分支

(10)使用 /**...*/ 进行多行注释,包括描述,指定类型以及参数值和返回值

(11)函数不应该有时候有返回值,有时候没有返回值

(12)语句结束一定要加分号

(13)for 循环必须使用大括号

(14)if 语句必须使用大括号

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

(16)避免单个字符名,让你的变量名有描述意义

(17)当命名对象、函数和实例时使用驼峰命名规则

(18)给对象原型分配方法,而不是用一个新的对象覆盖原型,覆盖原型会使继承出现问题

(19)当给事件附加数据时,传入一个哈希而不是原始值,这可以让后面的贡献者加入更多数据到事件数据里,而不用找出并更新那个事件的事件处理器

javaScript有几种类型值?

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

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

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

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

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

Javascript如何实现继承?

(1)构造继承

(2)原型继承

(3)实例继承

(4)拷贝继承

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

如何创建一个对象?

javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON;但写法有很多种,也能混合使用。

(1)对象字面量的方式

person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};

(2)用function来模拟无参的构造函数

function Person(){}

var person = new Person(); 

//定义一个function,如果使用new"实例化",该function可以看作是一个Class

person.name = "Xiaosong";

person.age = "23";

person.work = function() {
  alert("Hello " + person.name);

}

person.work();

(3)用function来模拟参构造函数来实现

function Person(name,age,hobby) {
  this.name = name;

 //this作用域:当前对象

  this.age = age;

  this.work = work;

  this.info = function() {
      alert("我叫" + this.name + ",今年" + this.age + "岁,是个" + this.work);

  }

}

var Xiaosong = new Person("WooKong",23,"程序猿"); 

//实例化、创建对象

Xiaosong.info(); 

//调用info()方法

(4)用工厂方式来创建(内置对象)

var jsCreater = new Object();

jsCreater.name = "Brendan Eich"; 

//JavaScript的发明者

jsCreater.work = "JavaScript";

jsCreater.info = function() {
  alert("我是"+this.work+"的发明者"+this.name);

}

jsCreater.info();

(5)用原型方式来创建

function Standard(){}

Standard.prototype.name = "ECMAScript";

Standard.prototype.event = function() {
  alert(this.name+"是脚本语言标准规范");

}

var jiaoben = new Standard();

jiaoben.event();

(6)用混合方式来创建

function iPhone(name,event) {
  this.name = name;

  this.event = event;

}

iPhone.prototype.sell = function() {
  alert("我是"+this.name+",我是iPhone5s的"+this.event+"~ haha!");

}

var SE = new iPhone("iPhone SE","官方翻新机");

SE.sell();

 

智一面|热门IT岗面试题集锦