- A+
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"在内的任何字符,请使用像“[sS]”的模式。
所以说在这里/...(?=.)/匹配的是:
前面任意三个字符,但是后面必须跟一个任意字符(除了n和r)。
但是题目给出来的字符串只有三个字符,该正则表达式至少要四个字符。