教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

傳智播客整理的web前端JavaScript面試試題(附答案)

更新時間:2018年11月26日13時43分 來源:傳智播客 瀏覽次數:

傳智播客整理的web前端JavaScript面試試題(附答案)

javascript面試指南

1.介紹js的基本數據類型

Undefined、Null、Boolean、Number、String、ECMAScript 2015 新增:Symbol(創(chuàng)建后獨一無二且不可變的數據類型 )

2.介紹js有哪些內置對象?

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

數據封裝類對象:Object、Array、Boolean、Number 和 String

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

3.說幾條寫JavaScript的基本規(guī)范?

(1)不要在同一行聲明多個變量。

(2)請使用 ===/!==來比較true/false或者數值

(3)使用對象字面量替代new Array這種形式

(4)不要使用全局函數。

(5)Switch語句必須帶有default分支

(6)函數不應該有時候有返回值,有時候沒有返回值。

(7)For循環(huán)必須使用大括號

(8)If語句必須使用大括號

(9)for-in循環(huán)中的變量 應該使用var關鍵字明確限定作用域,從而避免作用域污染。

4.JavaScript原型.原型鏈 ? 有什么特點?

每個對象都會在其內部初始化一個屬性,就是prototype(原型),當我們訪問一個對象的屬性時,

如果這個對象內部不存在這個屬性,那么他就會去prototype里找這個屬性,這個prototype又會有自己的prototype,

于是就這樣一直找下去,也就是我們平時所說的原型鏈的概念。

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

特點:

JavaScript對象是通過引用來傳遞的,我們創(chuàng)建的每個新對象實體中并沒有一份屬于自己的原型副本。當我們修改原型時,與之相關的對象也會繼承這一改變。

當我們需要一個屬性的時,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)

堆:引用數據類型(對象、數組和函數)

兩種類型的區(qū)別是:存儲位置不同;

原始數據類型直接存儲在棧(stack)中的簡單數據段,占據空間小、大小固定,屬于被頻繁使用數據,所以放入棧中存儲;

引用數據類型存儲在堆(heap)中的對象,占據空間大、大小不固定。如果存儲在棧中,將會影響程序運行的性能;引用數據類型在棧中存儲了指針,該指針指向堆中該實體的起始地址。當解釋器尋找引用值時,會首先檢索其在棧中的地址,取得地址后從堆中獲得實體。

如何將字符串轉化為數字,例如'12.3b'?

* parseFloat('12.3b');

* 正則表達式,'12.3b'.match(/(\d)+(\.)?(\d)+/g)[0] * 1, 但是這個不太靠譜,提供一種思路而已。

如何將浮點數點左邊的數每三位添加一個逗號,如12000000.11轉化為『12,000,000.11』?

function commafy(num){

return num && num

.toString()

.replace(/(\d)(?=(\d{3})+\.)/g, function($1, $2){

return $2 + ',';

});

}

如何實現數組的隨機排序?

方法一:

```javascript   var arr = [1,2,3,4,5,6,7,8,9,10];

function randSort1(arr){

for(var i = 0,len = arr.length;i < len; i++ ){

var rand = parseInt(Math.random()*len);

var temp = arr[rand];

arr[rand] = arr[i];

arr[i] = temp;

}

return arr;

}

console.log(randSort1(arr));

```

方法二:

```javascript

var arr = [1,2,3,4,5,6,7,8,9,10];

function randSort2(arr){

var mixedArray = [];

while(arr.length > 0){

var randomIndex = parseInt(Math.random()*arr.length);

mixedArray.push(arr[randomIndex]);

arr.splice(randomIndex, 1);

}

return mixedArray;

}

console.log(randSort2(arr));

```

方法三:

```javascript

var arr = [1,2,3,4,5,6,7,8,9,10];

arr.sort(function(){

return Math.random() - 0.5;

})

console.log(arr);

```


Javascript如何實現繼承?

1、構造繼承

2、原型繼承

3、實例繼承

4、拷貝繼承

原型prototype機制或apply和call方法去實現較簡單,建議使用構造函數與原型混合方式。

```javascript

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);//得到被繼承的屬性

```

上面是傳智播客整理的關于web前端面試試題部分,希望可以幫到你。

0 分享到:
和我們在線交談!