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
}