1. 在下列Promise所提供的方法中,用來向成功或者失敗的回調函數隊列中添加回調函數的是( ) then 接收兩個回調函數並返回一個新的 promise 對象,這兩個回調函數分別對應成功回調 onFullfilled 和失敗回調 onRejected,這兩個回調函數接收 promise 的返回值 ...
1. 在下列Promise所提供的方法中,用來向成功或者失敗的回調函數隊列中添加回調函數的是( )
then
接收兩個回調函數並返回一個新的 promise
對象,這兩個回調函數分別對應成功回調 onFullfilled
和失敗回調 onRejected
,這兩個回調函數接收 promise
的返回值;
always (finally)
接收一個回調函數並返回一個新的 promise
對象,回調函數在上一個 promise
解析完成之後調用,也就是不管前面是 then
還是 catch
被調用了,它都會被調用,該回調函數不會接收參數。
2.要求匹配以下16進位顏色值,正則表達式可以為:
#ffbbad
#Fc01DF
#FFF
#ffE
匹配16
進位的顏色值:格式為 # + 3
位數字或字母 或 6
位數字或字母
/^#([\da-fA-F]{3}|[\da-fA-F]{6})$/g
也可以寫成
/#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g
3.typeof []
返回值為
typeof
只能檢測數據類型,而不能檢測從數據類型中派生的其他類型,數組為object
派生對象,所以依然返回object
function fn(){
console.log(1);
}
console.log(typeof []);//object
console.log(typeof '[]');//string
console.log(typeof 1);//number
console.log(typeof true);//boolean
console.log(typeof null);//object
console.log(typeof undefined);//undefined
console.log(typeof {id:2});//object
console.log(typeof fn);//function
4.下列代碼中,頁面打開後能夠彈出1的是?
<iframe src="javascript: alert(1)"></iframe>
載入頁面的時候觸發;
<img src="" onerror="alert(1)"/>
onerror
事件 當圖片不存在時,將觸發
IE下的<s style="top:expression(alert(1))"></s>
在ie 7
下會連續彈出, IE5
及其以後版本支持在CSS
中使用expression
,用來把CSS
屬性和Javascript
表達式關聯起來,這裡的CSS
屬性可以是元素固有的屬性,也可以是自定義屬性。就是說CSS
屬性後面可以是一段Javascript
表達式,CSS
屬性的值等於Javascript
表達式計算的結果。 在表達式中可以直接引用元素自身的屬性和方法,也可以使用其他瀏覽器對象。這個表達式就好像是在這個元素的一個成員函數中一樣。
5.下麵哪一個是JavaScript 中array的正確用法?
//創建 Array 對象的語法
var arr=[1,2,3];
var arr=new Array(1,2,3);
var arr=new Array(12); //如果只有一個數,代表數組的length是12個
var arr=new Array(0); //清空數組
6.JS中slice()
方法
該方法選取數組的的一部分,並返回一個新數組,切片,切選好的一塊,如果不寫內容,相當於複製。
學習鏈接:JS之slice() 方法
7.exec()
方法
var str1=new RegExp("e");
document.write(str1.exec("hello"));
exec()
方法用於檢索字元串中的正則表達式的匹配。返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null。
"e".exec("hello")
中,"e"是正則表達式,"hello"是檢索的字元串。在"hello"字元串中,能夠匹配到"e"。因此document.write("e");
最後結果為e。- RegExp是個對象,用於存儲設置的字元串。
8.輸出結果是?
(function() {
var x=foo();
var foo=function foo() {
return "foobar"
};
return x;
})();
解析
var x = foo();
var foo=function foo() {...}
語句中變數的聲明會提升,但是定義不會提升。以上代碼等同於:
var foo;
var x = foo();
foo = function foo() {...}
當執行到 x = foo() 時,由於foo未被定義為函數,所以會返回
TypeError: foo is not a function
9.以下正則表達式滿足regexp.test('abc') === true?
/^abc$/
^a表示以a開頭,c$表示以c結尾,中間再夾個b/[ab]{2}[^defgh]/
[ab]
表示a或b{2}
表示長度為2[^defgh]
表示非defgh
的字元,所以可匹配的有,aac,bbc,abc,abcd
等/[defgh]*/
"*"
表示0或者多個字元,這裡可匹配空,或者括弧內任意字元/..(?=.)/
(?=pattern)
代表字元串中的一個位置,緊接該位置之後的字元序列能夠匹配pattern。
例如對”a regular expression”這個字元串,要想匹配regular中的re,但不能匹配expression中的re,可以用”re(?=gular)”,該表達式限定了re右邊的位置,這個位置之後是gular,但並不消耗gular這些字元,將表達式改為”re(?=gular).”,將會匹配reg,元字元.匹配了g,括弧這一砣匹配了e和g之間的位置。
.匹配除“\n”和"\r"之外的任何單個字元。要匹配包括“\n”和"\r"在內的任何字元,請使用像“[\s\S]”的模式。
所以說在這裡/...(?=.)/匹配的是:
前面任意三個字元,但是後面必須跟一個任意字元(除了\n和\r)。
但是題目給出來的字元串只有三個字元,該正則表達式至少要四個字元。