1. 程式人生 > >Yushi前端筆試題【一期】

Yushi前端筆試題【一期】

1、描述以下6種錯誤型別

Syntaxerror

語法錯誤。

常見:1、變數名不符合規範;2、給關鍵字賦值。


ReferenceError

引用錯誤,要用的變數沒找到。

常見:1、引用了不存在的變數;2、給一個無法被賦值的物件賦值。


TypeError

型別錯誤。

常見:1、呼叫不存在的方法;2、new關鍵字後接基本型別。


RangeError

範圍錯誤,引數超範圍。

常見:1、陣列長度為負數;2、Number物件的方法引數超出範圍。


EvalError

非法呼叫 eval( ) 。

在ES5以下的JavaScript中,當eval()函式沒有被正確執行時,會丟擲evalError錯誤。


URIError

URI不合法。

URI相關引數不正確時丟擲的錯誤,主要涉及encodeURI、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()六個函式。

 

2、兩種export 方式

export default const a = 1

const a = 1

export default a

為什麼前者這樣無效,而後者卻可以?

請給出正確的匯出方法及其對應的匯入方法。

原因:

export default命令的本質是將後面的值,賦給default變數,所以可以直接將一個值寫在export default之後,而不能跟變數宣告語句。

正確寫法一:

export var a = 1

// 對應匯入寫法:

import { a } from xxx

正確寫法二:

var a = 1

export default a

// 對應匯入寫法:

import a from xxx

 

3、補全下方css程式碼實現水平垂直居中

.center {

            width: 400px;

            height: 400px;

            background: #0f0;

            /* todo... */

           position: absolute;

           top: 50%;

           left: 50%;

           margin-top: -200px;

           margin-left: -200px;

}       

 

4、手寫indexOf

 myIndexOf('hello yushi','world')

// 輸出: -1

myIndexOf('hello yushi','yushi')

// 輸出: 6

function myIndexOf(str, val) {

        // todo...

        var strLen = str.length, valLen = val.length

        for (var i = 0; i < strLen; i++) {

            var matchLen = i + valLen

            var matchStr = str.slice(i, matchLen)

            if (matchLen > strLen) {

                return -1

            }

            if (matchStr === val) {

                return i

            }

        }

        return -1

    }